======================================================
原文鏈接https://juejin.im/entry/58b78d1b61ff4b006cd47e5b,如侵刪
======================================================
我們平時在開發的過程中,每天都會run很多次項目,Android Studio就會將apk自動安裝到手機上了,那麼這中間都經歷過哪些流程呢,今天就來梳理記錄一下
首先來看一張官網(最新)給的構建流程圖
- 編譯器將您的源代碼轉換成 DEX(Dalvik Executable) 文件(其中包括運行在 Android 設備上的字節碼),將所有其他內容轉換成已編譯資源。
- APK 打包器將 DEX 文件和已編譯資源合併成單個 APK。不過,必須先簽署 APK,才能將應用安裝並部署到 Android 設備上。
- APK 打包器使用調試或發佈密鑰庫簽署您的 APK:
- 如果您構建的是調試版本的應用(即專用於測試和分析的應用),打包器會使用調試密鑰庫簽署您的應用。Android Studio 自動使用調試密鑰庫配置新項目。
- 如果您構建的是打算向外發佈的發佈版本應用,打包器會使用發佈密鑰庫簽署您的應用。要創建發佈密鑰庫,請閱讀在 Android Studio 中籤署您的應用
- 在生成最終 APK 之前,打包器會使用 zipalign 工具對應用進行優化,減少其在設備上運行時的內存佔用。
再來看一張稍微詳細一點(來自老版官網)
從上面的流程圖,我們可以看出apk打包流程可以分爲以下七步
- 通過aapt打包res資源文件,生成R.java、resources.arsc和res文件(二進制 & 非二進制如res/raw和pic保持原樣)
- 處理.aidl文件,生成對應的Java接口文件
- 通過Java Compiler編譯R.java、Java接口文件、Java源文件,生成.class文件
- 通過dex命令,將.class文件和第三方庫中的.class文件處理生成classes.dex
- 通過apkbuilder工具,將aapt生成的resources.arsc和res文件、assets文件和classes.dex一起打包生成apk
- 通過Jarsigner工具,對上面的apk進行debug或release簽名
- 通過zipalign工具,將簽名後的apk進行對齊處理。
最後看張更詳細的
apk打包好了會輸出在項目的/app/build/outputs/apk目錄下,在Android Studio中我們可以雙擊apk文件查看當前apk的目錄結構,包括各個文件的大小,dex中包含了哪些方法及方法數等,非常方便
參考
developer.android.com/studio/buil…