Android的包文件APK分为两个部分:代码和资源,所以打包方面也分为资源打包和代码打包两个方面,这篇文章就来分析资源和代码的编译打包原理。
具体说来:
1.通过AAPT工具进行资源文件(包括AndroidManifest.xml、布局文件、各种xml资源等)的打包,生成R.java文
件。
2.通过AIDL工具处理AIDL文件,生成相应的)ava文件。
3.通过Javac工具编译项目源码,生成Class.文件。
4.通过DX工具将所有的Class文件转换成DEX文件,该过程主要完成ava字节码转换成Dalvik字节码,压缩常量池以及清除冗余信息等工作。
5.通过ApkBuilder.工具将资源文件、DEX文件打包生成APK文件。
6.利用KeyStore对生成的APK文件进行签名。
7.如果是正式版的APK,还会利用ZipAlig工具进行对齐处理,对齐的过程就是将APK文件中所有的资源文件举例文件的起始距离都偏移4字节的整数倍,这样通过内存映射访问APK文件的速度会更快。
上述流程都是Android Studio在编译时调用各种编译命令自动完成的,具体说来,如下所示:
1.创建Android工程
android create project
-n packageTest2
-a MainActivity
-k com.package.test2
-t android-23
-p./PackageTest2
2.编译R文件
aapt package
-f
-J./gen
-M./AndroidManifest.xml
-S ./res/
-I /Users/RadAsm/Library/AndroidSDK/sdk/platforms/android-23/android.jar
3.编译源代码文件
Javac -source 1.6
-target 1.6
-cp