|
在makefile中打印輸出信息的方法是:$(warning xxxxx)或者$(error xxxxx)
輸出變量方式為:$(warning $(XXX))
Android編譯順序小結
Android編譯:
1、build.sh腳本: 該腳本根據(jù)傳進來的參數(shù)選擇編譯的項目: 例如./build.sh XXX systemimage 因為$1=P729B_CN則會進入if語句中。
if [ "$1" = "XXX" ] ]; then source ./$1/customize.sh//執(zhí)行定制目錄拷貝腳本 ./build_blade.sh update-api//生成current.xml文件,更新api。 ./build_blade.sh $2 //根據(jù)傳進來的第二個參數(shù)systemimage來編譯版本。既:./build_mooncake.sh systemimage fi 2、build_XXX.sh腳本
通過上面我們可以看到,版本的編譯進入了./build_XXX.sh systemimage命令的執(zhí)行。在這個腳本中: source build/envsetup.sh > /dev/null ///設置環(huán)境變量 choosecombo Device releaseXXXeng //選擇設備 make -j4 $1 //進行編譯。這里相當于make -j4 systemimage 當然這里的-j4根據(jù)自己的機器配置來選擇編譯的級別。 其中source build/envsetup.sh > /dev/null 設置環(huán)境變量,也是作為mm的一個解析器;
choosecombo Device release XXX eng 這條中的choosecombo是Google自帶的一個函數(shù),實際上在這里他調用的其他幾個文件: choosesim $1 選擇目標設備 choosetype $2 選擇目標代碼格式 chooseproduct $3 選擇產(chǎn)品平臺(mooncake) choosevariant $4 選擇版本的模式 set_stuff_for_environment 通過build/core/config.mk進行配置 printconfig 打印出我們剛才選擇的信息 我們執(zhí)行這條命令的時候,會直接打印出
============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=2.1-update1 TARGET_PRODUCT=XXX TARGET_BUILD_VARIANT=user
TARGET_SIMULATOR=false TARGET_BUILD_TYPE=release TARGET_ARCH=arm HOST_ARCH=x86 HOST_OS=linux HOST_BUILD_TYPE=release BUILD_ID=ERE27 ============================================ 而我們沒有選擇的余地,如果想自己diy版本,則可以直接執(zhí)行choosecombo可以進行手動選擇。 而我們在單獨執(zhí)行choosesim $1 ,在下面的函數(shù)中,我們看到,每次執(zhí)行一次choosesim $1便會做一次set_stuff_for_environment
case `uname -s` in Linux) function choosesim() { echo "Build for the simulator or the device?" echo " 1. Device" echo " 2. Simulator" echo export TARGET_SIMULATOR=
local ANSWER while [ -z $TARGET_SIMULATOR ] do echo -n "Which would you like? [1] " if [ -z "$1" ] ; then read ANSWER else echo $1 ANSWER=$1 fi case $ANSWER in "") export TARGET_SIMULATOR=false ;; 1) export TARGET_SIMULATOR=false ;; Device) export TARGET_SIMULATOR=false ;; 2) export TARGET_SIMULATOR=true ;; Simulator) export TARGET_SIMULATOR=true ;; *) echo echo "I didn't understand your response. Please try again." echo ;; esac if [ -n "$1" ] ; then break fi done set_stuff_for_environment
} ;; *) choosecombo Device release mooncake設備
本篇文章來源于 Linux公社網(wǎng)站(www.) 原文鏈接:http://www./Linux/2011-05/35787.htm
|
|
|