Android APK打包過程

1.什麼是APK

  • APK是 Android application package即安卓應用程序包的縮寫,是能安卓運行在安卓操作系統的一種應用程序包文件格式。
  • 在Android應用開發完成後,會將java/kotolin源代碼,資源文件等經過一系列編譯及壓縮最終生成一個可安裝在安卓操作系統的apk文件
  • 編譯打包生成的apk文件生成在在AndroidStudio module 下的build/outputs/apk/debug (release)中,如下圖
    apk生成位置

2APK裏面到底是什麼

先安利一下APK分析器:
Android Studio 裏面包含一個 APK 分析器,可讓您在構建流程完成後立即瞭解 APK 的組成。您可以通過以下三種方式訪問 APK 分析器:

  • 將 APK 拖動到 Android Studio 的 Editor 窗口中。

  • 在 Project 窗口中切換到 Project 透視圖,然後在默認的 build/output/apks/ 目錄中雙擊相應 APK。

  • 在菜單欄中依次選擇 Build > Analyze APK,然後選擇您的 APK。
    打開apk之後看到的結構如下圖
    在這裏插入圖片描述
    可以看到裏面有classes.dex,res,resources.arsc,META_INF,AndroidManifest.xml等文件

  • classes.dex就是Android系統Dalvik虛擬機的可執行文件,是由dx工具將.class文件轉換而來

  • res就是一些資源文件

  • resources.arsc:程序的語言文件,可以透過這軟件用(AndroidResEdit等工具)來進行翻譯,也可以用ApkTool等工具反編譯後再開始進行軟件修改

這些文件是怎樣生成的呢?

3.AKP打包流程

Android Studio 會使用高級構建工具包 Gradle 來自動執行和管理構建流程。Gradle 和 Android 插件獨立於 Android Studio 運行。
gradle構建流程如下圖
在這裏插入圖片描述

還有一個經典的詳細流程圖如下圖
在這裏插入圖片描述

  • 1、通過aapt(The Android Asset Packaing Tool),將AndroidManifest.xml文件和佈局文件XML都會編譯,然後生成相應的R.java。
  • 2、如果項目存在AIDL文件,sdk中(android-sdk/platform-tools目錄下)IDL工具會處理AIDL文件,生成相應的Java接口文件
  • 3、R文件、java接口文件及源代碼會通過編譯器(javac)生成.classes文件,存放到bin/classes目錄下
  • 4、dx工具將三方的library和.classes文件轉換成可供Dalvik虛擬機執行的classes.dex文件
  • 5、打包工具apkbuilder將.dex文件、編譯過的和未編譯過的資源合併一起生成.apk文件
  • 6、生成apk後進行簽名
  • 7、簽名後對齊處理,在生成最終 APK 之前,打包器會使用 zipalign 工具對應用進行優化,以減少其在設備上運行時所佔用的內存

gradle構建流程
使用 APK 分析器分析您的構建

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