從事Android系統(tǒng)相關開發(fā)工作的coder肯定會是需要在Ubuntu系統(tǒng)下編譯打包工作幌蚊,包括android,kernel韧涨,uboot相關鏡像編譯打包劲室,而且還需要手動從各個目錄下進行拷貝到指定的打包目錄, 各個部分需要執(zhí)行的命令又不一樣娄蔼,如此反復操作必然造成重復勞動效率低下地問題怖喻,為了避免這樣的問題,我建議使用shell腳本來幫助協(xié)助你完成這樣繁瑣的工作岁诉,提高效率锚沸。
這里提供一個滿足基本編譯打包的框架,大家可以根據(jù)自己業(yè)務需求對腳本進行處理涕癣。
命名shell腳本為buildsys.sh
#!/bin/bash
export CODEDIR=`pwd`
export KERNEL_DIR=$CODEDIR/kernel
export UBOOT_DIR=$CODEDIR/u-boot
export ANDROID_IMG_DIR=$CODEDIR/rockdev/Image-rk3288_box
export PKG_IMG_DIR=$CODEDIR/Image
export ANDROID_OUT_TARGET_DIR=$CODEDIR/out/target/product/rk3288_box
export PRODUCT_NAME1=plycom
export CUSTOMER_NAME=OWNER
echo $CODEDIR
echo $KERNEL_DIR
echo $UBOOT_DIR
echo $ANDROID_IMG_DIR
function copyAndroidImg(){
cd $ANDROID_IMG_DIR
for IMG in $(ls $ANDROID_IMG_DIR)
do
cp -rf $ANDROID_IMG_DIR/$IMG $PKG_IMG_DIR
done
}
function clean_android()
{
echo "clean_android"
cd $ANDROID_OUT_TARGET_DIR
rm *.img
rm -rf $ANDROID_OUT_TARGET_DIR/system
}
function build_kernel()
{
echo $PRODUCT_NAME1
echo "build_kernel"
}
function build_uboot()
{
echo $PRODUCT_NAME1
echo "build_uboot"
}
function build_android()
{
cd $CODEDIR
source build.sh
lunch rk3288_box-userdebug
export PRODUCT_NAME1
echo "PRODUCT_NAME1 =$PRODUCT_NAME1"
make -j8
./mkimage.sh
copyAndroidImg
}
function build_all()
{
build_kernel
build_uboot
build_android
}
function exec_fun()
{
case "$1" in
all)
build_all
;;
android)
build_android
;;
kernel)
build_kernel
;;
uboot)
build_uboot
;;
clean_an)
clean_android
;;
*)
esac
}
#帶選項傳參
#用法舉例:./buildsys.sh -p PRO1 -c CUSTOM1
#使用export聲明后哗蜈,相應的參數(shù)可以傳入其他mk文件,如device.mk可以使用該變量
while getopts "p:c:" OPT
do
case $OPT in
p) PRODUCT_NAME1=$OPTARG;;
c) CUSTOMER_NAME=$OPTARG;;
?) Usage
exit 2;;
esac
done
#直接傳參
#用法舉例:./buildsys.sh all,默認執(zhí)行 buildAndroid函數(shù)
#這里可以和帶選項傳參函數(shù)一起使用
#/buildsys.sh -p PRO1 all
#注:帶選項參數(shù)須在普通傳參前面
if [ "$#" == 0 ]; then
build_android
else
for f in "$@"; do
exec_fun $f
done
fi
如果對shell腳本還不是特別熟悉的話坠韩,可以自行查閱相關資料距潘。
這里需要著重學習下幾個參數(shù)的用法。
1.getops 帶選項參數(shù)
2.$# 表示傳入?yún)?shù)個數(shù)
3.$@ 表示全部傳入?yún)?shù)
另外也可以關注下我的個人主頁