Android打包流程
图为典型的Android应用模块的编译流程
Android编译流程的步骤:
- 打包资源文件Resource Files,生成R.java文件(AAPT:Android Asset Packaging Tool)
- 处理AIDL文件,生成java代码(AIDL:Android Interface Definition Language,实现进程间的通信)
- 编译代码文件(Source code),生成对应的.class文件
- .class文件转化为dex文件
- 将dex文件和编译的资源文件组合成成apk(apk-builder)
- 使用调试或发布密钥库签名(jarsigner)
- 应用优化,减少运行时占用的内存(zipslign:归档对其工具 —> mmap内存映射 —> 减少运行时消耗的内存)
ps:
- 如果您使用的是 apksigner,则只能在为 APK 文件签名之前执行 zipalign。如果您在使用 apksigner 为 APK 签名之后对 APK 进行进一步更改,则签名将会失效。
- 如果您使用的是 jarsigner,则只能在为 APK 文件签名之后执行 zipalign。
ps2:
- 我们经常直接解压一些apk的时候会发现有很多的classes.dex文件,默认的dex文件应该是一个的,但是每个dex文件的方法数不能超过65535。我们只要在glide下配置multiDexEnabled true就好了