现在的位置: 首页 > 综合 > 正文

V880 源码编译小结

2014年02月28日 ⁄ 综合 ⁄ 共 3050字 ⁄ 字号 评论关闭

总算将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

       

抱歉!评论已关闭.