一、概述
Android 10的Build系統叫Soong,Soong之前,Android的編譯系統是Make——意思是基於Makefile文件的編譯系統。Soong大概在Android 7就嶄露頭角了。Soong的宏偉目標是干掉Make,但到Android 10,這個看起來比較容易的小目標也還未完全實現。
這個是Soong的編譯流程圖:
Soong編譯系統下,原本打算輸入是.bp文件,輸出是.ninja文件,但是由於系統中的.mk文件還沒有被完全消除掉,因此提供kati和ckati工具將.mk/Makefile文件轉換為.ninja文件。.ninja成為編譯系統的匯編文件,是不需要人為去修改的,相當於配置文件來調用gcc、java、clang等編譯器去編譯。
Soong編譯系統的設計思想是消除.mk文件中的if/else等邏輯,使.bp文件只是一個簡單的編譯邏輯,這些復雜的選擇配置邏輯應該放在更高層,比如使用更好調試的Python來編寫。
參考優秀博文: