Ⅰ 今天android面试遇到这样一个问答题 求解 一个apk文件有哪几部分 各个部分的作用是什么
APK
是Android Package的缩写,即Android application package文件或Android安装包。每个要安装到Android平台的应用都要被编译打包为一个单独的文件,扩展名为 .apk。
APK
文件是用专业软件eclipse编译生成的文件包,其中包含了应用的二进制代码、资源、配置文件等。通过将APK文件直接传到Android手机中执行即可安装。APK文件其实就是zip格式,其扩展名被改为apk,在Windows下用解压软件WinRAR/WinZIP/7-Zip可以直接打开。解压后,你会看到有几个文件和文件夹。一个典型的APK文件通常有下列内容组成:
AndroidManifest.xml 程序全局配置文件
classes.dex Dalvik字节码
resources.arsc 编译后的二进制资源文件
META-INF\ 该目录下存放的是签名信息
res\ 该目录存放资源文件
assets\ 该目录可以存放一些配置文件
下面对这些文件和目录做些基本的注释和介绍:
• AndroidManifest.xml
该文件是每个apk应用程序都必须包含的文件,它描述了应用程序的名字、版本、权限、引用的库文件等等信息。
• classes.dex文件
classes.dex是java源码编译后生成的java字节码文件。dex是Dalvik VM executes的全称即
Android Dalvik执行程序。利用解析工具可以将其转换成java来加以阅读和理解。
• resources.arsc
编译后的二进制资源文件。在做主题美化时要常与这个文件打交
道。
• META-INF目录
META-INF目录下存放的是签名信息,有三个签名文件,用来保证apk包的完整性和系统的全。在eclipse编译生成一个apk包时,会对所要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。这就保证了apk包里的文件不能被随意替换。比如拿到一个apk包后,如果想要替换里面的一幅图片,一段代码,或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给感染和恶意修改增加了难度,有助于保护系统的安全。
•res目录
res目录存放资源文件。包括图片,字符串等等。
res下有若干个子目录,主要为drawable,layout,xml。
• assets目录
assets目录可以存放一些配置文件,这些文件的内容在程序运行过程中可以通过相关的API获得。
Ⅱ Android一小面试题求解
4.onStop() 只是使activity处于停止状态,比如从activityA 跳到activityB,这时候A处于 onStop()
正常的结束activity的方法
特殊情况时退出方法,可使用重写application的方式屏蔽掉错误提示对话框,实现退出效果
java的结束进程的方法,也可以用来结束当前activity
Ⅲ Android的考试题,在线等挺急
1.A 2.A 3.A 4.A 5.D 6.A 7.C 8.B 9.C 10.D
1.T 2.F 3.T 4.F 5.T 6.F 7.F 8.T 9.T 10.T
Ⅳ android编程题,图中有一个按纽,功能是点击按钮后,通过Toast显示自己的名字。试编程实现该功能。
//复制到onCreate下面,这个是没有写布局xml的,如果需要可以自己写布局然后button用find去获取,当前这个是整个avtivity就是一个button
Buttonb=newButton(this);
b.setText("name");
b.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
Toast.makeText(MainActivity.this,"XXX",Toast.LENGTH_LONG).show();
}
});
setContentView(b);
Ⅳ android的一道笔试题,activity对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行
我也觉得楼主是对的,因为从star->creat->resume,然后再是用户在页面的操作,若要保存用户操作后的数据的话,就得等用户打开其他activity时,再来保存之前activity里的东西,so,选A。
Ⅵ android的一道笔试题,activity对一些资源以及状态的操作保存,最好是保存在生命周期的哪
摘要 onPause:
Ⅶ android 面试,算法题。
final int size = data.length;
for(int i = 0; i< size; i++){
if(data[i] == 0xffffffff)
data[i] = 0x80ffffff;
}
不知道你是不是这个意思。
Ⅷ android数据库编程(有关于选择题编写)
你以前是不是问过这个问题?怎么感觉这么熟悉呢。。。至于存储的话,你可以用exl或者干脆txt文档读取的模式存入数据库,也就是所谓的数据批量导入,这个不难吧?
Ⅸ android 面试题
1、前言
6 月 26 日, Google Android 发布了 NDK ,引起了很多发人员的兴趣。 NDK 全
称: Native Development Kit 。下载地址为:
http://developer.android.com/sdk/ndk/1.5_r1/index.html 。
2、误解
新出生的事物,除了惊喜外,也会给我们带来一定的迷惑、误解。
2.1、误解一: NDK 发布之前, Android 不支持进行 C 开发
在 Google 中搜索 “NDK” ,很多 “Android 终于可以使用 C++ 开发 ” 之类
的标题,这是一种对 Android 平台编程方式的误解。其实, Android 平台从诞生起,就已
经支持 C 、 C++ 开发。众所周知, Android 的 SDK 基于 Java 实现, 这意味着基于 Android
SDK 进行开发的第三方应用都必须使用 Java 语言。但这并不等同于 “ 第三方应用只能使
用 Java” 。在 Android SDK 首次发布时, Google 就宣称其虚拟机 Dalvik 支持 JNI 编程
方式,也就是第三方应用完全可以通过 JNI 调用自己的 C 动态库,即在 Android 平台上,
“Java+C” 的编程方式是一直都可以实现的。
当然这种误解的产生是有根源的:在 Android SDK 文档里,找不到任何 JNI 方面的
帮助。即使第三方应用开发者使用 JNI 完成了自己的 C 动态链接库( so )开发,但是 so
如何和应用程序一起打包成 apk 并发布?这里面也存在技术障碍。我曾经花了不少时间,
安装交叉编译器创建 so ,并通过 asset (资源)方式,实现捆绑 so 发布。但这种方式只
能属于取巧的方式,并非官方支持。所以,在 NDK 出来之前,我们将 “Java+C” 的开发
模式称之为灰色模式,即官方既不声明 “ 支持这种方式 ” ,也不声明 “ 不支持这种方
式 ” 。
2.2、误解二:有了 NDK ,我们可以使用纯 C 开发 Android 应用
Android SDK 采用 Java 语言发布,把众多的 C 开发人员排除在第三方应用开发外
( 注意:我们所有讨论都是基于“ 第三方应用开发 ” , Android 系统基于 Linux ,系
统级别的开发肯定是支持 C 语言的。 )。 NDK 的发布,许多人会误以为,类似于 Symbian 、
WM ,在 Android 平台上终于可以使用纯 C 、 C++ 开发第三方应用了!其实不然, NDK
文档明确说明: it is not a good way 。因为 NDK 并没有提供各种系统事件处理支持,也没
有提供应用程序生命周期维护。此外,在本次发布的 NDK 中,应用程序 UI 方面的 API 也
没有提供。至少目前来说,使用纯 C 、 C++ 开发一个完整应用的条件还不完备。
3、NDK 是什么
对 NDK 进行了粗略的研究后,我对 “NDK 是什么 ” 的理解如下:
1、NDK 是一系列工具的集合。
NDK 提供了一系列的工具,帮助开发者快速开发 C (或 C++ )的动态库,并能自动
将 so 和 java 应用一起打包成 apk 。这些工具对开发者的帮助是巨大的。
NDK 集成了交叉编译器,并提供了相应的 mk 文件隔离 CPU 、平台、 ABI 等差异,
开发人员只需要简单修改 mk 文件(指出 “ 哪些文件需要编译 ” 、 “ 编译特性要求 ”
等),就可以创建出 so 。
NDK 可以自动地将 so 和 Java 应用一起打包,极大地减轻了开发人员的打包工作。
2、NDK 提供了一份稳定、功能有限的 API 头文件声明。
oogle 明确声明该 API 是稳定的,在后续所有版本中都稳定支持当前发布的 API 。
从该版本的 NDK 中看出,这些 API 支持的功能非常有限,包含有: C 标准库( libc )、
标准数学库( libm )、压缩库( libz )、 Log 库( liblog )。
G
4、NDK 带来什么
1、NDK 的发布,使 “Java+C” 的开发方式终于转正,成为官方支持的开发方式。
使用 NDK ,我们可以将要求高性能的应用逻辑使用 C 开发,从而提高应用程序的执
行效率。
使用 NDK ,我们可以将需要保密的应用逻辑使用 C 开发。毕竟, Java 包都是可以反
编译的。
NDK 促使专业 so 组件商的出现。(乐观猜想,要视乎 Android 用户的数量)
2、NDK 将是 Android 平台支持 C 开发的开端。
NDK 提供了的开发工具集合,使开发人员可以便捷地开发、发布 C 组件。同时,
Google 承诺在 NDK 后续版本中提高 “ 可调式 ” 能力,即提供远程的 gdb 工具,使我
们可以便捷地调试 C 源码。在支持 Android 平台 C 开发,我们能感觉到 Google 花费了
很大精力,我们有理由憧憬 “C 组件支持 ” 只是 Google Android 平台上 C 开发的开端。
毕竟, C 程序员仍然是码农阵营中的绝对主力,将这部分人排除在 Android 应用开发之外,
显然是不利于 Android 平台繁荣昌盛的。