41A-CompileScript.sh 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558
  1. #!/bin/bash
  2. #/////////////////////////////////////////////////////////////////#
  3. #////// 其他变量定义,全大写 //////#
  4. # 工作空间目录;
  5. WORK_DIR=$(pwd)
  6. echo "$WORK_DIR"
  7. # Android目录;
  8. ANDROID_DIR=${WORK_DIR}"/kernel/android/R"
  9. # 配置文件;
  10. PROJECT_NAME="CASPER.cfg"
  11. # Dailybuild输出目录;
  12. RTK_DAILYBUILD_OUTPUT_PATH=${WORK_DIR}"/kernel/system/tmp/dailybuild_output"
  13. # Key目录;
  14. KEY_OPTION=${ANDROID_DIR}"/device/tv051/R3/Releasekeys"
  15. # 是否增量编译OTA包(Incremental Compilation OTA),只用于Arg_BuildMark=1时,即Dailybuild才需要;
  16. # 星期四:全量编译OTA;
  17. # 星期五:增量编译OTA;
  18. IC_OTA=false
  19. # SVN路径;
  20. SCBC_APPS_SVN_SRC_APK=https://odm-design-center-hz.tclking.com/svn/scbc_apps/trunk/app/apk
  21. # 重定向输出日志;
  22. REDIRECT_LOG=false
  23. # 日志文件;
  24. LOG_FILE=${WORK_DIR}/Target/build.log
  25. # 是否编译中间件;
  26. export TV_MIDWARE_MAKE=false
  27. # 是否安装RTK的APP,即RTK公版;
  28. export RTK_TV_APK_INSTALL=false
  29. # 是否开启远场语音;
  30. # export Argument_FarfieldVoice=true
  31. # 版本号;
  32. export SCBC_PRODUCT_VERSION="V8-T841AGL-LF1V001"
  33. BRAND="CASPER"
  34. PRODUCT="CASPER"
  35. # 松下品牌AudioLink要置为true,AudioConnectl置为false;
  36. # 非松下品牌则与上描述设置反过来;
  37. export AudioLink=false
  38. export AudioConnect=true
  39. #/////////////////////////////////////////////////////////////////#
  40. # 获取参数个数使用: $#
  41. echo "外部参数个数="$#
  42. # 定义外部参数,命名要求:匈牙利命名,带前缀Arg_.
  43. # 每个参数意义,需要明确说明,请参照以下方式添加新参数;
  44. #/////////////////////////////////////////////////////////////////#
  45. # 外部参数定义: 字符串类型、布尔类型、数字类型;
  46. Arg_CodeSync=true # 是否需要更新代码;
  47. Arg_BuildRelease='' # 编译的Img类型:2=Debug、1=Release(CTS\user);
  48. Arg_BuildOTA=false # 是否编译OTA包;
  49. Arg_VersionNum='' # 编译版本号;
  50. Arg_CleanBuild=false # 是否Clean编译;
  51. Arg_BrandName='' # 编译的品牌名称;
  52. Arg_FarfieldVoice=true # 是否开启远场语音;
  53. Arg_MakeTVMidware=false # 是否编译TVMidware
  54. Arg_InstallRTKAPK=false # 是否安装RTK APK,即RTK公版;
  55. Arg_BuildMark=0 # 编译类型:给一个编译标志,用于区分某些编译的不同,如1=Dailybuild, 0=普通编译;
  56. #/////////////////////////////////////////////////////////////////#
  57. # 解析外部参数;
  58. parseArgument()
  59. {
  60. echo "func=parseArgument"
  61. # 遍历参数;
  62. for arg in $*
  63. do
  64. if [[ $arg == *'='* ]];then
  65. # 获取参数值;
  66. key=${arg%%=*}
  67. val=${arg#*=}
  68. echo -e $arg "\t\t\t取等号左边值:"${key} "\t\t\t取等号右边值:"${val}
  69. # 新增外部参数时,请依次添加;
  70. if [ ${key} = 'Arg_BuildRelease' ];then
  71. Arg_BuildRelease=${val}
  72. fi
  73. if [ ${key} = 'Arg_BuildOTA' ];then
  74. Arg_BuildOTA=${val}
  75. fi
  76. if [ ${key} = 'Arg_VersionNum' ];then
  77. Arg_VersionNum=${val}
  78. fi
  79. if [ ${key} = 'Arg_CleanBuild' ];then
  80. Arg_CleanBuild=${val}
  81. fi
  82. if [ ${key} = 'Arg_BrandName' ];then
  83. Arg_BrandName=${val}
  84. fi
  85. if [ ${key} = 'Arg_FarfieldVoice' ];then
  86. Arg_FarfieldVoice=${val}
  87. fi
  88. if [ ${key} = 'Arg_MakeTVMidware' ];then
  89. Arg_MakeTVMidware=${val}
  90. fi
  91. if [ ${key} = 'Arg_InstallRTKAPK' ];then
  92. Arg_InstallRTKAPK=${val}
  93. fi
  94. if [ ${key} = 'Arg_BuildMark' ];then
  95. Arg_BuildMark=${val}
  96. fi
  97. fi
  98. done
  99. REDIRECT_LOG=true
  100. }
  101. # 用户手动选择参数进行编译;
  102. manualArgument()
  103. {
  104. echo "==================================================================================="
  105. echo "默认客户版本号:V8-T851MGL-LF1V001"
  106. echo "==================================================================================="
  107. echo "请输入版本号[Please type version]"
  108. read -p "[V8-T841AGL-LF1V001]" Arg_VersionNum
  109. echo "CTS or not?"
  110. read -p "[1-CTS 2-Debug ]" Arg_BuildRelease
  111. echo "Build OTA package or not?"
  112. read -p "[y/n]" Arg_BuildOTA
  113. echo "是否启用远场语音[n/y]?"
  114. read -p "[n/y]" Arg_FarfieldVoice
  115. echo "Clean or not?"
  116. read -p "[n/y]" Arg_CleanBuild
  117. echo "是否编译中间件"
  118. read -p "[n/y]" Arg_MakeTVMidware
  119. echo "是否编译RTK公版?"
  120. read -p "[n/y]" Arg_InstallRTKAPK
  121. read -p "编译标志位
  122. [
  123. 0-Normal(defualt) 1-Dailybuild
  124. ] " Arg_BuildMark
  125. }
  126. # 初始化参数;
  127. initArgument()
  128. {
  129. # 删除上一次的编译文件;
  130. rm -rf ${WORK_DIR}/Target
  131. mkdir ${WORK_DIR}/Target
  132. # 当REDIRECT_LOG=true时,重定向输出;
  133. if [ ${REDIRECT_LOG} = true ]; then
  134. if [ -f ${LOG_FILE} ]; then
  135. rm -f ${LOG_FILE}
  136. fi
  137. # 重定向Log到文件中;
  138. exec 1>>${LOG_FILE}
  139. exec 2>>${LOG_FILE}
  140. fi
  141. # 用户不给版本号,设置默认值;
  142. if [ x$Arg_VersionNum = "x" ];then
  143. Arg_VersionNum=V8-T841AGL-LF1V001
  144. fi
  145. # 远场语音设置:用户选择n不开启,否则不选或y都为开启;
  146. if [ x$Arg_FarfieldVoice = "xn" ]; then
  147. Arg_FarfieldVoice=false
  148. else
  149. Arg_FarfieldVoice=true
  150. fi
  151. # 用户不选择OTA编译,则默认为false;
  152. if [ x$Arg_BuildOTA = "x" ]; then
  153. Arg_BuildOTA=false
  154. fi
  155. # Clean编译:用户手动选择,则true,否则不选或n都为关闭;
  156. if [ x$Arg_CleanBuild = "xy" ]; then
  157. Arg_CleanBuild=true
  158. else
  159. Arg_CleanBuild=false
  160. fi
  161. # 编译类型:用户不选择则默认user(CTS);
  162. if [ x$Arg_BuildRelease = "x" ]; then
  163. Arg_BuildRelease=1
  164. fi
  165. # 将字串小写比较;
  166. if [ x${Arg_BuildRelease,} = "xdebug" ]; then
  167. Arg_BuildRelease=2
  168. fi
  169. if [ x${Arg_BuildRelease,} = "xrelease" ]; then
  170. Arg_BuildRelease=1
  171. fi
  172. # 编译中间件,默认false;
  173. if [ x$Arg_MakeTVMidware = "xy" ]; then
  174. Arg_MakeTVMidware=true
  175. else
  176. Arg_MakeTVMidware=false
  177. fi
  178. # rtk公版;
  179. if [ x$Arg_InstallRTKAPK = "xy" ]; then
  180. Arg_InstallRTKAPK=true
  181. # RTK公版不能编译中间件;
  182. Arg_MakeTVMidware=false
  183. fi
  184. if [ x$Arg_InstallRTKAPK = "xn" ]; then
  185. Arg_InstallRTKAPK=false
  186. fi
  187. # Arg_BuildMark,无选或大于范围的值默认为Normal编译;
  188. if [ x$Arg_BuildMark = "x" ] || [ $Arg_BuildMark -gt 1 ]; then
  189. Arg_BuildMark=0
  190. fi
  191. #export TV_MIDWARE_MAKE=${Arg_MakeTVMidware}
  192. export SCBC_PRODUCT_VERSION=${Arg_VersionNum}
  193. export RTK_TV_APK_INSTALL=${Arg_InstallRTKAPK}
  194. # export Argument_FarfieldVoice=${Arg_FarfieldVoice}
  195. echo "==================================================================================="
  196. echo "SCBC_PRODUCT_VERSION: ${SCBC_PRODUCT_VERSION}"
  197. echo "RTK_TV_APK_INSTALL: ${Arg_InstallRTKAPK}"
  198. # echo "Arg_FarfieldVoice: ${Arg_FarfieldVoice}"
  199. echo "Arg_BuildOTA: ${Arg_BuildOTA}"
  200. echo "Arg_CleanBuild: ${Arg_CleanBuild}"
  201. echo "==================================================================================="
  202. echo "软件版本(version): ${Arg_VersionNum} "
  203. echo "CTS版本编译: ${Arg_BuildRelease} "
  204. #echo "TV_MIDWARE_MAKE: ${Arg_MakeTVMidware} "
  205. echo "Arg_InstallRTKAPK: ${Arg_InstallRTKAPK} "
  206. echo "Arg_BuildMark: ${Arg_BuildMark} "
  207. echo "==================================================================================="
  208. }
  209. pre_build()
  210. {
  211. HEAD_VERSION=`svn info $SCBC_APPS_SVN_SRC_APK|grep Revision|cut -d' ' -f2`
  212. if [ -z "$HEAD_VERSION" ]; then
  213. echo "HEAD_VERSION is empty 退出编译"
  214. exit;
  215. fi
  216. cd ${WORK_DIR}
  217. ./kernel/android/R/device/tv051/R3/update_debug_apps.sh
  218. ./kernel/android/R/device/tv051/R3/save_apps_svn.sh
  219. }
  220. build_img()
  221. {
  222. rm -rf ${ANDROID_DIR}/signed-target_files.zip
  223. rm -rf ${ANDROID_DIR}/signed-ota_update.zip
  224. rm -rf ${WORK_DIR}/image_creator/*.img
  225. rm -rf ${WORK_DIR}/kernel/system/tmp/dailybuild_output
  226. if [ ${Arg_BuildRelease} -eq 1 ];then
  227. COMPILEMODE="user"
  228. else
  229. COMPILEMODE="userdebug"
  230. fi
  231. if [ ${Arg_CleanBuild} = true ];then
  232. make_img_clean
  233. else
  234. make_img_noclean
  235. fi
  236. }
  237. #报错退出
  238. make_error_exit()
  239. {
  240. if [ "$(echo $?)" != "0" ]; then
  241. echo "There is a error , The compiler is fail !!!!"
  242. exit
  243. fi
  244. }
  245. #编译kernel
  246. make_kernel()
  247. {
  248. echo "Start make linux kernel"
  249. #./build_android.sh [-p project_name] [-c y/n] [-v Build_variant] [-d device_name] {-j job} {-k key_path}
  250. cd ${WORK_DIR}/kernel/system
  251. #./build_android.sh -p $PROJECT_NAME -c n -v $COMPILEMODE -j 12 -k $KEY_OPTION -V n
  252. make_error_exit
  253. echo "make linux kernel succeed"
  254. }
  255. #编译kernel and Android
  256. make_img_clean()
  257. {
  258. echo "make_img_clean"
  259. cd ${WORK_DIR}/kernel/system
  260. case $COMPILEMODE in
  261. user)
  262. ./build_android.sh -p $PROJECT_NAME -c y -v $COMPILEMODE -j 8 -k $KEY_OPTION -o y
  263. ;;
  264. *)
  265. if [ $Arg_BuildOTA = true ];then
  266. ./build_android.sh -p $PROJECT_NAME -c y -v $COMPILEMODE -j 8 -k $KEY_OPTION -o y
  267. else
  268. ./build_android.sh -p $PROJECT_NAME -c y -v $COMPILEMODE -j 8 -o y
  269. fi
  270. make_error_exit
  271. ;;
  272. esac
  273. cd ${WORK_DIR}/image_creator
  274. python create_rtk_image.py --profile=CASPER_allpackage.cfg --bootcode=n --outfile=install_wipe.img --clean_factory=n
  275. make_error_exit
  276. }
  277. #编译kernel and Android noclean
  278. make_img_noclean()
  279. {
  280. echo "make_img_noclean"
  281. cd ${WORK_DIR}/kernel/system
  282. #./build_android.sh [-p project_name] [-c y/n] [-v Build_variant] [-d device_name] {-j job} {-k key_path}
  283. #./build_android.sh -p CASPER.cfg -c n -v userdebug -j 8
  284. case $COMPILEMODE in
  285. user)
  286. ./build_android.sh -p $PROJECT_NAME -c n -v $COMPILEMODE -j 8 -k $KEY_OPTION -o y
  287. make_error_exit
  288. ;;
  289. *)
  290. if [ $Arg_BuildOTA = true ];then
  291. ./build_android.sh -p $PROJECT_NAME -c n -v $COMPILEMODE -j 8 -k $KEY_OPTION -o y
  292. else
  293. ./build_android.sh -p $PROJECT_NAME -c n -v $COMPILEMODE -j 8 -o y
  294. fi
  295. make_error_exit
  296. ;;
  297. esac
  298. cd ${WORK_DIR}/image_creator
  299. python create_rtk_image.py --profile=CASPER_allpackage.cfg --bootcode=n --outfile=install_wipe.img --clean_factory=n
  300. make_error_exit
  301. }
  302. # 复制结果(同时需要处理OTA增量编译);
  303. copy_file()
  304. {
  305. if [ $Arg_BuildRelease -eq 1 ];then
  306. OutputDir="${Arg_VersionNum}"-CTS
  307. else
  308. OutputDir=${Arg_VersionNum}
  309. fi
  310. mkdir -p ${WORK_DIR}/Target/${OutputDir}/BOOT
  311. mkdir -p ${WORK_DIR}/Target/${OutputDir}/OTA
  312. mkdir -p ${WORK_DIR}/Target/${OutputDir}/USB
  313. mkdir -p ${WORK_DIR}/Target/${OutputDir}/WIPE
  314. mkdir -p ${WORK_DIR}/Target/${OutputDir}/Write
  315. mkdir -p ${WORK_DIR}/Target/${OutputDir}/Reports
  316. mkdir -p ${WORK_DIR}/Target/${OutputDir}/OTA/IncrementalOTA
  317. if [ $Arg_BuildRelease -eq 1 ];then
  318. cd ${WORK_DIR}/kernel/android/R/vendor/realtek/tool/image_file_creator
  319. cp install_user_2K_RTD28XOB8_A1_TV051_R3_2K.img ${WORK_DIR}/Target/${OutputDir}/USB/${OutputDir}.img
  320. md5sum ${WORK_DIR}/Target/${OutputDir}/USB/${OutputDir}.img > ${WORK_DIR}/Target/${OutputDir}/USB/MD5.txt
  321. cp -f ${ANDROID_DIR}/signed-target_files.zip ${WORK_DIR}/Target/${OutputDir}/OTA/"${OutputDir}"-target_files.zip
  322. cp -f ${ANDROID_DIR}/signed-ota_update.zip ${WORK_DIR}/Target/${OutputDir}/OTA/"${OutputDir}"-ota_update.zip
  323. md5sum ${WORK_DIR}/Target/${OutputDir}/OTA/"${OutputDir}"-target_files.zip > ${WORK_DIR}/Target/${OutputDir}/OTA/MD5_target_files.txt
  324. md5sum ${WORK_DIR}/Target/${OutputDir}/OTA/"${OutputDir}"-ota_update.zip > ${WORK_DIR}/Target/${OutputDir}/OTA/MD5_ota_update.zip.txt
  325. else
  326. cd ${WORK_DIR}/kernel/android/R/vendor/realtek/tool/image_file_creator
  327. cp install_userdebug_2K_RTD28XOB8_A1_TV051_R3_2K.img ${WORK_DIR}/Target/${OutputDir}/USB/${OutputDir}.img
  328. md5sum ${WORK_DIR}/Target/${OutputDir}/USB/${OutputDir}.img > ${WORK_DIR}/Target/${OutputDir}/USB/MD5.txt
  329. if [ $Arg_BuildOTA = true ];then
  330. cp -f ${ANDROID_DIR}/signed-target_files.zip ${WORK_DIR}/Target/${OutputDir}/OTA/"${OutputDir}"-target_files.zip
  331. cp -f ${ANDROID_DIR}/signed-ota_update.zip ${WORK_DIR}/Target/${OutputDir}/OTA/"${OutputDir}"-ota_update.zip
  332. md5sum ${WORK_DIR}/Target/${OutputDir}/OTA/"${OutputDir}"-ota_update.zip > ${WORK_DIR}/Target/${OutputDir}/OTA/MD5_ota_update.zip.txt
  333. md5sum ${WORK_DIR}/Target/${OutputDir}/OTA/"${OutputDir}"-target_files.zip > ${WORK_DIR}/Target/${OutputDir}/OTA/MD5_target_files.txt
  334. fi
  335. fi
  336. cp -f ${ANDROID_DIR}/out/target/product/R3/system/build.prop ${WORK_DIR}/Target/${OutputDir}/USB/
  337. cd ${WORK_DIR}/kernel/android/R/vendor/realtek/tool/image_file_creator
  338. cp install_wipe.img ${WORK_DIR}/Target/${OutputDir}/WIPE/"${OutputDir}"-wipe.img
  339. md5sum ${WORK_DIR}/Target/${OutputDir}/WIPE/*.img > ${WORK_DIR}/Target/${OutputDir}/WIPE/MD5_WIPE.txt
  340. cp -f ${WORK_DIR}//kernel/fw/bootcode/RTD28XOB8_A1_TV051_R3_2K/* ${WORK_DIR}/Target/${OutputDir}/BOOT/
  341. md5sum ${WORK_DIR}/Target/${OutputDir}/BOOT/bootcode_for_rtice.bin > ${WORK_DIR}/Target/${OutputDir}/BOOT/MD5_bootcode_for_rtice.txt
  342. md5sum ${WORK_DIR}/Target/${OutputDir}/BOOT/bootloader.img > ${WORK_DIR}/Target/${OutputDir}/BOOT/MD5_bootloader_img.txt
  343. md5sum ${WORK_DIR}/Target/${OutputDir}/BOOT/bootloader.pkg > ${WORK_DIR}/Target/${OutputDir}/BOOT/MD5_bootloader_pkg.txt
  344. md5sum ${WORK_DIR}/Target/${OutputDir}/BOOT/dvrboot.exe.bin > ${WORK_DIR}/Target/${OutputDir}/BOOT/MD5_dvrboot.exe.txt
  345. md5sum ${WORK_DIR}/Target/${OutputDir}/BOOT/dvrboot.rescue.exe.bin> ${WORK_DIR}/Target/${OutputDir}/BOOT/MD5_dvrboot_rescue_exe.txt
  346. # 处理Dailybuild 增量编译;
  347. if [ $Arg_BuildMark -eq 1 ]; then
  348. # 获取周几:0~6 星期天~星期六
  349. week=$(date +%w)
  350. # 周五:增量编译OTA,需要保存周四的全量包;
  351. if [ ${week} -eq 4 ]; then
  352. day=$(date +%m%d)
  353. echo "保存周四全量编译OTA包,用于周五增量编译OTA" # /home/exchange/Dailybuild/ 该目录必须存在且有权限;
  354. mkdir /home/exchange/Dailybuild/RTK2841A_OTA_$day/
  355. cp -r ${WORK_DIR}/Target/${OutputDir}/OTA/*-target_files.zip /home/exchange/Dailybuild/RTK2841A_OTA_$day/
  356. fi
  357. fi
  358. }
  359. # 保存apk;
  360. save_apk_svn()
  361. {
  362. cp ${ANDROID_DIR}/vendor/tv051/app/prebuilt_app/save_apk_svn ${WORK_DIR}/Target/${OutputDir}/Reports
  363. }
  364. # 保存版本号文件;
  365. save_version_number()
  366. {
  367. var_d=$(date '+%Y%m%d%H')
  368. version_number="${Arg_VersionNum}"_"$var_d"
  369. cd ${WORK_DIR}
  370. repo manifest -r -o ./$version_number.xml
  371. cp -r ${WORK_DIR}/$version_number.xml ${WORK_DIR}/Target/${OutputDir}/Reports/
  372. rm ${WORK_DIR}/$version_number.xml
  373. }
  374. getold()
  375. {
  376. cd ${WORK_DIR}/OTA/old/
  377. files=$(ls $path)
  378. A=".zip";
  379. for filename1 in $files
  380. do
  381. if [[ $filename1 == *$A* ]] ; then
  382. echo "getold-ota"$filename1
  383. break
  384. fi
  385. done
  386. }
  387. getnew()
  388. {
  389. cd ${WORK_DIR}/OTA/new/
  390. files=$(ls $path)
  391. B=".zip";
  392. for filename2 in $files
  393. do
  394. if [[ $filename2 == *$B* ]] ; then
  395. echo "getnew-ota="$filename2
  396. break
  397. fi
  398. done
  399. }
  400. makeota_diff()
  401. {
  402. otaname="51M"_"$filename1"_"$filename2"
  403. cd ${ANDROID_DIR}
  404. ./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
  405. md5sum ${WORK_DIR}/OTA/IncrementalOTA/$otaname.zip > ${WORK_DIR}/OTA/IncrementalOTA/MD5_incrementalOTA.txt
  406. }
  407. make_incrementalOTA()
  408. {
  409. yesterday=$(date -d"-1 day" +%m%d )
  410. cp -r /home/exchange/Dailybuild/RTK2841A_OTA_$yesterday/*-target_files.zip ${WORK_DIR}/OTA/old/
  411. cp -r ${WORK_DIR}/Target/${OutputDir}/OTA/*-target_files.zip ${WORK_DIR}/OTA/new/
  412. cd ${ANDROID_DIR}
  413. source build/envsetup.sh
  414. lunch NOKIA-userdebug
  415. getnew
  416. getold
  417. makeota_diff
  418. cp -r ${WORK_DIR}/OTA/IncrementalOTA/ ${WORK_DIR}/Target/${OutputDir}/OTA
  419. }
  420. EnableFarfieldVoice()
  421. {
  422. if [ ${Arg_FarfieldVoice} == true ]; then
  423. echo "开启远场语音"
  424. cd ${ANDROID_DIR}/device/tv051/R3/
  425. findstr=' device\/tv051\/R3\/etc\/permissions\/privapp-permissions-rtk.xml:system_ext\/etc\/permissions\/privapp-permissions-rtk.xml \\'
  426. newline=' device/tv051/R3/etc/permissions/echo_reference.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/echo_reference.xml \\'
  427. sed -i "/^$findstr/a\\$newline" device.mk
  428. fi
  429. }
  430. commitMidware()
  431. {
  432. Arg_MakeTVMidware=false # 41A不需要编译中间件;
  433. if [ $Arg_MakeTVMidware = true ]; then
  434. cd "${ANDROID_DIR}"/vendor/tv051/app/prebuilt_app/TVMidwareManager || exit
  435. midware_revision=$(svn info --show-item last-changed-revision)
  436. cd "${ANDROID_DIR}"/vendor/tv051/app/prebuilt_app/tvmidware/ || exit
  437. readme_midware_revision=$(sed -n '/revision/p' readme.txt | awk -F '=' '{print $2}')
  438. if [ $midware_revision -gt $readme_midware_revision ]; then
  439. cp -f ${ANDROID_DIR}/out/target/product/R3/system_ext/framework/tv-midware-manager.jar ${ANDROID_DIR}/vendor/tv051/app/prebuilt_app/tvmidware/tv-midware-manager.jar
  440. cp -f ${ANDROID_DIR}/out/target/product/R3/system_ext/framework/oat/arm/tv-midware-manager.odex ${ANDROID_DIR}/vendor/tv051/app/prebuilt_app/tvmidware/oat/arm/tv-midware-manager.odex
  441. cp -f ${ANDROID_DIR}/out/target/product/R3/system_ext/framework/oat/arm/tv-midware-manager.vdex ${ANDROID_DIR}/vendor/tv051/app/prebuilt_app/tvmidware/oat/arm/tv-midware-manager.vdex
  442. cd "${ANDROID_DIR}"/vendor/tv051/app/prebuilt_app/tvmidware || exit
  443. sed -i "s/revision=$readme_midware_revision/revision=$midware_revision/" readme.txt
  444. svn add tv-midware-manager.jar
  445. svn add readme.txt
  446. svn add oat/
  447. svn commit -m "dailybuild commit revision $midware_revision"
  448. fi
  449. cd "${ANDROID_DIR}"/vendor/tv051/app/prebuilt_app/ || exit
  450. rm -rf TVMidwareManager/
  451. fi
  452. }
  453. setMakeFileBuildNumber()
  454. {
  455. cd "${ANDROID_DIR}"/build/make || exit
  456. git checkout -- core/Makefile
  457. # 0:11 - 取左边11个字符判断是否="V8-T851MGL-LF1V"
  458. if [ ${Arg_VersionNum:0:15} == 'V8-T851MGL-LF1V' ]; then
  459. BUILD_NUMBER=${Arg_VersionNum:0-3} #0-3:取最后3位;
  460. else
  461. BUILD_NUMBER='dailybuild'${Arg_VersionNum##*debug}
  462. fi
  463. echo ${BUILD_NUMBER}
  464. sed -i "s/BF_BUILD_NUMBER := 000/BF_BUILD_NUMBER := ${BUILD_NUMBER}/g" core/Makefile
  465. sed -i "s/BUILD_NUMBER_FROM_FILE:= 000/BUILD_NUMBER_FROM_FILE:= ${BUILD_NUMBER}/g" core/Makefile
  466. }
  467. compile()
  468. {
  469. setMakeFileBuildNumber
  470. pre_build
  471. build_img
  472. copy_file
  473. save_apk_svn
  474. save_version_number
  475. if [ $IC_OTA = true ];then
  476. make_incrementalOTA
  477. fi
  478. echo "$(date '+%Y-%m-%d %H:%S') compile finished"
  479. }
  480. main()
  481. {
  482. # 如果外部参数>0,解析参数;
  483. if [ $# -gt 0 ]; then
  484. parseArgument $@
  485. else
  486. manualArgument
  487. fi
  488. # 初始化参数;
  489. initArgument
  490. # 编译;
  491. compile
  492. }
  493. main $@