從 Android.mk 到 Android.bp

本篇介紹一下 Android 的編譯工具發展歷史,從 Android.mk 至 Android.bp,以及對應的 Android 版本各發生了什麼事,最後介紹一下要如何從 Android.mk 轉換成 Android.bp。

工具發展歷史

早期的 Android 系統都是使用 Android.mk 的來編譯原始碼,由於 Google 發現原始碼越來越大,編譯越來越慢,從 Android 7 Nougat 開始導入 Android.bp。所以 Android.bp 是準備取代 Android.mk 的。

Android 版本編譯工具的發展歷史:
從 platform/system/core/ 目錄以及 sdcard、base、liblog 模組裡的變化,可以看出 Google 是在逐漸地把 Android.mk 替換成 Android.bp
Android 6 Marshmallow
使用 Android.mk
platform/system/core/
platform/system/core/sdcard/Android.mk
platform/system/core/base/Android.mk
platform/system/core/liblog/Android.mk
Android 7 Nougat
導入 ninja 和 kati
platform/system/core/
platform/system/core/sdcard/Android.mk
platform/system/core/base/Android.mk
platform/system/core/liblog/Android.bp
Android 8 Oreo
使用 Android.bp 來替換 Android.mk,導入 Soong
platform/system/core/
platform/system/core/sdcard/Android.mk
platform/system/core/base/Android.bp
platform/system/core/liblog/Android.bp
Android 9 Pie
強制使用 Android.bp (有強制嗎?)
platform/system/core/
platform/system/core/sdcard/Android.bp
platform/system/core/base/Android.bp
platform/system/core/liblog/Android.bp
Android 10

一些常見模組的路徑都在 platform/system/core/ 下:
adb
base
fastboot
libcutils
liblog
logcat
logd

Android.bp to Android.bp 轉換工具

使用 Google 提供的 androidmk 這個轉換小工具可以將 Android.mk 轉換成 Android.bp。

1
$ androidmk Android.mk > Android.bp

參考
[1] 理解Android.bp - Gityuan博客 | 袁輝輝的技術博客
http://gityuan.com/2018/06/02/android-bp/
[2] Android編譯系統中的Android.bp、Blueprint與Soong ‧ 零壹軒‧筆記
https://note.qidong.name/2017/08/android-blueprint/
[3] 【Bash百宝箱】从Android.mk到Android.bp - evo
https://blog.csdn.net/ieearth/article/details/54707416
[4] aosp-mirror/platform_system_core - github
https://github.com/aosp-mirror/platform_system_core