gradlew.sh 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573
  1. #!/bin/sh
  2. # 编码要求:
  3. # 所有全大写变量均为全局变量;
  4. # 函数内部变量请使用非全大写;
  5. # 主目录;
  6. WORK_HOME="/home/data/ApkAutoCompile"
  7. # 参数1:apk源码路径;
  8. APK_SRC_DIR=$1
  9. # apk名称,源于源码路径,需要对带 _General 的删除后缀。
  10. APK_NAME=''
  11. # debug apk的svn版本号;
  12. APK_DEBUG_SVN_REVISION=$3
  13. # Debug Apk 根地址;
  14. APK_DEBUG_ROOT_URL='https://odm-design-center-hz.tclking.com/svn/scbc_apps/trunk/app/apk/01debug/general'
  15. # Release Apk 根地址;
  16. APK_RELEASE_ROOT_URL='https://odm-design-center-hz.tclking.com/svn/scbc_apps/trunk/app/apk/02release/general'
  17. # Apk源码根地址;
  18. APK_SRC_ROOT_URL='https://odm-design-center-hz.tclking.com/svn/scbc_apps/trunk/app/src'
  19. # APK 根路径;
  20. APK_ROOT_DIR="${WORK_HOME}/cacheAPK/general"
  21. # Debug Apk 根路径;
  22. APK_DEBUG_ROOT_DIR="${APK_ROOT_DIR}/Debug"
  23. # Release Apk 根路径;
  24. APK_RELEASE_ROOT_DIR="${APK_ROOT_DIR}/Release"
  25. # Debug Apk Log
  26. APK_DEBUG_LOG=$4
  27. # Gradle目录;
  28. GRADLE_HOME=/home/data/android/gradle/gradle-6.7.1
  29. # Android SDK 目录;
  30. ANDROID_SDK_HOME=/home/data/android/android_sdk/android-sdk-linux
  31. # 是否重新编译;
  32. REBUILD=$2
  33. # 当前要处理的APK的SVN路径;
  34. APK_SRC_URL=''
  35. # Build的apk路径;
  36. APK_BUILD_DIR=''
  37. # debug Apk 路径;
  38. APK_DEBUG_DIR=''
  39. # debug Apk 路径;
  40. APK_RELEASE_DIR=''
  41. # APK的版本号
  42. APK_VER_CODE=''
  43. # 中间件服务APK<https://odm-design-center-hz.tclking.com/svn/scbc_apps/trunk/TVMidware/debug/TVMidwareService>;
  44. APK_DIR_TVMidware="/home/data/ApkAutoCompile/cacheAPK/TVMidware"
  45. # 日期;
  46. CURR_TIME=$(date +"%Y-%m-%d %T")
  47. # 仓库类型:SVN或GIT
  48. REPO_TYPE='SVN'
  49. # 日志文件;
  50. if [ ! -d '/home/data/ApkAutoCompile/shell/log' ];then
  51. mkdir '/home/data/ApkAutoCompile/shell/log'
  52. fi
  53. LOG_FILE="/home/data/ApkAutoCompile/shell/log/gradlew-${APK_NAME}-$(date '+%d-%H%M%S').log"
  54. SwitchIntranet()
  55. {
  56. echo -e "\r\r---切换到内网---"
  57. route del default gw 10.201.40.1
  58. sleep 3s
  59. route del default gw 10.201.40.1
  60. sleep 3s
  61. route add default gw 10.201.40.1
  62. sleep 3s
  63. route add default gw 10.201.40.1
  64. }
  65. SwitchExternal()
  66. {
  67. echo -e "\r\r---切换到外网---"
  68. route del default gw 10.201.40.1
  69. sleep 3s
  70. route del default gw 10.201.40.1
  71. sleep 3s
  72. route del default gw 10.201.40.1
  73. }
  74. debug_apk_svn_commit()
  75. {
  76. echo -e "func-> debug_apk_svn_commit\n"
  77. SVN_DEBUG_APK_PATH=$1
  78. if [ -d ${SVN_DEBUG_APK_PATH} ];then
  79. local count=0
  80. cd ${SVN_DEBUG_APK_PATH}
  81. # 查找未提交或变更的文件;
  82. filelist=$(svn status)
  83. # 以"? "分组字符串;
  84. filearray=(${filelist//? /})
  85. for File in ${filearray[@]}
  86. do
  87. let count+=1
  88. # 如果是文件;
  89. if [ -f ${File} ];then
  90. msg=$(svn add ${File} 2>&1)
  91. echo -e "svn add file = ${File}, result=${msg}\n"
  92. elif [ -d ${File} ];then
  93. msg=$(svn add ${File} 2>&1)
  94. echo -e "svn add dir = ${File}, result=${msg}\n"
  95. fi
  96. done
  97. # 提交;
  98. echo "变化文件数量 = ${count}"
  99. if [ $count -gt 0 ];then
  100. cd ${SVN_DEBUG_APK_PATH}
  101. # 判断源码路径类型;
  102. if [ x${REPO_TYPE} == x'GIT' ];then
  103. echo "源码路径为git"
  104. # 获取源码版本;
  105. cd ${APK_SRC_DIR}
  106. shortId=$(git rev-parse --short HEAD 2>&1)
  107. lastChangedRev="Last Changed Rev: ${shortId}"
  108. cd ${SVN_DEBUG_APK_PATH}
  109. else
  110. # 获取源码版本;
  111. echo "源码路径为svn"
  112. lastChangedRev=$(svn info ${APK_SRC_DIR}|grep "Last Changed Rev" 2>&1)
  113. fi
  114. msg=$(svn commit -m "upgrade ${APK_NAME}.${APK_VER_CODE}. ${lastChangedRev}" 2>&1)
  115. echo -e "svn commit result=${msg}\n"
  116. if [[ $msg != *"Committed revision"* ]]; then
  117. echo -e "svn_commit:连接SVN服务器失败, 网络异常!\n"
  118. SwitchIntranet
  119. return 0
  120. else
  121. echo -e "提交svn成功\n"
  122. return 1
  123. fi
  124. else
  125. echo -e "无文件变化,不需要提交svn\n"
  126. return 0
  127. fi
  128. else
  129. echo -e "目录<${SVN_DEBUG_APK_PATH}>不存在,无法提交.\n"
  130. return 0
  131. fi
  132. }
  133. commitAPK(){
  134. echo "---------commitAPK------------"
  135. # 切回内网;
  136. SwitchIntranet
  137. sleep 10s
  138. echo "apk name = "${APK_NAME}
  139. if [ x${APK_NAME} == "xMiddleCommon" ];then
  140. if [ -d ${APK_DIR_TVMidware} ]; then
  141. cd ${APK_DIR_TVMidware}
  142. rm *
  143. fi
  144. svn_result=$(svn up 2>&1)
  145. if [[ $svn_result != *"Updated to revision"* ]] && [[ $svn_result != *"At revision"* ]]; then
  146. echo -e "svn up:连接SVN服务器失败, 网络异常!\n"
  147. fi
  148. cp ${APK_BUILD_DIR} ${APK_DIR_TVMidware}
  149. debug_apk_svn_commit ${APK_DIR_TVMidware}
  150. ls -l ${APK_DIR_TVMidware}
  151. else
  152. # copy apk
  153. if [ -d ${APK_DEBUG_DIR} ]; then
  154. cd ${APK_DEBUG_DIR}
  155. echo -e "APK_DEBUG_DIR=${APK_DEBUG_DIR}\n"
  156. ls -l ${APK_DEBUG_DIR}
  157. rm *
  158. svn_result=$(svn up 2>&1)
  159. echo -e "commitAPK:svn up结果=${svn_result}\n"
  160. if [[ $svn_result != *"Updated to revision"* ]] && [[ $svn_result != *"At revision"* ]]; then
  161. echo -e "commitAPK:连接SVN服务器失败, 网络异常!\n"
  162. SwitchIntranet
  163. fi
  164. else
  165. mkdir -p ${APK_DEBUG_DIR}
  166. fi
  167. cd ${APK_DEBUG_DIR}
  168. svn_lastChangedDate=$(svn info ${APK_SRC_DIR}|grep Date 2>&1)
  169. svn_lastChangedRev=$(svn info ${APK_SRC_DIR}|grep "Last Changed Rev" 2>&1)
  170. cp ${APK_BUILD_DIR} ${APK_DEBUG_DIR}
  171. debug_apk_svn_commit ${APK_DEBUG_DIR}
  172. echo -e "After apk copy, APK_DEBUG_DIR:"
  173. ls -l ${APK_DEBUG_DIR}
  174. fi
  175. #ensure under shell folder
  176. cd ${WORK_HOME}/shell
  177. echo -e "WORK_HOME PWD:$(pwd)\n"
  178. python3 -c "import builder;builder.updateProjectRev('$APK_SRC_DIR','$svn_lastChangedRev','$svn_lastChangedDate')"
  179. }
  180. compileGeneralApp()
  181. {
  182. echo "enter compileGeneralApp"
  183. # 需要单独处理两APK:FastCastTV、FastScreenV3.0的版本号获取问题
  184. if [ x${APK_NAME} == "xFastCastTV" ];then
  185. echo -e "\t单独处理此APK Local_FastScreenTV_CN"
  186. appVCodeT=$(cat "${APK_SRC_DIR}/Local_FastScreenTV/build.gradle"|grep versionCode |grep -v "getVersionNameByCode\|=\|flavorDimensions")
  187. elif [ x${APK_NAME} == "xFastScreenV3.0" ];then
  188. echo -e "\t单独处理此APK FastScreenV3.0"
  189. appVCodeT=$(cat "${APK_SRC_DIR}/AdvertisementActivity/build.gradle"|grep versionCode |grep -v "getVersionNameByCode\|=\|flavorDimensions")
  190. else
  191. appVCodeT=$(cat "${APK_SRC_DIR}/app/build.gradle"|grep versionCode |grep -v "getVersionNameByCode\|=\|flavorDimensions")
  192. fi
  193. # 查找apk版本号
  194. echo "appVCodeT=${appVCodeT}"
  195. if [ ${#appVCodeT} -eq 0 ];then
  196. echo -e "\tappVCode error"
  197. else
  198. vCode=$(echo $appVCodeT | tr -cd "[0-9]")
  199. echo -e "\tappVCode number:"$vCode
  200. mainVersionCode=$(expr $vCode / 100)
  201. childVersionCode=$(expr $vCode % 100)
  202. appDate=$(date +%Y%m%d)
  203. APK_VER_CODE="appVersionName:"$mainVersionCode"."$childVersionCode"."$appDate
  204. echo -e "\t$APK_VER_CODE"
  205. fi
  206. # route to google
  207. SwitchExternal
  208. sleep 10s
  209. #get release packet name
  210. releaseName=$(python3 -c 'import builder;print(builder.getReleaseName("'$APK_SRC_DIR'"))')
  211. echo -e "\treleaseName:"${releaseName}
  212. #compile app for release apk
  213. cp sabuild/local.properties $APK_SRC_DIR
  214. cd "$APK_SRC_DIR"
  215. echo -e "\tAPK_SRC_DIR,PWD:$(pwd)"
  216. chmod +x gradlew
  217. gradle --version
  218. # 判断文件是否存在;
  219. if [ -f "build.sh" ];then
  220. echo -e "\tbuild.sh"
  221. chmod +x build.sh
  222. ./build.sh
  223. else
  224. echo -e "\tNo build.sh"
  225. ./gradlew ${releaseName}
  226. fi
  227. #commit apk
  228. APK_BUILD_DIR=$(find ${APK_SRC_DIR} -name "*.apk")
  229. echo -e "\tAPK_BUILD_DIR:${APK_BUILD_DIR}"
  230. if [ ${#APK_BUILD_DIR} -eq 0 ];then
  231. echo -e "\tcompile apk fail"
  232. else
  233. tmp1=${APK_NAME%*_General}
  234. echo -e "\t==========APK_NAME=" ${APK_NAME}
  235. echo -e "\t==========tmp1=" ${tmp1}
  236. # P_APK_DIR="${APK_DIR_general}/${tmp1#*TIF_}"
  237. APK_DEBUG_DIR="${APK_DEBUG_ROOT_DIR}/${tmp1}"
  238. echo -e "\t==========APK_DEBUG_DIR=" ${APK_DEBUG_DIR}
  239. if [ ! -d ${APK_DEBUG_DIR} ];then
  240. mkdir ${APK_DEBUG_DIR}
  241. fi
  242. commitAPK
  243. fi
  244. }
  245. compileCustomApp(){
  246. echo -e "\tenter compileCustomApp"
  247. apkSections=$(python3 -c 'import builder;print(builder.getAPKSection("'$APK_SRC_DIR'"))')
  248. echo -e "\tapkSections:"${apkSections}
  249. }
  250. # 函数:是否需要更新本地svn目录;
  251. # 描述:判断本地svn目录版本与服务器版本是否一致;
  252. # 返回:0表示不需要更新本地svn目录, 1表示需要更新;
  253. IsUpdateSVN()
  254. {
  255. echo -e "\n\n==========执行函数:IsUpdate=========="
  256. SwitchIntranet
  257. # 如果目录不存在,直接返回需要更新;
  258. if [ ! -d ${APK_SRC_DIR} ]; then
  259. echo -e "目录[${APK_SRC_DIR}]不存在,需要更新\n"
  260. return 1
  261. fi
  262. # 获取本地目录的最新提交版本;
  263. svn_local_lcr=$(svn info ${APK_SRC_DIR}|grep "Last Changed Rev" 2>&1)
  264. echo -e "\r\r获取本地目录的最新提交版本="${svn_local_lcr}
  265. svn_local_lcr=${svn_local_lcr#*Last Changed Rev: }
  266. echo -e "\r\nLocal SVN Last Changed Revision=${svn_local_lcr}"
  267. # 查找服务器的地址;
  268. cd ${APK_SRC_DIR}
  269. APK_SRC_URL=$(svn info|grep "URL:" |grep -v "Relative URL:" 2>&1)
  270. echo -e "${APK_SRC_URL}"
  271. APK_SRC_URL=${APK_SRC_URL#*URL:}
  272. cd -
  273. # 获取服务器的最新提交版本;
  274. svn_server_lcr=$(svn info ${APK_SRC_URL}|grep "Last Changed Rev" 2>&1)
  275. if [[ $svn_server_lcr == *"svn: E170013: Unable to connect to a repository at URL"* ]]; then
  276. echo -e "连接SVN服务器失败, 网络异常=${svn_server_lcr}!\n"
  277. SwitchIntranet
  278. return 0
  279. fi
  280. svn_server_lcr=${svn_server_lcr#*Last Changed Rev: }
  281. echo -e "Server SVN Last Changed Revision=${svn_server_lcr}"
  282. # 比较版本号或日期;
  283. if [ ${svn_server_lcr} -gt ${svn_local_lcr} ];then
  284. echo -e "服务器版本大于本地目录版本号,需要更新"
  285. return 1
  286. fi
  287. if [ x${REBUILD} == "x1" ]; then
  288. echo -e "手动编译标记位"
  289. return 1
  290. fi
  291. echo -e "本地版本与服务器版本相同 ,不需要更新\n"
  292. return 0
  293. }
  294. IsUpdateGIT()
  295. {
  296. SwitchIntranet
  297. echo -e "\n\n==========执行函数:IsUpdate=========="
  298. # 如果目录不存在,直接返回需要更新;
  299. if [ ! -d ${APK_SRC_DIR} ]; then
  300. echo -e "\t目录[${APK_SRC_DIR}]不存在,需要更新\n"
  301. return 1
  302. fi
  303. # 获取本地目录的最新提交版本;
  304. svn_local_lcr=$(svn info ${APK_SRC_DIR}|grep "Last Changed Rev" 2>&1)
  305. echo -e "\r\r获取本地目录的最新提交版本="${svn_local_lcr}
  306. svn_local_lcr=${svn_local_lcr#*Last Changed Rev: }
  307. echo -e "\r\nLocal SVN Last Changed Revision=${svn_local_lcr}"
  308. # 查找服务器的地址;
  309. cd ${APK_SRC_DIR}
  310. APK_SRC_URL=$(svn info|grep "URL:" |grep -v "Relative URL:" 2>&1)
  311. echo -e "\t${APK_SRC_URL}"
  312. APK_SRC_URL=${APK_SRC_URL#*URL:}
  313. cd -
  314. # 获取服务器的最新提交版本;
  315. svn_server_lcr=$(svn info ${APK_SRC_URL}|grep "Last Changed Rev" 2>&1)
  316. if [[ $svn_server_lcr == *"svn: E170013: Unable to connect to a repository at URL"* ]]; then
  317. echo -e "\t连接SVN服务器失败, 网络异常=${svn_server_lcr}!\n"
  318. SwitchIntranet
  319. exit
  320. fi
  321. svn_server_lcr=${svn_server_lcr#*Last Changed Rev: }
  322. echo -e "\tServer SVN Last Changed Revision=${svn_server_lcr}"
  323. # 比较版本号或日期;
  324. if [ ${svn_server_lcr} -gt ${svn_local_lcr} ];then
  325. echo -e "\t服务器版本大于本地目录版本号,需要更新"
  326. return 1
  327. fi
  328. if [ x${REBUILD} == "x1" ]; then
  329. echo -e "\t手动编译标记位"
  330. return 1
  331. fi
  332. echo -e "\t本地版本与服务器版本相同 ,不需要更新\n"
  333. return 0
  334. }
  335. UpdateSVNCode()
  336. {
  337. SwitchIntranet
  338. echo -e "\n\n==========执行函数:UpdateCode=========="
  339. # 本地APK SVN目录是否存在,存在则删除;
  340. if [ -d ${APK_SRC_DIR} ]; then
  341. echo -e "目录不为空,删除未提交的文件;\n"
  342. #rm -rf ${APK_SRC_DIR} # 删除操作太危险;
  343. svn cleanup ${APK_SRC_DIR}
  344. filelist=$(svn status ${APK_SRC_DIR} 2>&1)
  345. echo -e "未提交的文件="${filelist}
  346. # 以"A "分组字符串,并修改logo后缀;
  347. filearray=(${filelist//? /})
  348. for File in ${filearray[@]}
  349. do
  350. # 文件是否存在;
  351. if [ -f ${File} ];then
  352. rm -f ${File}
  353. echo -e "已删除文件=${File}\n"
  354. elif [ -d ${File} ];then
  355. rm -rf ${File}
  356. echo -e "已删除路径=${File}\n"
  357. fi
  358. done
  359. fi
  360. if [ x"${APK_SRC_URL}" = x ]; then
  361. echo -e "APK URL空\n"
  362. SwitchIntranet
  363. exit
  364. fi
  365. #echo -e "\t开始Check代码;\n"
  366. #svn co --force ${APK_SRC_URL} ${APK_SRC_DIR}
  367. echo -e "开始更新代码\n"
  368. svn_result=$(svn up ${APK_SRC_DIR} 2>&1)
  369. echo -e "UpdateCode: svn up结果=${svn_result}\n"
  370. if [[ $svn_result != *"At revision"* ]] && [[ $svn_result != *"Updated to revision"* ]]; then
  371. echo -e "连接SVN服务器失败, 网络异常!\n"
  372. SwitchIntranet
  373. exit
  374. fi
  375. cd ${APK_SRC_DIR}
  376. # 判断文件是否存在;
  377. if [ -f "update_modules.sh" ];then
  378. echo -e "\nupdate_modules.sh 文件存在,更新复用库\n\n"
  379. chmod 777 update_modules.sh
  380. ./update_modules.sh
  381. fi
  382. }
  383. UpdateGITCode()
  384. {
  385. SwitchIntranet
  386. echo -e "\n\n==========执行函数:UpdateCode=========="
  387. # 本地APK SVN目录是否存在,存在则删除;
  388. if [ -d ${APK_SRC_DIR} ]; then
  389. echo -e "目录不为空,删除未提交的文件;\n"
  390. cd ${APK_SRC_DIR}
  391. git clean -xfd
  392. fi
  393. if [ x"${APK_SRC_URL}" = x ]; then
  394. echo -e "APK URL空\n"
  395. SwitchIntranet
  396. #exit
  397. fi
  398. #echo -e "\t开始Check代码;\n"
  399. #svn co --force ${APK_SRC_URL} ${APK_SRC_DIR}
  400. echo -e "开始更新代码\n"
  401. git_result=$(git pull 2>&1)
  402. echo -e "UpdateCode: git pull结果=${git_result}\n"
  403. if [[ $git_result != *"files changed,"* ]] && [[ $git_result != *"Already up to date."* ]]; then
  404. echo -e "连接GIT服务器失败, 网络异常!\n"
  405. SwitchIntranet
  406. #exit
  407. fi
  408. cd ${APK_SRC_DIR}
  409. # 判断文件是否存在;
  410. if [ -f "update_modules.sh" ];then
  411. echo -e "\nupdate_modules.sh 文件存在,更新复用库\n\n"
  412. chmod 777 update_modules.sh
  413. ./update_modules.sh
  414. fi
  415. }
  416. compile()
  417. {
  418. echo ${CURR_TIME}
  419. echo "shell_log===>Compile start---------"
  420. # 判断工作副本是否需要更新;
  421. if [ x${REPO_TYPE} == 'xSVN' ];then
  422. IsUpdateSVN
  423. else
  424. IsUpdateGIT
  425. fi
  426. if [ $? == 1 ]
  427. then
  428. echo "需要更新代码"
  429. if [ x${REPO_TYPE} == 'xSVN' ];then
  430. UpdateSVNCode
  431. else
  432. UpdateGITCode
  433. fi
  434. cd ${WORK_HOME}/shell
  435. # 读取ini配置文件中的信息;
  436. releaseType=$(python3 -c 'import builder;print(builder.getReleaseName("'$APK_SRC_DIR'"))')
  437. if [ $releaseType == 'custom' ];then
  438. compileCustomApp
  439. else
  440. compileGeneralApp
  441. fi
  442. echo "shell_log===>Compile end------------"
  443. else
  444. echo "无需更新本地SVN"
  445. echo "shell_log===>No upgrade end------------"
  446. fi
  447. # 切换回内网;
  448. SwitchIntranet
  449. }
  450. main()
  451. {
  452. if [ $# -eq 1 ]; then
  453. REBUILD=1
  454. APK_SRC_DIR=$1
  455. elif [ $# -eq 2 ]; then
  456. APK_SRC_DIR=$1
  457. REBUILD=$2
  458. fi
  459. echo -e "########################################################开始编译########################################################\n"
  460. # 导出变量到子shell;
  461. export WORK_HOME #/home/data/ApkAutoCompile
  462. export GRADLE_HOME #/home/data/android/gradle/gradle-6.7.1
  463. export ANDROID_SDK_HOME #/home/data/android/android_sdk/android-sdk-linux
  464. # 创建 编译完成的Apk文件 根目录;
  465. if [ ! -d ${APK_ROOT_DIR} ];then
  466. mkdir -p ${APK_ROOT_DIR}
  467. fi
  468. # Apk Debug目录不用创建,但Release根目录需要;
  469. if [ ! -d ${APK_RELEASE_ROOT_DIR} ];then
  470. mkdir -p ${APK_RELEASE_ROOT_DIR}
  471. fi
  472. # 检出所有debug apk;
  473. if [ ! -d ${APK_DEBUG_ROOT_DIR} ];then
  474. svn co ${APK_DEBUG_ROOT_URL} ${APK_DEBUG_ROOT_DIR}
  475. fi
  476. # 检出中间件服务APK;
  477. if [ ! -d ${APK_DIR_TVMidware} ];then
  478. echo -e 'svn co TVMidware Apk'
  479. svn co https://odm-design-center-hz.tclking.com/svn/scbc_apps/trunk/TVMidware/debug/TVMidwareService ${APK_DIR_TVMidware}
  480. fi
  481. # 取右边第一个字符,判断是否为斜杠;
  482. if [ "${APK_SRC_DIR:0-1:1}" = "/" ];then
  483. # 若为斜杠,%号截取,删除右边第一个'/'及右边字符,保存左边字符;
  484. echo "最后为斜杠,删除斜杠"
  485. APK_SRC_DIR=${APK_SRC_DIR%/*}
  486. fi
  487. # 获取APK名称;
  488. APK_NAME=${APK_SRC_DIR##*/}
  489. echo -e "APK_SRC_DIR=${APK_SRC_DIR}\r\nAPK_NAME=${APK_NAME}"
  490. # 重新定义log文件;
  491. if [ ! -d /home/data/ApkAutoCompile/shell/log/gradlew/ ];then
  492. msg=$(mkdir /home/data/ApkAutoCompile/shell/log/gradlew/last)
  493. fi
  494. LOG_FILE="/home/data/ApkAutoCompile/shell/log/gradlew/${APK_NAME}.log"
  495. if [ -f ${LOG_FILE} ];then
  496. mkdir -p /home/data/ApkAutoCompile/shell/log/gradlew/last
  497. mv ${LOG_FILE} /home/data/ApkAutoCompile/shell/log/gradlew/last/${APK_NAME}.log
  498. fi
  499. if [ -d ${APK_SRC_DIR}/.git ];then
  500. REPO_TYPE='GIT'
  501. echo "-------仓库类型为GIT-------"
  502. else
  503. REPO_TYPE='SVN'
  504. echo "-------仓库类型为SVN-------"
  505. fi
  506. compile 2>&1 | tee ${LOG_FILE}
  507. echo -e "########################################################编译结束########################################################\n"
  508. }
  509. main $@