设为首页 收藏本站
查看: 915|回复: 0

【原创】用shell+ant构建apk

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-3 14:35:50 | 显示全部楼层 |阅读模式
1 #!/bin/bash
  2 #########################################################################
  3 ## $PRODVERSION:产品发布版本号码,在发布产品前由产品经理确认。
  4 ## $BRANCH :代码版本分支,与stash上相同
  5 ## $SECTION:Alpha,Beta,Release
  6 ## @Author:Michelle Tang
  7 ## @Date:2015-5-12
  8 #########################################################################
  9 export PS4='[${BASH_SOURCE}:${LINENO}]: ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
10 function show()
11 {
12   set +x
13   echo -e "\033[32;1m==============================================================\033[0m"
14   echo -e "\033[34;1m$1\033[0m"
15   echo -e "\033[32;1m==============================================================\033[0m"
16   set -x
17 }
18 function die()
19 {
20     show $1
21     exit 0
22 }
23
24 function SetBaseEnv()
25 {
26  ##Edit Test Data
27  #BRANCH="v2-uuc"
28  #SECTION="Release"
29  #PRODVERSION="v2"
30  #BUILD_NUMBER=13
31
32  export ANDROID_HOME="/backup/jenkins/bin/adt-bundle-linux/sdk"
33  export REPLACE_FILE="$HOME/ci/package/android.jar"
34  if [ x"$BRANCH" \< x"v4.2.0" ];then
35    ANDROID_TARGET="android-15"
36  else
37    ANDROID_TARGET="android-21"
38    #mv $ANDROID_HOME/platforms/$ANDROID_TARGET/android.jar android.jar.bak
39    #cp $REPLACE_FILE $ANDROID_HOME/platforms/$ANDROID_TARGET/
40    #chmod +x $ANDROID_HOME/platforms/$ANDROID_TARGET/android.jar
41  fi
42
43  export ANT_HOME="$HOME/bin/apache-ant-1.9.2"
44  export JAVA_HOME="/usr/lib/jvm/jdk1.7.0_55"
45  #export CLASS_PATH="$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"
46  export PATH="$PATH:$ANDROID_HOME/tools/:$ANT_HOME/bin/:$JAVA_HOME/bin"
47
48  CODE_URL="此处忽略300字...."
49  TEST_ADDR_STR="http:\/\/此处忽略300字..."
50  ONLINE_ADDR_STR="http:\/\/此处忽略300字..."
51  PROJECT_NAME="此处忽略300字..."
52
53  show "=====SetBaseEnv.End====="
54 }
55
56 function TestEnv()
57 {
58  if [ ! -d "$ANDROID_HOME" ];then
59   die "ANDROID_HOME is not exist!"
60  elif [ ! -d "$ANT_HOME" ];then
61   die "ANT_HOME is not exist!"
62  elif [ ! -d "$JAVA_HOME" ];then
63   die "JAVA_HOME is not exist"
64  elif [ ! "$REPLACE_FILE" ];then
65   die "REPLACE_FILE is not exist!"
66  elif [ ! -d "$JAVA_HOME" ]; then
67   die "JAVA_HOME is not exist"
68  elif [ ! $REPLACE_FILE ]; then
69   die "REPLACE_FILE is not exist!"
70  else
71   show "=====TestEnv.End======"
72   return 1
73  fi
74 }
75
76 function SetKeyInfo()
77 {
78  ##set project info
79  PROJECT_NAME="此处忽略300字..."
80  PROJECT_PATH=$HOME/ci/src/$PROJECT_NAME
81
82  ## set key info
83  # set uuc key info when release uuc branch
84  if [ x"$BRANCH" == x'v2-uuc' ];then
85    KEY_ALIAS_NAME="此处忽略300字..."
86    KEY_PASSWORD="此处忽略300字..."
87    KEYSTORE="此处忽略300字..."
88    KEYSTORE_PASSWORD="此处忽略300字..."
89  else
90    KEY_ALIAS_NAME="此处忽略300字..."
91    KEY_PASSWORD=$(echo "此处忽略300字..." | base64)
92    KEYSTORE="此处忽略300字..."
93    KEYSTORE_PASSWORD=$(echo "此处忽略300字..." | base64)
94  fi
95  DNAME="此处忽略300字..."
96  show "=====SetKeyInfo.End====="
97 }
98
99 function SetAntInfo()
100 {
101 cat>> $ANT_PROPERTIES <<EOF
102 key.alias=$KEY_ALIAS_NAME
103 key.alias.password=$KEY_PASSWORD
104 key.store=$KEYSTORE
105 key.store.password=$KEYSTORE_PASSWORD
106 EOF
107 show "=====SetAntInfo.End====="
108 }
109
110 function UpdateCode()
111 {
112 rm -rf $PROJECT_PATH
113 git clone -b $BRANCH $CODE_URL $PROJECT_PATH || die "Download code failed"
114
115 ##Set Other info
116 ANT_PROPERTIES=$PROJECT_PATH/ant.properties
117 PROJECT_PROPERTIES=$PROJECT_PATH/project.properties
118 PROGUARD_CFG=$PROJECT_PATH/proguard.cfg
119 show "======UpdateCode.End====="
120 }
121
122 function SetUpdateAddr()
123 {
124  TARGET_FILE="此处忽略300字..."
125  if [ x$SECTION = x"Release" ]; then
126      echo "RELEASE VERSION"
127      if [ x$BRANCH = x"v3" ] || [ x$BRANCH = x"v3.1" ] ||[ x$BRANCH = x"4" ]|| [ x$BRANCH = x"v4.2.0" ] || [ x$BRANCH \> x"v4.2.0" ]; then
128          echo "BRANCH:"$BRANCH
129          test -e $TARGET_FILE || die "SetUpdateAddr file 'DataRequestManager.java' is not exist!!"
130          sed -i "s/http:\/\/此处忽略300字.../$ONLINE_ADDR_STR/" $TARGET_FILE
131          sed -i "s/http:\/\/此处忽略300字.../$ONLINE_ADDR_STR/" $TARGET_FILE
132      fi
133  else
134   echo "ALPHA OR BETA VERSION"
135   if [ x$BRANCH = x"v1" ] ; then
136      TARGET_FILE="此处忽略300字..."
137      echo "BRANCH:"$BRANCH
138      test -e $TARGET_FILE || die "SetUpdateAddr file '此处忽略300字...' is not exist!"
139      sed -i "s/http:\/\/此处忽略300字.../$TEST_ADDR_STR/" $TARGET_FILE
140   elif [ x$BRANCH = x"v2" ] || [ x$BRANCH = x"v2-hd" ] || [ x$BRANCH = x"v2-hd-onetouch" ] || [ x$BRANCH = x"v2-uuc" ];then
141     echo "BRANCH:"$BRANCH
142     test -e $TARGET_FILE || die "SetUpdateAddr file '此处忽略300字...' is not exist!"
143     sed -i "s/http:\/\/此处忽略300字.../$TEST_ADDR_STR/" $TARGET_FILE
144   else
145     echo "BRANCH:"$BRANCH
146     test -e $TARGET_FILE || die "SetUpdateAddr file '此处忽略300字...' is not exist!"
147     sed -i "s/http:\/\/此处忽略300字.../$TEST_ADDR_STR/" $TARGET_FILE
148     sed -i "s/http:\/\/此处忽略300字.../$TEST_ADDR_STR/" $TARGET_FILE
149   fi
150 fi
151  show "======SetUpdateAddr====="
152 }
153
154 function SetProguard()
155 {
156  if [ x"$SECTION" != x'Release' ];then
157    sed -i 's/^proguard.config/#proguard.config/'  $PROJECT_PROPERTIES
158  fi
159  show "=====SetProguard.End======"
160 }
161
162 function ReleaseProduct()
163 {
164  DATE=`date +%y%m%d%H%M%S`
165  GEN_APK="bin/${PROJECT_NAME}_${PRODVERSION}_${BUILD_NUMBER}.${DATE}_${SECTION}.apk"
166  echo ${GEN_APK}
167  cd $PROJECT_PATH
168  rm -rf ".git"
169  android update project --target ${ANDROID_TARGET} --name ${PROJECT_NAME}  --path ${PROJECT_PATH} --subprojects
170  ant release
171  mv "bin/${PROJECT_NAME}-release.apk" ${GEN_APK}
172  show "======ReleaseProduct.End====="
173 }
174
175 function CleanEnv()
176 {
177 ##Recovery android-15
178  if [ x"$ANDROID_TARGET" == x"android-15" ];then
179    cd $ANDROID_HOME/platforms/$ANDROID_TARGET/
180    rm -f $ANDROID_HOME/platforms/$ANDROID_TARGET/android.jar
181    mv android.jar.bak android.jar
182  fi
183  show "=====CleanEnv.End====="
184 }
185
186 function CheckSign()
187 {
188 # set uuc key info when release uuc branch
189 if [ x"$BRANCH" == x'v2-uuc' ];then
190     if ! $(jarsigner -verify -verbose -certs $GEN_APK | grep -q "此处忽略300字...");then
191         die "Sign APK Failed"
192     fi
193 else
194     if ! $(jarsigner -verify -verbose -certs $GEN_APK | grep -q "此处忽略300字...");then
195         die "Sign APK Failed"
196     fi
197 fi
198 show "======CheckSign.End======"
199 }
200
201 function UploadAPK()
202 {
203  show "======UploadAPK.End======"
204 }
205
206 function main()
207 {
208 SetBaseEnv
209 TestEnv
210 if [ 1 -eq $? ];then
211     SetKeyInfo
212     UpdateCode
213     SetAntInfo
214     SetUpdateAddr
215     SetProguard
216     ReleaseProduct
217     #CleanEnv
218     CheckSign
219     #UploadAPK
220 fi
221 }
222 main
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-146893-1-1.html 上篇帖子: Shell学习笔记 下篇帖子: 〖Android〗快速部署SSHD和Bash Shell(程序:DroidSSHD和BetterTerminalEmulatorPro)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表