【原创】用shell+ant构建apk
#!/bin/bash
#########################################################################
## $PRODVERSION:产品发布版本号码,在发布产品前由产品经理确认。
## $BRANCH :代码版本分支,与stash上相同
## $SECTION:Alpha,Beta,Release
## @Author:Michelle Tang
## @Date:--
#########################################################################
export PS4='[${BASH_SOURCE}:${LINENO}]: ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
function show()
{
set +x
echo -e "\033[32;1m==============================================================\033[0m"
echo -e "\033[34;1m$1\033[0m"
echo -e "\033[32;1m==============================================================\033[0m"
set -x
}
function die()
{
show $
exit
} function SetBaseEnv()
{
##Edit Test Data
#BRANCH="v2-uuc"
#SECTION="Release"
#PRODVERSION="v2"
#BUILD_NUMBER= export ANDROID_HOME="/backup/jenkins/bin/adt-bundle-linux/sdk"
export REPLACE_FILE="$HOME/ci/package/android.jar"
if [ x"$BRANCH" \< x"v4.2.0" ];then
ANDROID_TARGET="android-15"
else
ANDROID_TARGET="android-21"
#mv $ANDROID_HOME/platforms/$ANDROID_TARGET/android.jar android.jar.bak
#cp $REPLACE_FILE $ANDROID_HOME/platforms/$ANDROID_TARGET/
#chmod +x $ANDROID_HOME/platforms/$ANDROID_TARGET/android.jar
fi export ANT_HOME="$HOME/bin/apache-ant-1.9.2"
export JAVA_HOME="/usr/lib/jvm/jdk1.7.0_55"
#export CLASS_PATH="$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"
export PATH="$PATH:$ANDROID_HOME/tools/:$ANT_HOME/bin/:$JAVA_HOME/bin" CODE_URL="此处忽略300字...."
TEST_ADDR_STR="http:\/\/此处忽略300字..."
ONLINE_ADDR_STR="http:\/\/此处忽略300字..."
PROJECT_NAME="此处忽略300字..." show "=====SetBaseEnv.End====="
} function TestEnv()
{
if [ ! -d "$ANDROID_HOME" ];then
die "ANDROID_HOME is not exist!"
elif [ ! -d "$ANT_HOME" ];then
die "ANT_HOME is not exist!"
elif [ ! -d "$JAVA_HOME" ];then
die "JAVA_HOME is not exist"
elif [ ! "$REPLACE_FILE" ];then
die "REPLACE_FILE is not exist!"
elif [ ! -d "$JAVA_HOME" ]; then
die "JAVA_HOME is not exist"
elif [ ! $REPLACE_FILE ]; then
die "REPLACE_FILE is not exist!"
else
show "=====TestEnv.End======"
return
fi
} function SetKeyInfo()
{
##set project info
PROJECT_NAME="此处忽略300字..."
PROJECT_PATH=$HOME/ci/src/$PROJECT_NAME ## set key info
# set uuc key info when release uuc branch
if [ x"$BRANCH" == x'v2-uuc' ];then
KEY_ALIAS_NAME="此处忽略300字..."
KEY_PASSWORD="此处忽略300字..."
KEYSTORE="此处忽略300字..."
KEYSTORE_PASSWORD="此处忽略300字..."
else
KEY_ALIAS_NAME="此处忽略300字..."
KEY_PASSWORD=$(echo "此处忽略300字..." | base64)
KEYSTORE="此处忽略300字..."
KEYSTORE_PASSWORD=$(echo "此处忽略300字..." | base64)
fi
DNAME="此处忽略300字..."
show "=====SetKeyInfo.End====="
} function SetAntInfo()
{
cat>> $ANT_PROPERTIES <<EOF
key.alias=$KEY_ALIAS_NAME
key.alias.password=$KEY_PASSWORD
key.store=$KEYSTORE
key.store.password=$KEYSTORE_PASSWORD
EOF
show "=====SetAntInfo.End====="
} function UpdateCode()
{
rm -rf $PROJECT_PATH
git clone -b $BRANCH $CODE_URL $PROJECT_PATH || die "Download code failed" ##Set Other info
ANT_PROPERTIES=$PROJECT_PATH/ant.properties
PROJECT_PROPERTIES=$PROJECT_PATH/project.properties
PROGUARD_CFG=$PROJECT_PATH/proguard.cfg
show "======UpdateCode.End====="
} function SetUpdateAddr()
{
TARGET_FILE="此处忽略300字..."
if [ x$SECTION = x"Release" ]; then
echo "RELEASE VERSION"
if [ x$BRANCH = x"v3" ] || [ x$BRANCH = x"v3.1" ] ||[ x$BRANCH = x"" ]|| [ x$BRANCH = x"v4.2.0" ] || [ x$BRANCH \> x"v4.2.0" ]; then
echo "BRANCH:"$BRANCH
test -e $TARGET_FILE || die "SetUpdateAddr file 'DataRequestManager.java' is not exist!!"
sed -i "s/http:\/\/此处忽略300字.../$ONLINE_ADDR_STR/" $TARGET_FILE
sed -i "s/http:\/\/此处忽略300字.../$ONLINE_ADDR_STR/" $TARGET_FILE
fi
else
echo "ALPHA OR BETA VERSION"
if [ x$BRANCH = x"v1" ] ; then
TARGET_FILE="此处忽略300字..."
echo "BRANCH:"$BRANCH
test -e $TARGET_FILE || die "SetUpdateAddr file '此处忽略300字...' is not exist!"
sed -i "s/http:\/\/此处忽略300字.../$TEST_ADDR_STR/" $TARGET_FILE
elif [ x$BRANCH = x"v2" ] || [ x$BRANCH = x"v2-hd" ] || [ x$BRANCH = x"v2-hd-onetouch" ] || [ x$BRANCH = x"v2-uuc" ];then
echo "BRANCH:"$BRANCH
test -e $TARGET_FILE || die "SetUpdateAddr file '此处忽略300字...' is not exist!"
sed -i "s/http:\/\/此处忽略300字.../$TEST_ADDR_STR/" $TARGET_FILE
else
echo "BRANCH:"$BRANCH
test -e $TARGET_FILE || die "SetUpdateAddr file '此处忽略300字...' is not exist!"
sed -i "s/http:\/\/此处忽略300字.../$TEST_ADDR_STR/" $TARGET_FILE
sed -i "s/http:\/\/此处忽略300字.../$TEST_ADDR_STR/" $TARGET_FILE
fi
fi
show "======SetUpdateAddr====="
} function SetProguard()
{
if [ x"$SECTION" != x'Release' ];then
sed -i 's/^proguard.config/#proguard.config/' $PROJECT_PROPERTIES
fi
show "=====SetProguard.End======"
} function ReleaseProduct()
{
DATE=`date +%y%m%d%H%M%S`
GEN_APK="bin/${PROJECT_NAME}_${PRODVERSION}_${BUILD_NUMBER}.${DATE}_${SECTION}.apk"
echo ${GEN_APK}
cd $PROJECT_PATH
rm -rf ".git"
android update project --target ${ANDROID_TARGET} --name ${PROJECT_NAME} --path ${PROJECT_PATH} --subprojects
ant release
mv "bin/${PROJECT_NAME}-release.apk" ${GEN_APK}
show "======ReleaseProduct.End====="
} function CleanEnv()
{
##Recovery android-
if [ x"$ANDROID_TARGET" == x"android-15" ];then
cd $ANDROID_HOME/platforms/$ANDROID_TARGET/
rm -f $ANDROID_HOME/platforms/$ANDROID_TARGET/android.jar
mv android.jar.bak android.jar
fi
show "=====CleanEnv.End====="
} function CheckSign()
{
# set uuc key info when release uuc branch
if [ x"$BRANCH" == x'v2-uuc' ];then
if ! $(jarsigner -verify -verbose -certs $GEN_APK | grep -q "此处忽略300字...");then
die "Sign APK Failed"
fi
else
if ! $(jarsigner -verify -verbose -certs $GEN_APK | grep -q "此处忽略300字...");then
die "Sign APK Failed"
fi
fi
show "======CheckSign.End======"
} function UploadAPK()
{
show "======UploadAPK.End======"
} function main()
{
SetBaseEnv
TestEnv
if [ -eq $? ];then
SetKeyInfo
UpdateCode
SetAntInfo
SetUpdateAddr
SetProguard
ReleaseProduct
#CleanEnv
CheckSign
#UploadAPK
fi
}
main
【原创】用shell+ant构建apk的更多相关文章
- 深入了解Ant构建工具 命令
深入了解Ant构建工具 标签: ant工具任务jarjavaclass 2010-05-29 21:16 1346人阅读 评论(2) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. ...
- Ant构建原理及build.xml文档描述
最近在改写jmeter,用到ant构建,记录一下. Ant的概念Make命令是一个项目管理工具,而Ant所实现功能与此类似.像make,gnumake和nmake这些编译工具都有一定的缺陷,但是Ant ...
- [Android] 基于 Linux 命令行构建 Android 应用(五):Ant 构建命令
Android SDK 提供的 android 工具可以在项目根目录自动生成 Ant 构建文件 build.xml[1].进入项目根目录后,你可以使用以下 Ant 命令[2]. ant clean 清 ...
- Ant—使用Ant构建一个简单的Java工程(两)
博客<Ant-使用Ant构建一个简单的Java项目(一)>演示了使用Ant工具构建简单的Java项目,接着这个样例来进一步学习Ant: 上面样例须要运行多条ant命令才干运行Test类中的 ...
- 2013.11.15 初学ant构建
该做的事情都差不多做完了,今天开始用ant构建,所以学了下ant,其实要不是因为ubuntu时不时的抽风我应该早就可以开始构建了,但重写的时候也想清楚了一些逻辑,优化了一些地方.下面是我这辈子写的第一 ...
- Ant构建和部署项目(转)
原文地址: http://www.blogjava.net/amigoxie/archive/2007/11/09/159413.html Ant是一个Apache基金会下的跨平台的构件工具,它可以实 ...
- Ant构建与部署Java项目---入门
原文地址:http://tech.it168.com/j/2007-11-09/200711091344781.shtml Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建 ...
- 使用 ant 构建的一个例子
在项目根目录下新建一个 build.xml 文件,内容如下: <?xml version="1.0"?> <project name="javatest ...
- Ant—使用Ant构建简单Java项目(三)
博客<Ant-使用Ant构建简单Java项目(二)>我们简化了运行Test类中main方法须要运行的命令,本博客来介绍一下如何使build.xml文件和当中使用property标签定义的属 ...
随机推荐
- UGUI穿透3D世界判断&&UGUI全事件监听
public bool isPointUI(){ PointerEventData eventDataCurrnt = new PointerEventData (EventSystem.curren ...
- X-SCAN扫描器插件(MYSQL弱口令以及Mongodb未授权)
因为在很多时候的内网扫描里面没有授权的WIN的好用的,稍微小点的弱口令扫描器(生成报告,多种服务),编译成了插件,再自己弄了个MONGODB的扫描插件用着. X-SCAN加载以后: MONGODB.p ...
- POJ2240 Arbitrage(最短路)
题目链接. 题意: 根据汇率可以将一种金币换成其他的金币,求最后能否赚到比原来更多的金币. 分析: 最短路的求法,用floyd. #include <iostream> #include ...
- 【性能测试】【Jmeter】学习(2)——录制一段脚本
打开JMeter工具,录制一段脚本(我做的是录制登陆网站后点击设备的开关设定,然后再退出) 1).创建一个线程组(右键点击“测试计划”--->“添加”---->“线程组”) 2).添加录制 ...
- 使用Windows驱动的虚拟打印机,打印Excel表格无表格线问题解决(2)
测试: 经前天的测试,最终还是没有明显的定夺到底是驱动的问题,还是打印机的问题.但是按照可能性来排查,最明显的一点就是其他测试环境不变的情况下增加一张图片,就可以打印出表格线,我始终觉得这里是突破点, ...
- mount 远程挂载Nfs
服务器:192.168.20.204 客户端:192.168.20.203 1. 在服务器配置/etc/export 添加可以共享的文件夹和允许的客户端地址 /home/dir 192.168.20. ...
- I - Agri-Net - poj 1258
貌似就是个裸的最小生成树啊 ******************************************************************************* #inclu ...
- java二进制文件复制
package com.starain.io; import java.io.BufferedInputStream;import java.io.BufferedOutputStream;impor ...
- 在DataTable和DataView中查找指定记录
一.在DataTable中查找 1. 使用Select方法查找没有主键的表DataTable的Select方法返回一个DataRow数组,有四个重载的函数. DataRow[] drs = dt.Se ...
- cocos2dx3.0 超级马里奥开发笔记(两)——正确的规划游戏逻辑
我将不得不拿出一个完整的开发笔记.由于个人原因.代码已OK该,博客,那么就不要粘贴代码,直接解释了整个游戏设计,更确切地说,当新手应该注意的地方发展. 1.继承类和扩展作用的权----展阅读(MVC) ...