总算将V880源码编译完成,总结一下经验:
第一条:获取V880私有库文件
cd ~/android/system/device/zte/blade/
./extract-files.sh
第二条:获取zip刷机报权限
~/android/system/vendor/cyanogen/get-rommanager
第三条:编译命令
. build/envsetup.sh && brunch blade
注意事项: . 和 build之间一定要有空格,否则回提示 brunch命令找不到
第三条:repo sync同步
repo 是用于同步整个Android 源码的脚本,放置在哪儿都一样。但是同步的时候会提示冲突,只需要在相应的源码目录下执行
git checkout *
就能解决冲突。
第四条:重新获得源码
执行第一、第二条之后,会修改一下两个目录的文件。
分别是 vendor 和 device 目录。
重置的最简单方法是删除这两个目录,然后执行 repo sync 命令
以下是编译脚本:
#!/bin/bash
CPU_JOB_NUM=$(grep processor /proc/cpuinfo | awk '{field=$NF};END{print field+1}')
CLIENT=$(whoami)
ROOT_DIR=$(pwd)
KERNEL_DIR="$ROOT_DIR/../zte_kernel_v880"
#SEC_PRODUCT='generic' #Enable for generic build
SEC_PRODUCT='blade' #Enable for zte_blade build
#Modify the below path suitably as per your requirements
OUT_DIR="$ROOT_DIR/out/target/product/$SEC_PRODUCT"
OUT_HOSTBIN_DIR="$ROOT_DIR/out/host/linux-x86/bin"
TFTP_DIR="$ROOT_DIR/zte_blade_images"
function check_exit()
{
if [ $? != 0 ]
then
exit $?
fi
}
function build_android()
{
echo
echo '[[[[[[[ Build android platform ]]]]]]]'
echo
START_TIME=`date +%s`
#Note build 之前的 . 一定要由空格,否则会提示brunch 命令找不到
. build/envsetup.sh &&brunch $SEC_PRODUCT
make -j$CPU_JOB_NUM
check_exit
END_TIME=`date +%s`
let "ELAPSED_TIME=$END_TIME-$START_TIME"
echo "Total compile time is $ELAPSED_TIME seconds"
}
function transfer_img()
{
chmod 666 $1
check_exit
echo $1 '->' $TFTP_DIR
rm -f $TFTP_DIR/$1
cp $1 $TFTP_DIR
check_exit
}
function make_uboot_img()
{
cd $OUT_DIR
echo
echo '[[[[[[[ Make ramdisk image for u-boot ]]]]]]]'
echo
mkimage -A arm -O linux -T ramdisk -C none -a 0x30800000 -n "ramdisk" -d ramdisk.img ramdisk-uboot.img
check_exit
rm -f ramdisk.img
echo
cd ../../../..
}
function make_fastboot_img()
{
echo
echo '[[[[[[[ Make additional images for fastboot ]]]]]]]'
echo
if [ ! -f $KERNEL_DIR/arch/arm/boot/zImage ]
then
echo "No zImage is found at $KERNEL_DIR/arch/arm/boot"
echo ' Please set KERNEL_DIR if you want to make additional images'
echo " Ex.) export KERNEL_DIR=~ID/android_kernel_$SEC_PRODUCT"
echo
return
fi
echo 'boot.img ->' $OUT_DIR
cp $KERNEL_DIR/arch/arm/boot/zImage $OUT_DIR/zImage
$OUT_HOSTBIN_DIR/mkbootimg --kernel $OUT_DIR/zImage --ramdisk $OUT_DIR/ramdisk-uboot.img -o $OUT_DIR/boot.img
check_exit
echo 'update.zip ->' $OUT_DIR
zip -j $OUT_DIR/update.zip $OUT_DIR/android-info.txt $OUT_DIR/boot.img $OUT_DIR/system.img
check_exit
echo
echo '[[[[[[[ Transfer images to $TFTP_DIR ]]]]]]]'
echo
cd $OUT_DIR/../../../..
transfer_img $OUT_DIR/ramdisk-uboot.img
transfer_img $OUT_DIR/system.img
transfer_img $OUT_DIR/userdata.img
transfer_img $OUT_DIR/zImage
echo
}
echo
echo ' Build android for '$SEC_PRODUCT''
echo
if [ ! -d $TFTP_DIR ] ; then
mkdir -p $TFTP_DIR
fi
if [ $SEC_PRODUCT = "blade" ]
then
echo
echo "Have set SEC_PRODUCT = blade"
echo "Build zte V880 android blade"
echo " export SEC_PRODUCT=blade"
echo
else
echo
echo "Have set SEC_PRODUCT = generic"
echo "Build zte V880 android generic"
echo " export SEC_PRODUCT=generic"
echo
fi
build_android
#make_uboot_img
#make_fastboot_img
echo
echo '[[[[[[[ Transfer images to $TFTP_DIR ]]]]]]]'
echo
cd $OUT_DIR/../../../..
transfer_img $OUT_DIR/ramdisk.img
transfer_img $OUT_DIR/system.img
transfer_img $OUT_DIR/userdata.img
cp $KERNEL_DIR/arch/arm/boot/zImage $OUT_DIR/zImage
echo ok success !!!
exit 0