在 Android 7.0 發布前,Android 專門使用 GNU Make 說明及執行建構規則。Make 建構系統廣受支援及使用,但在 Android 的規模下,速度變慢、容易出錯、無法擴充,且難以測試。Soong 建構系統提供 Android 建構作業所需的彈性。我們將對 Android 建構系統進行重大變更,淘汰 Make (Android.mk
) 建構系統,並以 Soong (Android.bp
) 取代。
因此,平台開發人員應盡快從 Make 轉移至 Soong。將問題傳送至 Android Building Google 網路論壇,即可取得支援。
什麼是 Soong?
Android 7.0 (Nougat) 導入 Soong 建構系統,取代 Make。 這項工具會運用 Kati GNU Make 複製工具和 Ninja 建構系統元件,加快 Android 建構速度。
如需一般指示,請參閱 Android 開放原始碼計畫 (AOSP) 中的「Android Make 建構系統」說明,並參閱「Build System Changes for Android.mk Writers」,瞭解從 Make 調整為 Soong 時需要進行的修改。如要瞭解重要術語的定義,請參閱詞彙表中的建構相關項目,如需完整詳細資料,請參閱 Soong 模組參考資料。
Make 和 Soong 比較
下表比較 Make 設定與 Soong 在 Soong 設定 (Blueprint 或 .bp
) 檔案中完成相同作業的情況。
製作範例
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libxmlrpc++
LOCAL_MODULE_HOST_OS := linux
LOCAL_RTTI_FLAG := -frtti
LOCAL_CPPFLAGS := -Wall -Werror -fexceptions
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/src
LOCAL_SRC_FILES := $(call \
all-cpp-files-under,src)
include $(BUILD_SHARED_LIBRARY)
Soong 範例
cc_library_shared {
name: "libxmlrpc++",
rtti: true,
cppflags: [
"-Wall",
"-Werror",
"-fexceptions",
],
export_include_dirs: ["src"],
srcs: ["src/**/*.cpp"],
target: {
darwin: {
enabled: false,
},
},
}
如需測試專用的 Soong 設定範例,請參閱「簡單的建構設定」。
基本轉換程序
使用 androidmk
輔助工具時,Android.mk
檔案轉換為 Android.bp
檔案的一般工作流程如下。一般來說,轉換作業會依下列步驟進行。
設定終端機環境並建構
androidmk
工具。androidmk
是一種指令列工具,可剖析Android.mk
檔案,並嘗試輸出類似的Android.bp
檔案。這項工具可將大部分Android.mk
檔案轉換為Android
.bp,且幾乎不需要手動變更。cd <root-of-the-tree> source build/envsetup.sh lunch <lunch-target> m androidmk
使用
Android.mk
建構:sh m <module-name>
執行
androidmk
轉換工具:sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bp
手動編輯
Android.bp
檔案:- 解決
androidmk
工具發出的所有警告。 - 保留或新增著作權標題。如要新增,請使用當年度。
- 解決
移除
Android.mk
檔案,並使用Android.bp
檔案建構。比較建構的構件或執行單元和功能測試,驗證轉換結果。
儲存變更並上傳以供審查。
詳情請參閱 Android.bp 檔案格式。