| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635 | 
							- #!/bin/bash
 
- export PATH=$(echo $PATH)
 
- #/////////////////////////////////////////////////////////////////#
 
- #////// 其他变量定义,全大写 //////#
 
- # 工作空间目录;
 
- WORK_DIR=$(pwd)
 
- # 日志文件;
 
- LOG_FILE=${WORK_DIR}/Target/build.log
 
- # 日期;
 
- CURR_TIME=$(date +"%Y-%m-%d %T")
 
- # Android目录;
 
- ANDROID_DIR=${WORK_DIR}"/kernel/android/R"
 
- # 配置文件;
 
- PROJECT_NAME="NOKIA.cfg"
 
- # Dailybuild输出目录;
 
- RTK_DAILYBUILD_OUTPUT_PATH=${WORK_DIR}"/kernel/system/tmp/dailybuild_output"
 
- # Key目录;
 
- KEY_OPTION=${ANDROID_DIR}"/device/tv051/R4/Releasekeys"
 
- # 是否增量编译OTA包(Incremental Compilation OTA),只用于Arg_BuildMark=1时,即Dailybuild才需要; 
 
- # 星期四:全量编译OTA;
 
- # 星期五:增量编译OTA;
 
- IC_OTA=false
 
- # SVN路径;
 
- SCBC_APPS_SVN_SRC_APK=https://odm-design-center-hz.tclking.com/svn/scbc_apps/trunk/app/apk
 
- # 是否编译中间件;
 
- export TV_MIDWARE_MAKE=false
 
- # 是否安装RTK的APP,即RTK公版;
 
- export RTK_TV_APK_INSTALL=false
 
- # 是否开启远场语音;
 
- export Argument_FarfieldVoice=true
 
- # 版本号;
 
- export SCBC_PRODUCT_VERSION="V8-T851MGL-LF1V001"
 
- #/////////////////////////////////////////////////////////////////#
 
- # 获取参数个数使用: $#
 
- echo "外部参数个数="$#
 
- # 定义外部参数,命名要求:匈牙利命名,带前缀Arg_.
 
- # 每个参数意义,需要明确说明,请参照以下方式添加新参数;
 
- #/////////////////////////////////////////////////////////////////#
 
- # 外部参数定义: 字符串类型、布尔类型、数字类型;
 
- Arg_RedirectLog=true                        # 是否重定向log;
 
- Arg_CodeSync=true                           # 是否需要更新代码;
 
- Arg_BuildRelease=''                         # 编译的Img类型:2=Debug、1=Release(CTS\user);
 
- Arg_BuildOTA=false                          # 是否编译OTA包;
 
- Arg_VersionNum=''                           # 编译版本号;
 
- Arg_CleanBuild=false                        # 是否Clean编译;
 
- Arg_BrandName=''                            # 编译的品牌名称;
 
- Arg_FarfieldVoice=true                      # 是否开启远场语音;
 
- Arg_MakeTVMidware=false                     # 是否编译TVMidware
 
- Arg_InstallRTKAPK=false                     # 是否安装RTK APK,即RTK公版;
 
- Arg_BuildMark=0                             # 编译类型:给一个编译标志,用于区分某些编译的不同,如1=Dailybuild, 0=普通编译;
 
- #/////////////////////////////////////////////////////////////////#
 
- # 解析外部参数;
 
- parseArgument()
 
- {
 
-     echo "func=parseArgument"
 
-     # 遍历参数;
 
-     for arg in $*
 
-     do
 
-         if [[ $arg == *'='* ]];then
 
-             # 获取参数值;
 
-             key=${arg%%=*}
 
-             val=${arg#*=}
 
-             echo -e $arg "\t\t\t取等号左边值:"${key} "\t\t\t取等号右边值:"${val}
 
-             # 新增外部参数时,请依次添加;
 
-             if [ ${key} = 'Arg_RedirectLog' ];then
 
-                 Arg_RedirectLog=${val}
 
-             fi
 
-             if [ ${key} = 'Arg_BuildRelease' ];then
 
-                 Arg_BuildRelease=${val}
 
-             fi
 
-             if [ ${key} = 'Arg_BuildOTA' ];then
 
-                 Arg_BuildOTA=${val}
 
-             fi
 
-             if [ ${key} = 'Arg_VersionNum' ];then
 
-                 Arg_VersionNum=${val}
 
-             fi
 
-             if [ ${key} = 'Arg_CleanBuild' ];then
 
-                 Arg_CleanBuild=${val}
 
-             fi
 
-             if [ ${key} = 'Arg_BrandName' ];then
 
-                 Arg_BrandName=${val}
 
-             fi
 
-             if [ ${key} = 'Arg_FarfieldVoice' ];then
 
-                 Arg_FarfieldVoice=${val}
 
-             fi
 
-             if [ ${key} = 'Arg_MakeTVMidware' ];then
 
-                 Arg_MakeTVMidware=${val}
 
-             fi
 
-             if [ ${key} = 'Arg_InstallRTKAPK' ];then
 
-                 Arg_InstallRTKAPK=${val}
 
-             fi
 
-             if [ ${key} = 'Arg_BuildMark' ];then
 
-                 Arg_BuildMark=${val}
 
-             fi
 
-         fi
 
-     done
 
- }
 
- # 用户手动选择参数进行编译;
 
- manualArgument()
 
- {
 
-     echo "==================================================================================="
 
-     echo "默认客户版本号:V8-T851MGL-LF1V001"
 
-     echo "==================================================================================="
 
-     echo "请输入版本号[Please type version]"
 
-     read -p "[V8-T851MGL-LF1V001]" Arg_VersionNum
 
-     echo "CTS or not?"
 
-     read -p "[1-CTS 2-Debug ]" Arg_BuildRelease
 
-     echo "Build OTA package or not?"
 
-     read -p "[y/n]" Arg_BuildOTA
 
-     echo "是否启用远场语音[n/y]?"
 
-     read -p "[n/y]" Arg_FarfieldVoice
 
-     echo "Clean or not?"
 
-     read -p "[n/y]" Arg_CleanBuild
 
-     echo "是否编译中间件"
 
-     read -p "[n/y]" Arg_MakeTVMidware
 
-     echo "是否编译RTK公版?"
 
-     read -p "[n/y]" Arg_InstallRTKAPK
 
-     read -p "编译标志位
 
-     [
 
-         0-Normal(defualt) 1-Dailybuild 
 
-     ] " Arg_BuildMark
 
- }
 
- redirectLog()
 
- {
 
-     if [ ${Arg_RedirectLog} = false ];then
 
-         echo -e "\n未开启日志重定向功能,无build.log生成!\n"
 
-     else
 
-         rm -rf ${WORK_DIR}/Target
 
-         if [ ! -d ${WORK_DIR}/Target ];then
 
-             mkdir ${WORK_DIR}/Target            
 
-         fi
 
-         # 重定向Log到文件中;
 
-         exec 1>>${LOG_FILE}
 
-         exec 2>>${LOG_FILE}
 
-     fi
 
- }
 
- # 初始化参数;
 
- initArgument()
 
- {
 
-     # 重定向日志;
 
-     redirectLog
 
-     echo "Start DateTime:${CURR_TIME}"
 
-     # 用户不给版本号,设置默认值;
 
-     if [ x$Arg_VersionNum = "x" ];then
 
-        Arg_VersionNum=V8-T851MGL-LF1V001
 
-     fi
 
-     # 远场语音设置:用户选择n不开启,否则不选或y都为开启;
 
-     if [ x$Arg_FarfieldVoice = "xy" ]; then
 
-         Arg_FarfieldVoice=true
 
-     elif [ x$Arg_FarfieldVoice = "xn" ]; then
 
-         Arg_FarfieldVoice=false
 
-     elif [ x$Arg_FarfieldVoice = "x" ]; then
 
-         Arg_FarfieldVoice=false
 
-     fi
 
-     # 用户不选择OTA编译,则默认为false;
 
-     if [ x$Arg_BuildOTA = "xy" ]; then
 
-         Arg_BuildOTA=true
 
-     elif [ x$Arg_BuildOTA = "xn" ]; then
 
-         Arg_BuildOTA=false
 
-     elif [ x$Arg_BuildOTA = "x" ]; then
 
-         Arg_BuildOTA=false
 
-     fi
 
-     # Clean编译:用户手动选择,则true,否则不选或n都为关闭;
 
-     if [ x$Arg_CleanBuild = "xy" ]; then
 
-         Arg_CleanBuild=true
 
-     elif [ x$Arg_CleanBuild = "x" ];then
 
-         Arg_CleanBuild=false
 
-     elif [ x$Arg_CleanBuild = "xn" ];then
 
-         Arg_CleanBuild=false
 
-     fi
 
-     
 
-     # 编译类型:用户不选择则默认Debug;
 
-     if [ x$Arg_BuildRelease = "xy" ]; then
 
-         Arg_BuildRelease=1
 
-     elif [ x$Arg_BuildRelease = "xn" ]; then
 
-         Arg_BuildRelease=2
 
-     elif [ x$Arg_BuildRelease = "x" ]; then
 
-         Arg_BuildRelease=2
 
-     fi
 
-     # 将字串小写比较;
 
-     if [ x${Arg_BuildRelease,} = "xdebug" ]; then
 
-         Arg_BuildRelease=2
 
-     fi
 
-     if [ x${Arg_BuildRelease,} = "xrelease" ]; then
 
-         Arg_BuildRelease=1
 
-     fi
 
-     # 编译中间件,默认false;
 
-     if [ x$Arg_MakeTVMidware = "xy" ]; then
 
-         Arg_MakeTVMidware=true
 
-     elif [ x$Arg_MakeTVMidware = "xn" ]; then
 
-         Arg_MakeTVMidware=false
 
-     elif [ x$Arg_MakeTVMidware = "x" ]; then
 
-         Arg_MakeTVMidware=false
 
-     fi
 
-     # rtk公版;
 
-     if [ x$Arg_InstallRTKAPK = "xy" ]; then
 
-         Arg_InstallRTKAPK=true
 
-         # RTK公版不能编译中间件;
 
-         Arg_MakeTVMidware=false
 
-     elif [ x$Arg_InstallRTKAPK = "xn" ]; then
 
-         Arg_InstallRTKAPK=false
 
-     elif [ x$Arg_InstallRTKAPK = "x" ]; then
 
-         Arg_InstallRTKAPK=false
 
-     fi
 
-     # Arg_BuildMark,无选或大于范围的值默认为Normal编译;
 
-     if [ x$Arg_BuildMark = "x" ] || [ $Arg_BuildMark -gt 1 ]; then
 
-         Arg_BuildMark=0
 
-     fi
 
-     # Dailybuild专项处理;
 
-     if [ $Arg_BuildMark = 1 ];then
 
-         if [ $Arg_InstallRTKAPK = false ];then
 
-             # Dailybuild Moka版本号
 
-             Arg_VersionNum=V8-T851MGL-000$(date +"%m%d")
 
-         else
 
-             # Dailybuild RTK公版版本号
 
-             Arg_VersionNum=V8-T851MGL-001$(date +"%m%d")
 
-         fi
 
-     fi
 
-     # Dailybuild的特殊处理;
 
-     if [ $Arg_BuildMark -eq 1 ]; then
 
-         # 获取周几:0~6 星期天~星期六
 
-         week=$(date +%w)
 
-         # 周四:全量编译OTA;
 
-         if [ ${week} -eq 4 ]; then
 
-             IC_OTA=false
 
-             Arg_BuildOTA=true
 
-             echo "全量编译OTA包"
 
-         fi
 
-         # 周五:增量编译OTA;
 
-         if [ ${week} -eq 5 ]; then
 
-             IC_OTA=true
 
-             Arg_BuildOTA=true
 
-             echo "增量编译OTA包"
 
-         fi 
 
-     fi
 
-     export TV_MIDWARE_MAKE=${Arg_MakeTVMidware}
 
-     export SCBC_PRODUCT_VERSION=${Arg_VersionNum}
 
-     export RTK_TV_APK_INSTALL=${Arg_InstallRTKAPK}
 
-     export Argument_FarfieldVoice=${Arg_FarfieldVoice}
 
-     echo "==================================================================================="
 
-     echo "SCBC_PRODUCT_VERSION:         ${SCBC_PRODUCT_VERSION}"
 
-     echo "RTK_TV_APK_INSTALL:           ${Arg_InstallRTKAPK}"
 
-     echo "Arg_FarfieldVoice:            ${Arg_FarfieldVoice}"
 
-     echo "Arg_BuildOTA:                 ${Arg_BuildOTA}"
 
-     echo "Arg_CleanBuild:               ${Arg_CleanBuild}"
 
-     echo "==================================================================================="
 
-     echo "软件版本(version):             ${Arg_VersionNum}    "
 
-     echo "CTS版本编译:                   ${Arg_BuildRelease}  "
 
-     echo "TV_MIDWARE_MAKE:              ${Arg_MakeTVMidware} "
 
-     echo "Arg_InstallRTKAPK:            ${Arg_InstallRTKAPK} "
 
-     echo "Arg_BuildMark:                ${Arg_BuildMark} "
 
-     echo "==================================================================================="
 
- }
 
- pre_build()
 
- {
 
-     HEAD_VERSION=`svn info $SCBC_APPS_SVN_SRC_APK|grep Revision|cut -d' ' -f2`
 
-     if [ -z "$HEAD_VERSION" ]; then
 
-         echo "HEAD_VERSION is empty 退出编译"
 
-         exit;
 
-     fi
 
-     #====================== 
 
-     cd ${ANDROID_DIR}/device/realtek/common
 
-     git checkout product/display/rtk_display_xhdpi.mk
 
-     cd ${ANDROID_DIR}/device/tv051/R4/
 
-     git checkout AndroidProducts.mk
 
-     #====================== 
 
-     if [ x$panel = "x2K" ] || [ x$panel = "x2k" ];then
 
-         echo "2K屏项目输出"
 
-         PROJECT_NAME="MOTOROLA.cfg"
 
-     else
 
-         echo "4K屏项目输出"
 
-     fi
 
-     #======================
 
-     cd ${WORK_DIR}
 
-     ./kernel/android/R/device/tv051/R4/update_debug_apps.sh
 
-     ./kernel/android/R/device/tv051/R4/save_apps_svn.sh
 
- }
 
- build_img()
 
- {   
 
-     rm -rf ${ANDROID_DIR}/signed-target_files.zip
 
-     rm -rf ${ANDROID_DIR}/signed-ota_update.zip
 
-     rm -rf ${WORK_DIR}/image_creator/*.img
 
-     rm -rf ${WORK_DIR}/kernel/system/tmp/dailybuild_output
 
-     
 
-     if [ ${Arg_BuildRelease} -eq 1 ];then
 
-         COMPILEMODE="user"
 
-     else
 
-         COMPILEMODE="userdebug"
 
-     fi 
 
-     if [ ${Arg_CleanBuild} = true ];then
 
-         make_img_clean  
 
-     else
 
-         make_img_noclean 
 
-     fi  
 
- }
 
- #报错退出
 
- make_error_exit() 
 
- {
 
-     if [ "$(echo $?)" != "0" ]; then  
 
-         echo "There is a error , The compiler is fail !!!!"
 
-         exit
 
-     fi 
 
- }
 
- #编译kernel
 
- make_kernel() 
 
- {
 
-    echo "Start make linux kernel"
 
-    #./build_android.sh [-p project_name] [-c y/n] [-v Build_variant] [-d device_name] {-j job} {-k key_path}
 
-    cd ${WORK_DIR}/kernel/system
 
-     #./build_android.sh -p $PROJECT_NAME -c n -v $COMPILEMODE -j 12 -k $KEY_OPTION -V n 
 
-    make_error_exit
 
-    echo "make linux kernel succeed"
 
- }
 
- #编译kernel and Android
 
- make_img_clean() 
 
- {
 
-     echo "make_img_clean"
 
-     cd ${WORK_DIR}/kernel/system
 
-     case $COMPILEMODE in
 
-     user)
 
-         ./build_android.sh -p $PROJECT_NAME -c y -v $COMPILEMODE -j 8 -k $KEY_OPTION -o y
 
-     ;;
 
-     *)
 
-         if [ $Arg_BuildOTA = true ];then
 
-             ./build_android.sh -p $PROJECT_NAME -c y -v $COMPILEMODE -j 8 -k $KEY_OPTION -o y  
 
-         else 
 
-             ./build_android.sh -p $PROJECT_NAME -c y -v $COMPILEMODE -j 8 -o y 
 
-         fi    
 
-         make_error_exit
 
-     ;;
 
-     esac
 
-     
 
-     cd ${WORK_DIR}/image_creator
 
-     if [ x$panel = "x2K" ] || [ x$panel = "x2k" ];then
 
-         echo "2K屏项目输出"
 
-         python create_rtk_image.py --profile=MOTOROLA_allpackage.cfg --bootcode=n --outfile=install_wipe.img --clean_factory=n
 
-     else
 
-         echo "4K屏项目输出"
 
-         python create_rtk_image.py --profile=NOKIA_allpackage.cfg --bootcode=n --outfile=install_wipe.img --clean_factory=n
 
-     fi
 
-     
 
-     make_error_exit
 
- }
 
- #编译kernel and Android noclean
 
- make_img_noclean() 
 
- {
 
-     echo "make_img_noclean"
 
-     cd ${WORK_DIR}/kernel/system
 
-     #./build_android.sh [-p project_name] [-c y/n] [-v Build_variant] [-d device_name] {-j job} {-k key_path}
 
-     #./build_android.sh -p CASPER.cfg -c n -v userdebug -j 8
 
-     case $COMPILEMODE in
 
-     user)
 
-         ./build_android.sh -p $PROJECT_NAME -c n -v $COMPILEMODE -j 8 -k $KEY_OPTION -o y
 
-         make_error_exit
 
-     ;;
 
-     *)
 
-         if [ $Arg_BuildOTA = true ];then
 
-             ./build_android.sh -p $PROJECT_NAME -c n -v $COMPILEMODE -j 8 -k $KEY_OPTION -o y  
 
-         else 
 
-             ./build_android.sh -p $PROJECT_NAME -c n -v $COMPILEMODE -j 8 -o y 
 
-         fi   
 
-         make_error_exit
 
-     ;;
 
-     esac
 
-     cd ${WORK_DIR}/image_creator
 
-     if [ x$panel = "x2K" ] || [ x$panel = "x2k" ];then
 
-         echo "2K屏项目输出"
 
-         python create_rtk_image.py --profile=MOTOROLA_allpackage.cfg --bootcode=n --outfile=install_wipe.img --clean_factory=n
 
-     else
 
-         echo "4K屏项目输出"
 
-         python create_rtk_image.py --profile=NOKIA_allpackage.cfg --bootcode=n --outfile=install_wipe.img --clean_factory=n
 
-     fi
 
-     make_error_exit
 
- }
 
- # 复制结果(同时需要处理OTA增量编译);
 
- copy_file() 
 
- {
 
-     if [ $Arg_BuildRelease -eq 1 ];then
 
-         OutputDir="${Arg_VersionNum}"-CTS
 
-     else
 
-         OutputDir=${Arg_VersionNum}
 
-     fi
 
-     if [ x$panel = "x2K" ] || [ x$panel = "x2k" ];then
 
-         echo "2K屏项目输出"
 
-         OutputDir="${OutputDir}"_2K
 
-     fi
 
-     mkdir  -p ${WORK_DIR}/Target/${OutputDir}/BOOT
 
-     mkdir  -p ${WORK_DIR}/Target/${OutputDir}/OTA
 
-     mkdir  -p ${WORK_DIR}/Target/${OutputDir}/USB
 
-     mkdir  -p ${WORK_DIR}/Target/${OutputDir}/WIPE
 
-     mkdir  -p ${WORK_DIR}/Target/${OutputDir}/Write
 
-     mkdir  -p ${WORK_DIR}/Target/${OutputDir}/Reports
 
-     mkdir  -p ${WORK_DIR}/Target/${OutputDir}/OTA/IncrementalOTA
 
-     if [ $Arg_BuildRelease -eq 1 ];then
 
-         cd ${WORK_DIR}/kernel/android/R/vendor/realtek/tool/image_file_creator
 
-         cp install_user_4K_RTD288OB7_C1R62_B2B_tv051_R4.img  ${WORK_DIR}/Target/${OutputDir}/USB/${OutputDir}.img
 
-         md5sum ${WORK_DIR}/Target/${OutputDir}/USB/${OutputDir}.img >  ${WORK_DIR}/Target/${OutputDir}/USB/MD5.txt
 
-         cp -f ${ANDROID_DIR}/signed-target_files.zip ${WORK_DIR}/Target/${OutputDir}/OTA/"${OutputDir}"-target_files.zip
 
-         cp -f ${ANDROID_DIR}/signed-ota_update.zip  ${WORK_DIR}/Target/${OutputDir}/OTA/"${OutputDir}"-ota_update.zip
 
-         md5sum ${WORK_DIR}/Target/${OutputDir}/OTA/"${OutputDir}"-target_files.zip >  ${WORK_DIR}/Target/${OutputDir}/OTA/MD5_target_files.txt
 
-         md5sum ${WORK_DIR}/Target/${OutputDir}/OTA/"${OutputDir}"-ota_update.zip >  ${WORK_DIR}/Target/${OutputDir}/OTA/MD5_ota_update.zip.txt
 
-     else
 
-         cd ${WORK_DIR}/kernel/android/R/vendor/realtek/tool/image_file_creator
 
-         cp install_userdebug_4K_RTD288OB7_C1R62_B2B_tv051_R4.img  ${WORK_DIR}/Target/${OutputDir}/USB/${OutputDir}.img 
 
-         md5sum ${WORK_DIR}/Target/${OutputDir}/USB/${OutputDir}.img >  ${WORK_DIR}/Target/${OutputDir}/USB/MD5.txt
 
-         
 
-         if [ $Arg_BuildOTA = true ];then
 
-             cp -f ${ANDROID_DIR}/signed-target_files.zip ${WORK_DIR}/Target/${OutputDir}/OTA/"${OutputDir}"-target_files.zip
 
-         cp -f ${ANDROID_DIR}/signed-ota_update.zip  ${WORK_DIR}/Target/${OutputDir}/OTA/"${OutputDir}"-ota_update.zip
 
-             md5sum ${WORK_DIR}/Target/${OutputDir}/OTA/"${OutputDir}"-ota_update.zip >  ${WORK_DIR}/Target/${OutputDir}/OTA/MD5_ota_update.zip.txt
 
-             md5sum ${WORK_DIR}/Target/${OutputDir}/OTA/"${OutputDir}"-target_files.zip >  ${WORK_DIR}/Target/${OutputDir}/OTA/MD5_target_files.txt
 
-         fi
 
-     fi 
 
-     cp -f ${ANDROID_DIR}/out/target/product/R4/system/build.prop  ${WORK_DIR}/Target/${OutputDir}/USB/
 
-     cd ${WORK_DIR}/kernel/android/R/vendor/realtek/tool/image_file_creator
 
-     cp install_wipe.img   ${WORK_DIR}/Target/${OutputDir}/WIPE/"${OutputDir}"-wipe.img 
 
-     md5sum ${WORK_DIR}/Target/${OutputDir}/WIPE/*.img >  ${WORK_DIR}/Target/${OutputDir}/WIPE/MD5_WIPE.txt
 
-     cp -f ${WORK_DIR}//kernel/fw/bootcode/RTD288OB7_C1R62_B2B_tv051_R4/*  ${WORK_DIR}/Target/${OutputDir}/BOOT/
 
-     md5sum ${WORK_DIR}/Target/${OutputDir}/BOOT/bootcode_for_rtice.bin >  ${WORK_DIR}/Target/${OutputDir}/BOOT/MD5_bootcode_for_rtice.txt
 
-     md5sum ${WORK_DIR}/Target/${OutputDir}/BOOT/bootloader.img >  ${WORK_DIR}/Target/${OutputDir}/BOOT/MD5_bootloader_img.txt
 
-     md5sum ${WORK_DIR}/Target/${OutputDir}/BOOT/bootloader.pkg >  ${WORK_DIR}/Target/${OutputDir}/BOOT/MD5_bootloader_pkg.txt
 
-     md5sum ${WORK_DIR}/Target/${OutputDir}/BOOT/dvrboot.exe.bin >  ${WORK_DIR}/Target/${OutputDir}/BOOT/MD5_dvrboot.exe.txt
 
-     md5sum ${WORK_DIR}/Target/${OutputDir}/BOOT/dvrboot.rescue.exe.bin>  ${WORK_DIR}/Target/${OutputDir}/BOOT/MD5_dvrboot_rescue_exe.txt
 
-     # 处理Dailybuild 增量编译;
 
-     if [ $Arg_BuildMark -eq 1 ]; then
 
-         # 获取周几:0~6 星期天~星期六
 
-         week=$(date +%w)
 
-         # 周五:增量编译OTA,需要保存周四的全量包;
 
-         if [ ${week} -eq 4 ]; then
 
-             day=$(date +%m%d)
 
-             echo "保存周四全量编译OTA包,用于周五增量编译OTA" # /home/exchange/Dailybuild/ 该目录必须存在且有权限;
 
-             mkdir /home/exchange/Dailybuild/RTK2851M_OTA_$day/
 
-             cp -r ${WORK_DIR}/Target/${OutputDir}/OTA/*-target_files.zip /home/exchange/Dailybuild/RTK2851M_OTA_$day/
 
-         fi 
 
-     fi
 
- }
 
- # 保存apk;
 
- save_apk_svn() 
 
- {
 
-     cp ${ANDROID_DIR}/vendor/tv051/app/prebuilt_app/save_apk_svn  ${WORK_DIR}/Target/${OutputDir}/Reports
 
- }
 
- # 保存版本号文件;
 
- save_version_number() 
 
- {
 
-     var_d=$(date '+%Y%m%d%H')
 
-     version_number="${Arg_VersionNum}"_"$var_d"
 
-     cd ${WORK_DIR}
 
-     repo manifest -r -o ./$version_number.xml
 
-     cp -r ${WORK_DIR}/$version_number.xml  ${WORK_DIR}/Target/${OutputDir}/Reports/
 
-     rm ${WORK_DIR}/$version_number.xml
 
- }
 
- getold()
 
- {
 
-     cd ${WORK_DIR}/OTA/old/
 
-     files=$(ls $path)
 
-     A=".zip";
 
-     for filename1 in $files
 
-     do
 
-         if [[ $filename1 == *$A* ]] ; then  
 
-             echo "getold-ota"$filename1
 
-             break
 
-         fi
 
-     done
 
- }
 
- getnew()
 
- {
 
-     cd ${WORK_DIR}/OTA/new/
 
-     files=$(ls $path)
 
-     B=".zip";
 
-     for filename2 in $files
 
-     do
 
-         if [[ $filename2 == *$B* ]] ; then  
 
-             echo "getnew-ota="$filename2
 
-             break
 
-         fi
 
-     done
 
- }
 
- makeota_diff()
 
- {
 
-     otaname="51M"_"$filename1"_"$filename2"
 
-     cd ${ANDROID_DIR}
 
-     ./build/tools/releasetools/ota_from_target_files --signapk_path ${ANDROID_DIR}/out/host/linux-x86/framework/signapk.jar  --signapk_shared_library_path  ${ANDROID_DIR}/out/host/linux-x86/lib64  -i  ${WORK_DIR}/OTA/old/$filename1  ${WORK_DIR}/OTA/new/$filename2  ${WORK_DIR}/OTA/IncrementalOTA/$otaname.zip
 
-     md5sum ${WORK_DIR}/OTA/IncrementalOTA/$otaname.zip >  ${WORK_DIR}/OTA/IncrementalOTA/MD5_incrementalOTA.txt
 
- }
 
- make_incrementalOTA()
 
- {
 
-     yesterday=$(date -d"-1 day" +%m%d )
 
-     cp -r /home/exchange/Dailybuild/RTK2851M_OTA_$yesterday/*-target_files.zip  ${WORK_DIR}/OTA/old/
 
-     cp -r ${WORK_DIR}/Target/${OutputDir}/OTA/*-target_files.zip  ${WORK_DIR}/OTA/new/
 
-     cd ${ANDROID_DIR}
 
-     source build/envsetup.sh
 
-     lunch NOKIA-userdebug
 
-     getnew
 
-     getold
 
-     makeota_diff
 
-     cp -r ${WORK_DIR}/OTA/IncrementalOTA/  ${WORK_DIR}/Target/${OutputDir}/OTA
 
- }
 
- EnableFarfieldVoice()
 
- {
 
-     if [ ${Arg_FarfieldVoice} == true ]; then
 
-         echo "开启远场语音"
 
-         cd ${ANDROID_DIR}/device/tv051/R4/
 
-         findstr='    device\/tv051\/R4\/etc\/permissions\/privapp-permissions-rtk.xml:system_ext\/etc\/permissions\/privapp-permissions-rtk.xml \\'
 
-         newline='    device/tv051/R4/etc/permissions/echo_reference.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/echo_reference.xml \\'
 
-         sed -i "/^$findstr/a\\$newline" device.mk
 
-     fi
 
- }
 
- commitMidware()
 
- {
 
-     if [ $Arg_MakeTVMidware = true ]; then
 
-         cd "${ANDROID_DIR}"/vendor/tv051/app/prebuilt_app/TVMidwareManager || exit
 
-         midware_revision=$(svn info --show-item last-changed-revision)
 
-         cd "${ANDROID_DIR}"/vendor/tv051/app/prebuilt_app/tvmidware/ || exit
 
-         readme_midware_revision=$(sed  -n '/revision/p' readme.txt | awk -F '=' '{print $2}')
 
-         if [ $midware_revision -gt $readme_midware_revision ]; then
 
-             cp -f ${ANDROID_DIR}/out/target/product/R4/system_ext/framework/tv-midware-manager.jar  ${ANDROID_DIR}/vendor/tv051/app/prebuilt_app/tvmidware/tv-midware-manager.jar
 
-             cp -f ${ANDROID_DIR}/out/target/product/R4/system_ext/framework/oat/arm/tv-midware-manager.odex   ${ANDROID_DIR}/vendor/tv051/app/prebuilt_app/tvmidware/oat/arm/tv-midware-manager.odex
 
-             cp -f ${ANDROID_DIR}/out/target/product/R4/system_ext/framework/oat/arm/tv-midware-manager.vdex   ${ANDROID_DIR}/vendor/tv051/app/prebuilt_app/tvmidware/oat/arm/tv-midware-manager.vdex
 
-             cd "${ANDROID_DIR}"/vendor/tv051/app/prebuilt_app/tvmidware || exit 
 
-             sed -i "s/revision=$readme_midware_revision/revision=$midware_revision/" readme.txt
 
-             svn add tv-midware-manager.jar
 
-             svn add readme.txt
 
-             svn add oat/
 
-             svn commit -m "dailybuild commit revision $midware_revision"
 
-         fi
 
-         cd "${ANDROID_DIR}"/vendor/tv051/app/prebuilt_app/ || exit
 
-         rm -rf  TVMidwareManager/
 
-     fi
 
- }
 
- setMakeFileBuildNumber()
 
- {
 
-     cd "${ANDROID_DIR}"/build/make || exit
 
-     git checkout -- core/Makefile
 
-     # 0:11 - 取左边11个字符判断是否="V8-T851MGL-LF1V"
 
-     if [ ${Arg_VersionNum:0:15} == 'V8-T851MGL-LF1V' ]; then
 
-         BUILD_NUMBER=${Arg_VersionNum:0-3} #0-3:取最后3位;        
 
-     else
 
-         BUILD_NUMBER='dailybuild'${Arg_VersionNum##*debug}
 
-     fi
 
-     echo ${BUILD_NUMBER}
 
-     sed -i "s/BF_BUILD_NUMBER := 000/BF_BUILD_NUMBER := ${BUILD_NUMBER}/g" core/Makefile
 
-     sed -i "s/BUILD_NUMBER_FROM_FILE:= 000/BUILD_NUMBER_FROM_FILE:= ${BUILD_NUMBER}/g" core/Makefile
 
- }
 
- compile()
 
- {
 
-     setMakeFileBuildNumber
 
-     pre_build
 
-     build_img
 
-     copy_file
 
-     save_apk_svn
 
-     save_version_number
 
-     if [ $IC_OTA = true ];then
 
-         make_incrementalOTA
 
-     fi
 
-     commitMidware
 
-     
 
-     echo "$(date '+%Y-%m-%d %H:%S') compile finished"
 
- }
 
- main()
 
- {
 
-     echo "Start main:${CURR_TIME}"
 
-     # 如果外部参数>0,解析参数;
 
-     if [ $# -gt 0 ]; then
 
-         parseArgument $@
 
-     else
 
-         manualArgument
 
-     fi
 
-     # 初始化参数;
 
-     initArgument
 
-     # 编译;
 
-     compile
 
-     echo "$(date '+%Y-%m-%d %H:%S') compile finished"
 
- }
 
- main $@
 
 
  |