Android App 打包編譯流程(Simple版)

PS:以下為學習總結,not原創。
打包過程的細節,請看老羅博客:
Android應用程序資源的編譯和打包過程分析

apk簽名的意義

通過對發布的apk進行唯一簽名,來防止其他開發者通過相同的package name來混淆替換已經安裝的程序。使用相同簽名的軟件升級可以正常覆蓋老版本軟件,當系統發現新版本簽名和老版本簽名不一致時,不會允許新版本安裝成功。

apk打包流程

1.打包資源文件(Android Resources),通過aapt生成R.java文件
2.處理aidl文件,通過aidl tool生成.java文件
3.編譯工程源代碼(Source Code),通過Java Compiler生成.class文件
4.轉換所有的class文件,包括第三方庫(.class),通過dex生成classes.dex文件;
5.使用apkbuilder打包生成未簽名的apk
6.對apk文件進行簽名
7.對簽名后的apk使用zipalign進行對齊處理

流程圖如下:


apk打包流程圖.jpg

打包過程中使用的工具介紹

  • aapt
    全稱:Android Asset Package Tool
    功能:Android資源打包工具
    路徑:${ANDROID_SDK_HOME} /build-tools/ANDROID_VERSION/aapt

  • aidl
    全稱:Android Interface Definition Language
    功能:Android接口描述語言,將aidl轉化為.java文件的工具
    路徑:${ANDROID_SDK_HOME}/build-tools/ANDROID_VERSION/aidl

  • javac
    全稱:Java Compiler
    功能:Java編譯器,將java文件轉換為字節碼
    路徑:${JDK_HOME}/javac或/usr/bin/javac

  • dex
    功能:將.class文件轉換為Davik VM能識別的.dex文件
    路徑:${ANDROID_SDK_HOME}/build-tools/ANDROID_VERSION/dx

  • apkbuilder
    功能:生成apk包
    路徑:${ANDROID_SDK_HOME}/tools/apkbuilder

  • jarsigner
    功能:.jar文件的簽名工具
    路徑:${JDK_HOME}/jarsigner或/usr/bin/jarsigner

  • zipalign
    功能:字節碼對齊工具
    路徑:${ANDROID_SDK_HOME}/tools/zipalign

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容