上面这张图是我们平时用Android studio开发安卓app点运行后会在app-build-outputs-apk目录下生成apk文件的构建过程,下面具体分析一下
1.aapt(Android assent packaging tool) aapt工具会打包应用中的资源文件,如清单文件和layout中的布局文件,并将其编译成二进制文件,当然,但是assent文件夹下的资源会保持不变,图片和res/raw文件夹下的资源也不会被改变,但raw下的资源也会生成资源id,这步走完一会会生成R.java文件
2.aidl aidl工具会将应用中所有的aidl接口转换成java接口
3.所有的Java代码包括R.java文件和aidl文件都会被编译成.class文件
4.dex工具会将上述步骤生成的.class文件和第三方库的.class文件及其他.class文件转换成Dalvik虚拟机支持的.dex文件并最终打包进apk文件
5.apkbuilder工具会将编译过的资源和未编译过的资源如图片以及.dex文件打包成apk文件
6.生成APK文件后,需要对其签名才可安装到设备,平时测试时会使用debug keystore,当正式发布应用时必须使用release版的keystore对应用进行签名。
7.如果对APK正式签名,还需要使用zipalign工具对APK进行对齐操作,这样做的好处是当应用运行时会提高速度,但是相应的会增加内存的开销