Android build系統可以從相同的源碼編譯出不同的產品,具有不同的packages和選項。為了實現這個功能, 需要一些環境變數來控制哪些需要編譯,以及怎麼編譯。
envsetup.sh就是其中一種方法,envsetup.sh會產生一些工具,使用這些工具可以很方便的對源碼進行編譯,envsetup.sh會include如下檔案
vendor/*/vendorsetup.sh
vendor/*/build/vendorsetup.sh
device/*/*/vendorsetup.sh
$ source build/envsetup.sh
or
$ . build/envsetup.sh
執行完envsetup.sh後,可以使用help來查看可用的工具函數,注意原來shell系統的help命令已經被envsetup.sh的help命令覆蓋
一般情況使用者都會使用choosecombo來定義編譯選項, choosecombo 將會一步一步提示你輸入相應的編譯參數,choosecombo會設定如下參數:
- product (generic或者板級的平台名稱)
- build varient (‘user', 'userdebug', or 'eng'), 三者的區別可參看 http://www.kandroid.org/online-pdk/guide/build_system.html#androidBuildVariants
- Build for the simulator or the device, 是否支援simulator,會設定TARGET_SIMULATOR環境變數
- build 類型('release' or 'debug'), 會設定TARGET_BUILD_TYPE環境變數為release或debug
在定義了編譯環境變數後,可以使用m, mm, mmm來進行編譯了,此外envsetup還提供了幾個方便的工具croot, cgrep, jgrep, resgrep, godir。具體含義使用help命令