在makefile中打印输出信息的方法是:$(warning xxxxx)或者$(error xxxxx)
输出变量方式为:$(warning $(XXX))
Android编译顺序小结
android编译:
1、build.sh脚本:
该脚本根据传进来的参数选择编译的项目:
例如./build.sh XXX systemimage
因为$1=P729B_CN则会进入if语句中。
if [ "$1" = "XXX" ] ]; then
source ./$1/customize.sh//执行定制目录拷贝脚本
./build_blade.sh update-api//生成current.xml文件,更新api。
./build_blade.sh $2 //根据传进来的第二个参数systemimage来编译版本。既:./build_mooncake.sh systemimage
fi
2、build_XXX.sh脚本
通过上面我们可以看到,版本的编译进入了./build_XXX.sh systemimage命令的执行。在这个脚本中:
source build/envsetup.sh > /dev/null ///设置环境变量
choosecombo Device releaseXXXeng //选择设备
make -j4 $1 //进行编译。这里相当于make -j4 systemimage 当然这里的-j4根据自己的机器配置来选择编译的级别。
其中source build/envsetup.sh > /dev/null 设置环境变量,也是作为mm的一个解析器;
choosecombo Device release XXX eng 这条中的choosecombo是Google自带的一个函数,实际上在这里他调用的其他几个文件:
choosesim $1 选择目标设备
choosetype $2 选择目标代码格式
chooseproduct $3 选择产品平台(mooncake)
choosevariant $4 选择版本的模式
set_stuff_for_environment 通过build/core/config.mk进行配置
printconfig 打印出我们刚才选择的信息
我们执行这条命令的时候,会直接打印出
============================================
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版本,则可以直接执行choosecombo可以进行手动选择。
而我们在单独执行choosesim $1 ,在下面的函数中,我们看到,每次执行一次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设备