Android構建系統

摘要:本文原文爲Android Studio官方開發文檔,筆者學習過程中,順便翻閱給大家。
與人方便,自己方便。轉載請保留本地址及原文地址,謝謝。
本文地址:http://blog.csdn.net/mikulee/article/details/45394673
原英文原文地址:https://developer.android.com/intl/zh-cn/sdk/installing/studio-build.html#detailed-build

構建系統概述(Build System Overview)

Android構建系統(Android build system)是一個你可以用它來創建,測試,運行及打包應用的工具集。這個構建系統可以作爲一個集成的工具運行在Android Studio的菜單上,也可以獨立的運行在命令行工具上。你可以使用構建系統的這些特性去實現:

  • 定製,配置及擴展構建過程
  • 使用相同的項目及模塊爲你的應用創建多個不同特性的APKs
  • 跨代碼集的重用代碼和資源文件

Android構建系統的靈活性使你可以完成這些目標,而不用去修改應用核心源碼文件。要創建一個Android Studio項目,請參考 從Android Studio創建及運行程序。要爲Android Studio項目進行自定義構建配置,請參考配置Gradle Builds

構建流程詳述(A Detailed Look at the Build Process)

構建流程在生成APK程序的過程中會調用到很多工具去處理並自動生成很多中間文件。如果你在Android Studio中開發,你每次爲你的工程或模塊執行Gradle Build任務時,都會完整的執行一次構建流程。構建流程相當靈活,所以很有用,然而,由於構建流程的可配置性及可擴展性,要理解在構建過程中發生了什麼就需要付出更多精力。下面這個流程圖描述了構建流程中不同工具的調用及處理:
構建過程圖片

下面簡述一個典型的構建流程。構建系統從產品配置特點,構建類型及依賴中合併所有資源。如果不同文件夾下面包含了同一名稱的資源或配置,相關的覆蓋優先級從高到低爲:依賴(dependencies)->構建類型(build types)->產品特性(product flavors)->主源代碼目錄(main source directory).

  • Android資源打包工具(aapt)將你應用的資源文件,例如 AndroidManifest.xml,Activity引用到的XML文件編譯,並且生成一個R.java源碼,以便你可以在你的java代碼中引用你的資源。
  • aidl工具轉換所有的.aidl文件並生成對應的java接口
  • 所有的java源碼,包括R.java和.aidl文件,都被java編譯器編譯成.class文件
  • dex工具轉換所有.class文件爲Dalvik字節碼。任何第三方的庫及你引用到的相關模塊生成的.class文件也一起被轉換成.dex文件,以便它們可以被打包進最終的.apk文件中。
  • 所有不可編譯的資源文件(例如圖片),已經編譯的資源,及.dex文件都被apkbuilder工具打包爲一個.apk文件
  • 一旦.apk文件生成後,它必須用一個(debug或release)key去簽名,才能被安裝到設備上。
  • 最後,如果應用是用release key簽名的,還必須用zipalign工具將.apk文件對齊。經過對齊處理的.apk文件在應用實際運行過程中可以有效減少內存佔用。

提示:一個應用被限制最多可以有64K個方法索引,如果你的應用超過這個限制,構建過程會輸出以下錯誤信息:

Unable to execute dex: method ID not in [0, 0xffff]: 65536.

要避免這個錯誤,可以參考構建超過65K方法的應用

構建輸出(Build output)

構建系統分別爲不同的構建需求在app/build文件夾生成不同的APK文件:在app/build/outputs/apk目錄下包含着以app--.apk的文件,例如app-full-release.apk 及 app-demo-debug.apk。

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