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 = &quot;(.*)&quot;;" />

<substitution expression="public static final String COMM_URL_HEADER = &quot;${app.service.url.release}&quot;;" />

<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 = &quot;(.*)&quot;;" />

<substitution expression="public static final String COMM_URL_HEADER = &quot;${app.service.url.prepare}&quot;;" />

<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 = &quot;(.*)&quot;;" />

<substitution expression="public static final String COMM_URL_HEADER = &quot;${app.service.url.test}&quot;;" />

<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 = &quot;(.*)&quot;;" />

<substitution expression="public static final String COMM_URL_HEADER = &quot;${app.service.url.debug}&quot;;" />

<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)相关推荐

  1. 移动开发:Android Ant一键自动打多渠道包

    build.xml =========================================================================== <?xml versi ...

  2. eclipse+adt下开发android微信红包自动抢(AccessibilityService类)

    纯粹是兴趣,google提供了android操作系统的钩子AccessibilityService类,用于监听我们手机的焦点.窗口变化.按钮点击.通知栏变化等.微信红包自动抢通过Accessibili ...

  3. 你的优质开发助手,一键自动生成代码

  4. (转)Apache Ant 环境开发Android应用 二

    http://www.eoeandroid.com/forum.php?mod=viewthread&tid=605 Apache Ant 开发Android SDK 1.5 r2应用程序 = ...

  5. Mac环境下Android一键自动打包发布到蒲公英平台

    由于项目提测需要编译出apk然后发布到蒲公英平台供测试人员下载,在之前是需要手动编译出apk文件然后打开蒲公英网站再手动上传发布到平台,这样如果要上传几个不同的版本和渠道包就比较麻烦,于是,一个能一键 ...

  6. Android ANT多渠道打包

    2019独角兽企业重金招聘Python工程师标准>>> 在没用AndroidStudio的Gradle构建项目之前,多渠道打包一般都是基于ANT构建,所以在此记录一下,以供查阅! 一 ...

  7. android 文字选中朗读,Android开发之文本内容自动朗读功能实现方法

    本文实例讲述了Android开发之文本内容自动朗读功能实现方法.分享给大家供大家参考,具体如下: Android提供了自动朗读支持.自动朗读支持可以对指定文本内容进行朗读,从而发生声音:不仅如此,An ...

  8. android的发音功能实现,Android开发之文本内容自动朗读功能实现方法

    本文实例讲述了Android开发之文本内容自动朗读功能实现方法.分享给大家供大家参考,具体如下: Android提供了自动朗读支持.自动朗读支持可以对指定文本内容进行朗读,从而发生声音:不仅如此,An ...

  9. android自动化优化工具,一键自动优化系统大师下载

    [软件简介] 1.一键系统自动优化大师是一款功能强大的手机系统优化软件: 2.一键,只需一键,你的系统就可以得到优化,并且还会帮你自动优化哦,一键就OK,超级简单好用: 3.同时还提供了对系统进行系统 ...

最新文章

  1. SSE4.1和SSE4.2 Intrinsics各函数介绍
  2. fatal: unable to access : The requested URL returned error: 403
  3. 孤荷凌寒自学python第六天 列表的嵌套与列表的主要方法
  4. scipy和statsmodels处理回归
  5. 分享一个基于.NET6包含DDD,ES,CQRS等概念的开源项目
  6. C语言线性表之双向循环链表
  7. VS中Eric觉得好用的快捷键
  8. 电子工程师名片——FAT16文件系统(转)
  9. 不知道这十项 Linux 常识,别说自己是运维工程师!
  10. java+mysql ssm基于协同过滤算法的演唱会平台
  11. 解决笔记本同时连接局域网和外网网络后上网很卡的问题
  12. L. Simone and graph coloring
  13. 微信竟可以查出行轨迹了,预计又一波情侣要分手?
  14. 数据库增量同步/ETL工具
  15. Zookeeper 服务器端和客户端扩大节点数据1M大小限制
  16. Windows xp sp3简体中文正式版下载地址
  17. 突然被裁!国外程序员的各种花式报复手段,非常眼熟…
  18. 华氏度与摄氏度对照表
  19. 【C++从入门到放弃】C++编译生成动态链接库*.so及如何调用*.so
  20. 干盘管蒸发冷-间接蒸发冷的终结者?-孙长青

热门文章

  1. 考试与评价杂志考试与评价杂志社考试与评价编辑部2021年第4期目录
  2. 天秤女能挽回狮子男吗(图
  3. 有没有命令让服务器cpu占用升高,怎样通过iisapp命令查找pid来解决IIS的cpu占用率过高问题...
  4. Foxmail配置网易企业邮箱-ERR Unable to log on解决办法
  5. 疫情期北京融资信息分析---疫情对北京社会经济影响分析---科技战疫·大数据公益挑战赛---2020北京数据开放创新应用大赛
  6. js拼接带冒号:的字符串的方法
  7. echart legend 不显示_echart不显示legend
  8. 麻辣GIS源码的github下载与调试
  9. 冰点还原2023中文版最新电脑系统数据恢复软件
  10. ROS开发之如何使用常用可视化工具?