1蹂午、編譯資源文件
通過aapt(Android Asset Packaging Toos)工具對資源文件進行編譯和打包硕旗。aapt會解析資源、為資源編制索引和編譯為針對Android平臺優(yōu)化過的二進制文件,其中res/raw文件夾和assets文件夾下的文件還有圖片資源不進行編譯智什。編譯后會生成R.java和resources.arsc文件,R為資源索引丁屎,arsc為資源映射表荠锭。
2、aidl文件處理
項目中如果存在aidl的話晨川,會對aidl文件進行處理证九,生成對應的java文件。
3共虑、編譯工程源代碼愧怜,生成class文件
調(diào)用javac編譯src目錄下的所有java文件,生成對應的.class文件妈拌。
4拥坛、轉換class文件,生成classes.dex文件
使用SDK的dx工具尘分,把class文件轉換成dalvik虛擬機可以執(zhí)行的dex文件猜惋。
5、生成apk文件
通過apkbuilder工具培愁,把上面編譯好資源文件惨奕、dex文件、lib文件打包成apk文件
6竭钝、生成簽名后的apk文件
使用jarsigner工具梨撞,對上面的apk文件進行簽名。
7香罐、對apk文件進行字節(jié)對齊
使用zipalign對apk中的未壓縮文件進行字節(jié)對齊卧波,可以通過mmap直接訪問這些文件,減少應用的內(nèi)存使用庇茫。
mmap(memory mapping)主要好處是:1. 將文件映射到內(nèi)存中港粱,相比較文件讀寫有較高的性能。 2. 實現(xiàn)跨進程數(shù)據(jù)訪問
參考:
https://blog.csdn.net/jason0539/article/details/44917745
https://developer.android.google.cn/studio/command-line/zipalign.html