【Android Gradle】安卓应用构建流程 ( Java 源码编译 和 AIDL 文件编译 )
文章目錄
- 一、安卓應(yīng)用構(gòu)建簡(jiǎn)介
- 二、Java 源碼編譯
- 三、AIDL 源碼編譯
一、安卓應(yīng)用構(gòu)建簡(jiǎn)介
使用 Android Studio 開(kāi)發(fā) Android 應(yīng)用時(shí) , 編譯應(yīng)用后在 Module 的 build 目錄下生成如下 , generated , intermediates , outputs , tmp 等目錄 ;
build 目錄主要是為了存放在編譯 APK 安裝包時(shí)產(chǎn)生的臨時(shí)文件 ;
這些臨時(shí)文件都是各種 Java JDK , Android SDK 工具執(zhí)行產(chǎn)生的 , 如 : javac 執(zhí)行產(chǎn)生 .class 字節(jié)碼文件 , dx 工具打包字節(jié)碼文件為 dex 文件 , aapt2 打包資源到 ap_generated_sources 中 , ndk 編譯產(chǎn)生 .so 動(dòng)態(tài)庫(kù) ;
intermediates 目錄主要是處理與 Java 代碼相關(guān)的臨時(shí)文件 , 或緩存文件 ;
generated 主要是處理 配置信息 , Resources 資源文件 ;
output 目錄主要是輸出 打包 后的 APK 安裝包文件 ;
這些文件是應(yīng)用編譯過(guò)程中 , 生成的文件 , 熟悉安卓應(yīng)用編譯流程 , 和這些生成文件 , 對(duì)排查 Android 編譯時(shí)錯(cuò)誤很有幫助 ;
編譯構(gòu)建 APK 安裝包 , 需要將 Java 代碼 , AIDL 文件 , Asset 資源 , Resources 資源 , SO 動(dòng)態(tài)庫(kù) , 編譯打包到最后的安裝包中 ;
之前的博客 【Android 安裝包優(yōu)化】資源混淆 ( AAPT2 資源編譯工具 | resources.arsc 資源映射表 工作機(jī)制 ) 中 , 講解過(guò) AAPT2 資源編譯工具 , 用于編譯 Assets 和 Resources 資源 ;
二、Java 源碼編譯
Java 源代碼編譯 : 使用 javac 編譯工具 , 編譯成 .class 字節(jié)碼文件 , 編譯的過(guò)程中 , 就需要有目錄來(lái)存儲(chǔ)編譯生成的臨時(shí)文件 ,
javac 編譯工具路徑 : " D:\Program Files\Java\jdk1.8.0_221\bin\javac.exe " , 在 JDK 目錄中 ;
編譯后的 .class 字節(jié)碼文件存放在 " app\build\intermediates\javac "目錄下 ;
.class 字節(jié)碼文件還需要使用 dx 工具 , 打包為 classes.dex 文件 ;
dx 工具的在 SDK 目錄下 , " Y:\001_DevelopTools\002_Android_SDK\build-tools\30.0.3\dx.bat " ;
dx 工具將字節(jié)碼打包成 classes.dex 文件 , 放在 " app\build\intermediates\dex\debug\mergeDexDebug\classes.dex " 路徑中 ;
安卓 APK 安裝包中的 classes.dex 文件就是這么編譯生成的 ;
三、AIDL 源碼編譯
如果項(xiàng)目中使用了 AIDL 跨進(jìn)程訪(fǎng)問(wèn) , 編譯時(shí)就需要編譯 AIDL 文件 ;
編譯結(jié)果輸出到 " app\build\generated\aidl_source_output_dir " 目錄中 ;
構(gòu)建完整流程參考圖 :
總結(jié)
以上是生活随笔為你收集整理的【Android Gradle】安卓应用构建流程 ( Java 源码编译 和 AIDL 文件编译 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Android 文件管理】分区存储 (
- 下一篇: 【Android Gradle】安卓应用