移动开发:Android Ant一键自动打多渠道包(xmltask)
build.xml
===========================================================================
<?xml version="1.0" encoding="UTF-8"?>
<project
name="tzb-ard-application"
default="help" >
<!-- ################################################################## -->
<!-- ################################################################## -->
<!-- 引入ant扩展命令包ant-contrib,使ant支持for循环 -->
<taskdef resource="net/sf/antcontrib/antcontrib.properties" >
<classpath>
<pathelement location="${ant.home}/exlib/ant-contrib-1.0b3.jar" />
</classpath>
</taskdef>
<!-- 引入ant扩展命令包xmltask,编辑xml文档 -->
<taskdef
name="xmltask"
classname="com.oopsconsultancy.xmltask.ant.XmlTask" >
<classpath>
<pathelement location="${ant.home}/exlib/xmltask.jar" />
</classpath>
</taskdef>
<!-- ################################################################## -->
<!-- ################################################################## -->
<!-- 环境配置参数(sdk.dir) -->
<property file="local.properties" />
<!-- 项目配置参数(proguard、target、library) -->
<property file="project.properties" />
<!-- 编译配置参数(keystore、channel) -->
<property file="ant.properties" />
<!-- ################################################################## -->
<!-- ################################################################## -->
<!-- 系统中的环境变量配置 -->
<property environment="env" />
<!-- SDK目录 -->
<condition
property="sdk.dir"
value="${env.ANDROID_HOME}" >
<isset property="env.ANDROID_HOME" />
</condition>
<fail message="sdk.dir is missing." unless="sdk.dir" />
<!-- SDK指定平台目录 -->
<property name="sdk.platform.dir" value="${sdk.dir}/platforms/android-23" />
<!-- SDK中tools目录 -->
<property name="sdk.tools" value="${sdk.dir}/tools" />
<!-- SDK指定平台中tools目录 -->
<property name="sdk.platform.tools" value="${sdk.dir}/platform-tools" />
<!-- ################################################################## -->
<!-- ################################################################## -->
<import file="custom_rules.xml" optional="true" />
<import file="${sdk.dir}/tools/ant/build.xml" />
<!-- ################################################################## -->
<!-- ################################################################## -->
<!-- 应用名称 -->
<property
name="app.name"
value="${ant.project.name}" />
<!-- 获取当前时间 -->
<tstamp>
<format
pattern="yyyyMMddHHmm"
property="current_time" />
<format
pattern="yyyyMMdd"
property="current_date" />
<format
pattern="yyMMdd"
property="app.version.code" />
</tstamp>
<!-- 输出日志 -->
<record
name="ant.log"
append="no"
loglevel="verbose" />
<!-- ################################################################## -->
<!-- ################################################################## -->
<!-- 渠道包打包脚本 ant deploy 1、清理编译目录 2、修改接口地址 3、修改版本信息 4、修改Key信息5、修改渠道信息6、打包7、输出 -->
<target name="deploy" depends="clean,modify_service,modify_version,modify_key">
<!-- 5、修改渠道信息 -->
<foreach
delimiter=","
list="${app.market.channels.release}"
param="channel_info"
target="modify_manifest" >
</foreach>
</target>
<!-- 渠道包打包脚本 ant prepare 1、清理编译目录 2、修改接口地址 3、修改版本信息 4、修改Key信息5、修改渠道信息6、打包7、输出 -->
<target name="prepare" depends="clean,modify_service_prepare,modify_version,modify_key_test">
<!-- 5、修改渠道信息 -->
<foreach
delimiter=","
list="${app.market.channels.test}"
param="channel_info"
target="modify_manifest" >
</foreach>
</target>
<!-- 渠道包打包脚本 ant test 1、清理编译目录 2、修改接口地址 3、修改版本信息 4、修改Key信息5、修改渠道信息6、打包7、输出 -->
<target name="test" depends="clean,modify_service_test,modify_version,modify_key_test">
<!-- 5、修改渠道信息 -->
<foreach
delimiter=","
list="${app.market.channels.test}"
param="channel_info"
target="modify_manifest" >
</foreach>
</target>
<!-- 渠道包打包脚本 ant test 1、清理编译目录 2、修改接口地址 3、修改版本信息 4、修改Key信息5、修改渠道信息6、打包7、输出 -->
<target name="debug" depends="clean,modify_service_debug,modify_version,modify_key_test">
<!-- 5、修改渠道信息 -->
<foreach
delimiter=","
list="${app.market.channels.test}"
param="channel_info"
target="modify_manifest" >
</foreach>
</target>
<!-- ################################################################## -->
<!-- ################################################################## -->
<!-- 修改AppConfig.java中的接口地址 -->
<target name="modify_service" >
<!-- 修改接口地址 -->
<replaceregexp
byline="false"
encoding="utf-8"
flags="g" >
<regexp pattern="public static final String COMM_URL_HEADER = "(.*)";" />
<substitution expression="public static final String COMM_URL_HEADER = "${app.service.url.release}";" />
<fileset
dir=""
includes="src\com\tziba\mobile\ard\AppConfig.java" />
</replaceregexp>
</target>
<!-- 修改AppConfig.java中的接口地址-预生产 -->
<target name="modify_service_prepare" >
<!-- 修改接口地址 -->
<replaceregexp
byline="false"
encoding="utf-8"
flags="g" >
<regexp pattern="public static final String COMM_URL_HEADER = "(.*)";" />
<substitution expression="public static final String COMM_URL_HEADER = "${app.service.url.prepare}";" />
<fileset
dir=""
includes="src\com\tziba\mobile\ard\AppConfig.java" />
</replaceregexp>
</target>
<!-- 修改AppConfig.java中的接口地址-测试 -->
<target name="modify_service_test" >
<!-- 修改接口地址 -->
<replaceregexp
byline="false"
encoding="utf-8"
flags="g" >
<regexp pattern="public static final String COMM_URL_HEADER = "(.*)";" />
<substitution expression="public static final String COMM_URL_HEADER = "${app.service.url.test}";" />
<fileset
dir=""
includes="src\com\tziba\mobile\ard\AppConfig.java" />
</replaceregexp>
</target>
<!-- 修改AppConfig.java中的接口地址-调试 -->
<target name="modify_service_debug" >
<!-- 修改接口地址 -->
<replaceregexp
byline="false"
encoding="utf-8"
flags="g" >
<regexp pattern="public static final String COMM_URL_HEADER = "(.*)";" />
<substitution expression="public static final String COMM_URL_HEADER = "${app.service.url.debug}";" />
<fileset
dir=""
includes="src\com\tziba\mobile\ard\AppConfig.java" />
</replaceregexp>
</target>
<!-- 修改AndroidManifest.xml中的版本 -->
<target name="modify_version" >
<xmltask source="AndroidManifest.xml" dest="AndroidManifest.xml" encoding="utf-8" >
<!-- 修改版本Name -->
<attr path="//manifest" attr="android:versionName" value="${app.version}" />
<!-- 修改版本Code -->
<attr path="//manifest" attr="android:versionCode" value="${app.version.code}" />
</xmltask>
</target>
<!-- 修改AndroidManifest.xml中的Key -->
<target name="modify_key" >
<xmltask source="AndroidManifest.xml" dest="AndroidManifest.xml" encoding="utf-8" >
<!-- 修改友盟Key -->
<attr path="//manifest/application/meta-data[@android:name='UMENG_APPKEY']" attr="android:value" value="${app.umeng.appkey.release}" />
<!-- 修改信鸽KeyId -->
<attr path="//manifest/application/meta-data[@android:name='XG_V2_ACCESS_ID']" attr="android:value" value="${app.xg.access.id.release}" />
<!-- 修改信鸽Key -->
<attr path="//manifest/application/meta-data[@android:name='XG_V2_ACCESS_KEY']" attr="android:value" value="${app.xg.access.key.release}" />
</xmltask>
</target>
<!-- 修改AndroidManifest.xml中的Key -->
<target name="modify_key_test" >
<xmltask source="AndroidManifest.xml" dest="AndroidManifest.xml" encoding="utf-8" >
<!-- 修改友盟Key -->
<attr path="//manifest/application/meta-data[@android:name='UMENG_APPKEY']" attr="android:value" value="${app.umeng.appkey.test}" />
<!-- 修改信鸽KeyId -->
<attr path="//manifest/application/meta-data[@android:name='XG_V2_ACCESS_ID']" attr="android:value" value="${app.xg.access.id.test}" />
<!-- 修改信鸽Key -->
<attr path="//manifest/application/meta-data[@android:name='XG_V2_ACCESS_KEY']" attr="android:value" value="${app.xg.access.key.test}" />
</xmltask>
</target>
<!-- 修改AndroidManifest.xml中的渠道 -->
<target name="modify_manifest" depends="get_channel">
<!-- 修改渠道 -->
<xmltask source="AndroidManifest.xml" dest="AndroidManifest.xml" encoding="utf-8" >
<!-- 修改友盟Key -->
<attr path="//manifest/application/meta-data[@android:name='UMENG_CHANNEL']" attr="android:value" value="${channel}" />
</xmltask>
<!-- 6、打包release -->
<antcall target="release" />
<!-- 7、输出渠道包到bin/out目录下 ${out.absolute.dir}/-->
<copy file="bin/${app.name}-release.apk" tofile="apk/${app.apk.name}_${app.version}_${current_date}${channelId}.apk" />
</target>
<!-- 获取渠道 -->
<target name="get_channel" >
<!-- 渠道Id -->
<propertyregex
input="${channel_info}"
property="channelId"
regexp="(.*):"
select="\1" />
<!-- 渠道名称 -->
<propertyregex
input="${channel_info}"
property="channel"
regexp=":(.*)"
select="\1" />
</target>
</project>
==============================================================================
ant.properties
#########################################
#Apk name
app.apk.name=ard_app
#Version
app.version=1.1.4
#service.url.release
app.service.url.release=https://app.tziba.com
#service.url.prepare
app.service.url.prepare=http://192.168.1.1:8803
#service.url.test
app.service.url.test=http://192.168.1.2:8803
#service.url.debug
app.service.url.debug=http://192.168.1.3:8080
#########################################
#app.umeng.appkey.test
app.umeng.appkey.test=11111111111111111111
#app.umeng.appkey.release
app.umeng.appkey.release=22222222222222222222
#app.market.channels.test
app.market.channels.test=C000:testMarket
#app.market.channels.release
app.market.channels.release=C100:officialWebsite,C101:tencentMarket,C102:360Market,C103:baiduMarket,C104:hiapkMarket,C105:91Market,C106:appsMarket,C107:wandoujiaMarket,C108:appchinaMarket,C109:mumayiMarket,C110:nduoaMarket,C111:anzhiMarket,C112:sogouMarket,C113:gfanMarket,C114:xiaomiMarket,C115:flymMarket,C116:jinliMarket,C117:huaweiMarket,C118:oppomobileMarket,C119:vivoMarket,C120:lenovoMarket,C121:suningMarket
#app.xg.access.id.test
app.xg.access.id.test=2100123456
#app.xg.access.key.test
app.xg.access.key.test=AAAAAAAAAAAA
#app.xg.access.id.release
app.xg.access.id.release=2100123456
#app.xg.access.key.release
app.xg.access.key.release=AAAAAAAAAAAA
#########################################
#Apk keystore
key.store=./ard_application.keystore
#Apk keystore password
key.store.password=12345
#Apk keystore alias
key.alias=ard_app
#Apk keystore alias password
key.alias.password=12345
移动开发:Android Ant一键自动打多渠道包(xmltask)相关推荐
- 移动开发:Android Ant一键自动打多渠道包
build.xml =========================================================================== <?xml versi ...
- eclipse+adt下开发android微信红包自动抢(AccessibilityService类)
纯粹是兴趣,google提供了android操作系统的钩子AccessibilityService类,用于监听我们手机的焦点.窗口变化.按钮点击.通知栏变化等.微信红包自动抢通过Accessibili ...
- 你的优质开发助手,一键自动生成代码
- (转)Apache Ant 环境开发Android应用 二
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=605 Apache Ant 开发Android SDK 1.5 r2应用程序 = ...
- Mac环境下Android一键自动打包发布到蒲公英平台
由于项目提测需要编译出apk然后发布到蒲公英平台供测试人员下载,在之前是需要手动编译出apk文件然后打开蒲公英网站再手动上传发布到平台,这样如果要上传几个不同的版本和渠道包就比较麻烦,于是,一个能一键 ...
- Android ANT多渠道打包
2019独角兽企业重金招聘Python工程师标准>>> 在没用AndroidStudio的Gradle构建项目之前,多渠道打包一般都是基于ANT构建,所以在此记录一下,以供查阅! 一 ...
- android 文字选中朗读,Android开发之文本内容自动朗读功能实现方法
本文实例讲述了Android开发之文本内容自动朗读功能实现方法.分享给大家供大家参考,具体如下: Android提供了自动朗读支持.自动朗读支持可以对指定文本内容进行朗读,从而发生声音:不仅如此,An ...
- android的发音功能实现,Android开发之文本内容自动朗读功能实现方法
本文实例讲述了Android开发之文本内容自动朗读功能实现方法.分享给大家供大家参考,具体如下: Android提供了自动朗读支持.自动朗读支持可以对指定文本内容进行朗读,从而发生声音:不仅如此,An ...
- android自动化优化工具,一键自动优化系统大师下载
[软件简介] 1.一键系统自动优化大师是一款功能强大的手机系统优化软件: 2.一键,只需一键,你的系统就可以得到优化,并且还会帮你自动优化哦,一键就OK,超级简单好用: 3.同时还提供了对系统进行系统 ...
最新文章
- SSE4.1和SSE4.2 Intrinsics各函数介绍
- fatal: unable to access : The requested URL returned error: 403
- 孤荷凌寒自学python第六天 列表的嵌套与列表的主要方法
- scipy和statsmodels处理回归
- 分享一个基于.NET6包含DDD,ES,CQRS等概念的开源项目
- C语言线性表之双向循环链表
- VS中Eric觉得好用的快捷键
- 电子工程师名片——FAT16文件系统(转)
- 不知道这十项 Linux 常识,别说自己是运维工程师!
- java+mysql ssm基于协同过滤算法的演唱会平台
- 解决笔记本同时连接局域网和外网网络后上网很卡的问题
- L. Simone and graph coloring
- 微信竟可以查出行轨迹了,预计又一波情侣要分手?
- 数据库增量同步/ETL工具
- Zookeeper 服务器端和客户端扩大节点数据1M大小限制
- Windows xp sp3简体中文正式版下载地址
- 突然被裁!国外程序员的各种花式报复手段,非常眼熟…
- 华氏度与摄氏度对照表
- 【C++从入门到放弃】C++编译生成动态链接库*.so及如何调用*.so
- 干盘管蒸发冷-间接蒸发冷的终结者?-孙长青
热门文章
- 考试与评价杂志考试与评价杂志社考试与评价编辑部2021年第4期目录
- 天秤女能挽回狮子男吗(图
- 有没有命令让服务器cpu占用升高,怎样通过iisapp命令查找pid来解决IIS的cpu占用率过高问题...
- Foxmail配置网易企业邮箱-ERR Unable to log on解决办法
- 疫情期北京融资信息分析---疫情对北京社会经济影响分析---科技战疫·大数据公益挑战赛---2020北京数据开放创新应用大赛
- js拼接带冒号:的字符串的方法
- echart legend 不显示_echart不显示legend
- 麻辣GIS源码的github下载与调试
- 冰点还原2023中文版最新电脑系统数据恢复软件
- ROS开发之如何使用常用可视化工具?