從源文件到APK-Android打包流程

======================================================

原文鏈接https://juejin.im/entry/58b78d1b61ff4b006cd47e5b,如侵刪

======================================================

我們平時在開發的過程中,每天都會run很多次項目,Android Studio就會將apk自動安裝到手機上了,那麼這中間都經歷過哪些流程呢,今天就來梳理記錄一下

首先來看一張官網(最新)給的構建流程圖

build-process_2x.png

  1. 編譯器將您的源代碼轉換成 DEX(Dalvik Executable) 文件(其中包括運行在 Android 設備上的字節碼),將所有其他內容轉換成已編譯資源。
  2. APK 打包器將 DEX 文件和已編譯資源合併成單個 APK。不過,必須先簽署 APK,才能將應用安裝並部署到 Android 設備上。
  3. APK 打包器使用調試或發佈密鑰庫簽署您的 APK:
    1. 如果您構建的是調試版本的應用(即專用於測試和分析的應用),打包器會使用調試密鑰庫簽署您的應用。Android Studio 自動使用調試密鑰庫配置新項目。
    2. 如果您構建的是打算向外發佈的發佈版本應用,打包器會使用發佈密鑰庫簽署您的應用。要創建發佈密鑰庫,請閱讀在 Android Studio 中籤署您的應用
  4. 在生成最終 APK 之前,打包器會使用 zipalign 工具對應用進行優化,減少其在設備上運行時的內存佔用。

再來看一張稍微詳細一點(來自老版官網)

android_build.png

從上面的流程圖,我們可以看出apk打包流程可以分爲以下七步

  1. 通過aapt打包res資源文件,生成R.java、resources.arsc和res文件(二進制 & 非二進制如res/raw和pic保持原樣)
  2. 處理.aidl文件,生成對應的Java接口文件
  3. 通過Java Compiler編譯R.java、Java接口文件、Java源文件,生成.class文件
  4. 通過dex命令,將.class文件和第三方庫中的.class文件處理生成classes.dex
  5. 通過apkbuilder工具,將aapt生成的resources.arsc和res文件、assets文件和classes.dex一起打包生成apk
  6. 通過Jarsigner工具,對上面的apk進行debug或release簽名
  7. 通過zipalign工具,將簽名後的apk進行對齊處理。

最後看張更詳細的

apk打包好了會輸出在項目的/app/build/outputs/apk目錄下,在Android Studio中我們可以雙擊apk文件查看當前apk的目錄結構,包括各個文件的大小,dex中包含了哪些方法及方法數等,非常方便

參考

Android逆向分析(2) APK的打包與安裝

Android打包系列——打包流程梳理

developer.android.com/studio/buil…


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