APK文件的組成部分及apk打包流程是Android開發中的基礎知識點,做壹個簡單的記錄。
apk文件是Android應用包文件格式,其本質是壹個壓縮文件。將apk文件拖動到Android Studio中即可查看裏面的內容,如下圖:
從上圖中可以看到apk包裏的幾個重要組成部分:
打包流程的經典流程圖如下:
其中七個橢圓形內容對應了打包流程中的七個重要步驟,也對應著打包中的七個重要工具,具體如下:
對上面七個重要的打包流程進壹步說明。
aapt打包資源文件,生成R.java文件,resources.arsc等文件。
aapt在打包資源文件之前會檢測 AndroidManifest.xml 文件的合法性,對res目錄下的資源目錄進行掃描合法性,因此資源命名有問題時會在編譯階段就會直接報錯。
需要註意的是xml文件會被編譯為二進制的,因此我們並不能直接打開apk包中的xml文件。
AIDL是Android接口定義語言,是Android進程間通訊的壹種實現方式。
此步驟中會對aidl文件進行處理,生成java文件。
通過javaCompiler對java文件進行編譯,生成class文件。
dx工具將class文件轉變為Android系統Dalvik虛擬機可執行的Dex文件。
將classes.dex,res文件夾等所有文件打包成apk文件。
生成APK包之後還需要進行簽名處理,Release簽名需要我們自己去進行配置。
常用的簽名方式有兩種:jarsigner和apksigner。
Zipalign是Android平臺上APK文件對齊的整理工具,能夠對APK中未壓縮的數據進行4字節對齊。
需要註意的是根據采用簽名方式的不同,對齊處理的先後順序有所區別。
APK打包流程備忘。