【白話】APK編譯打包流程

Java編譯器對工程本身的java代碼進行編譯,這些java代碼有三個來源:App的源代碼,有資源文件生成的R文件(aapt工具),AIDL文件生成的Java接口文件,產出爲.class文件

 

  1. 用AAPT編譯R.java文件
  2. 編譯AIDL的java文件
  3. 把java文件編譯成class文件
  4. class文件和依賴的三方庫文件通過dex工具生成Delvik虛擬機可執行的.dex文件,包含了所有的class信息,包括項目自身的class和依賴的class,產出爲.dex文件
  5. apkbuilder工具將.dex文件和編譯後的資源文件生成未經簽名對其的apk文件。這裏編譯後的資源文件包括兩部分,一是有aapt編譯後產生的資源文件,二是依賴的三方庫裏的資源文件。產出爲未經簽名的.apk文件
  6. 分別由JarSigner和zipalign對apk文件進行簽名和對齊,生成最終的apk文件

 

【通俗的講】

  1. 我們平時編譯時有時候會一直爆紅,編譯不過去,需要我們將build文件夾刪除然後重新打包,就是重新去構建R.java文件,裏面生成的有我們控件id之類的唯一信息
  2. 把aidl產生的java文件編譯進行
  3. 把java看成描述文檔,去生成.class文件讓計算機去認識
  4. 把所有的class文件去生成執行效率更高,體積更小的dex文件
  5. 把dex和資源文件一塊打包成我們常見到的apk文件
  6. 在apk文件上寫上我們的簽名
  7. 對齊,把apk中的未壓縮的資源進行‘對齊操作’,讓資源按照4字節的邊界進行對齊,這樣訪問速度更快

     對齊肯定是在簽名後面,不然先對齊了,再去簽名不就把之前對齊的破壞了嘛

 

總結下來就是:編譯-Dex-打包-簽名和對齊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章