第1节 APK包的结构
Android应用存在的实体形式是一个后缀为apk的安装包,例如“微信.apk” “QQ.apk”。将这个安装包放入到Android系统后,系统就可以启动运行它了。
apk安装包实际上是一个zip压缩包。我们用解压软件可以将它解压,解压后可以看到如下图的文件结构和目录结构。
1.1 classes.dex
classes.dex就是程序中java文件被编译后生成的字节码。字节码可以在Android系统的虚拟机(VM)运行。我们说的运行一个安卓程序,其实就是运行这个程序的字节码。
1.2 res
res中存放的的这个应用会使用到的资源文件,例如字符串、图片、界面布局等等。它的目录结构与Android Studio中我们看到的项目工程的res目录一样。这里面的xml文件内容都是被编译器编译过的,实际它们上已经变成了二进制文件,不再是文本文件了。
1.3 assets
asset目录下存放的是不会被编译器处理的文件,一般是一些资源性质的文件,这些文件放进去是什么样,被打包后还是什么样。需要注意的是,asset目录和res目录都可以存放资源,只是前者不被编译器处理,后者会被编译器再转化一次。
1.4 AndroidManifest
AndroidManifest.xml也是被编译器处理过的文件,也是二进制文件,不再是文本文件。
1.5. libs目录
libs目录下存放的是APK使用的库文件--so文件。so文件是c++或者c语言编写后通过编译器生成的。有的应用会使用到so文件,例如微信。使用so文件的应用会通过java,调用c++语言实现的功能。我们暂时把目光投放在纯Java开发应用上,以后再来讲解Java调用c++开发的方式。
因为不是所有的APK都会使用库文件。所以不会有libs目录。
1.6 resources.arsc
resources.arsc文件,用来描述那些具有ID值的资源的配置信息,它的内容就相当于是一个资源索引表。
/*******************************************************************/
* 版权声明
* 本教程只在CSDN和安豆网发布,其他网站出现本教程均属侵权。
*另外,我们还推出了Arduino智能硬件相关的教程,您可以在我们的网店跟我学Arduino编程中购买相关硬件。同时也感谢大家对我们这些码农的支持。
*最后再次感谢各位读者对安豆
的支持,谢谢:)
/*******************************************************************/