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>

<!-- ################################################################## -->

<!-- ################################################################## -->

<!-- 环境配置参数(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信息 -->

<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信息 -->

<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信息 -->

<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信息 -->

<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" >

<!-- 修改版本Code -->

<replaceregexp

byline="false"

encoding="utf-8"

flags="g" >

<regexp pattern="android:versionCode=&quot;(.*)&quot;" />

<substitution expression="android:versionCode=&quot;${app.version.code}&quot;" />

<fileset

dir=""

includes="AndroidManifest.xml" />

</replaceregexp>

<!-- 修改版本Name -->

<replaceregexp

byline="false"

encoding="utf-8"

flags="g" >

<regexp pattern="android:versionName=&quot;(.*)&quot;" />

<substitution expression="android:versionName=&quot;${app.version}&quot;" />

<fileset

dir=""

includes="AndroidManifest.xml" />

</replaceregexp>

</target>

<!-- 修改AndroidManifest.xml中的Key -->

<target name="modify_key" >

<!-- 修改友盟Key -->

<replaceregexp

byline="false"

encoding="utf-8"

flags="g" >

<regexp pattern="&lt;!-- UM_KEY_S --&gt;([^..]*)&lt;!-- UM_KEY_E --&gt;"/>

<substitution expression="&lt;!-- UM_KEY_S --&gt; &lt;meta-data android:name=&quot;UMENG_APPKEY&quot; android:value=&quot;${app.umeng.appkey.release}&quot;/&gt; &lt;!-- UM_KEY_E --&gt;" />

<fileset

dir=""

includes="AndroidManifest.xml" />

</replaceregexp>

<!-- 修改信鸽KeyId -->

<replaceregexp

byline="false"

encoding="utf-8"

flags="g" >

<regexp pattern="&lt;!-- XG_ID_S --&gt;([^..]*)&lt;!-- XG_ID_E --&gt;"/>

<substitution expression="&lt;!-- XG_ID_S --&gt; &lt;meta-data android:name=&quot;XG_V2_ACCESS_ID&quot; android:value=&quot;${app.xg.access.id.release}&quot;/&gt; &lt;!-- XG_ID_E --&gt;" />

<fileset

dir=""

includes="AndroidManifest.xml" />

</replaceregexp>

<!-- 修改信鸽Key -->

<replaceregexp

byline="false"

encoding="utf-8"

flags="g" >

<regexp pattern="&lt;!-- XG_KEY_S --&gt;([^..]*)&lt;!-- XG_KEY_E --&gt;"/>

<substitution expression="&lt;!-- XG_KEY_S --&gt; &lt;meta-data android:name=&quot;XG_V2_ACCESS_KEY&quot; android:value=&quot;${app.xg.access.key.release}&quot;/&gt; &lt;!-- XG_KEY_E --&gt;" />

<fileset

dir=""

includes="AndroidManifest.xml" />

</replaceregexp>

</target>

<!-- 修改AndroidManifest.xml中的Key -->

<target name="modify_key_test" >

<!-- 修改友盟Key -->

<replaceregexp

byline="false"

encoding="utf-8"

flags="g" >

<regexp pattern="&lt;!-- UM_KEY_S --&gt;([^..]*)&lt;!-- UM_KEY_E --&gt;"/>

<substitution expression="&lt;!-- UM_KEY_S --&gt; &lt;meta-data android:name=&quot;UMENG_APPKEY&quot; android:value=&quot;${app.umeng.appkey.test}&quot;/&gt; &lt;!-- UM_KEY_E --&gt;" />

<fileset

dir=""

includes="AndroidManifest.xml" />

</replaceregexp>

<!-- 修改信鸽KeyId -->

<replaceregexp

byline="false"

encoding="utf-8"

flags="g" >

<regexp pattern="&lt;!-- XG_ID_S --&gt;([^..]*)&lt;!-- XG_ID_E --&gt;"/>

<substitution expression="&lt;!-- XG_ID_S --&gt; &lt;meta-data android:name=&quot;XG_V2_ACCESS_ID&quot; android:value=&quot;${app.xg.access.id.test}&quot;/&gt; &lt;!-- XG_ID_E --&gt;" />

<fileset

dir=""

includes="AndroidManifest.xml" />

</replaceregexp>

<!-- 修改信鸽Key -->

<replaceregexp

byline="false"

encoding="utf-8"

flags="g" >

<regexp pattern="&lt;!-- XG_KEY_S --&gt;([^..]*)&lt;!-- XG_KEY_E --&gt;"/>

<substitution expression="&lt;!-- XG_KEY_S --&gt; &lt;meta-data android:name=&quot;XG_V2_ACCESS_KEY&quot; android:value=&quot;${app.xg.access.key.test}&quot;/&gt; &lt;!-- XG_KEY_E --&gt;" />

<fileset

dir=""

includes="AndroidManifest.xml" />

</replaceregexp>

</target>

<!-- 修改AndroidManifest.xml中的渠道 -->

<target name="modify_manifest" depends="get_channel">

<!-- 修改渠道 -->

<replaceregexp

byline="false"

encoding="utf-8"

flags="g" >

<regexp pattern="&lt;!-- UM_CHL_S --&gt;([^..]*)&lt;!-- UM_CHL_E --&gt;"/>

<substitution expression="&lt;!-- UM_CHL_S --&gt; &lt;meta-data android:name=&quot;UMENG_CHANNEL&quot; android:value=&quot;${channel}&quot;/&gt; &lt;!-- UM_CHL_E --&gt;" />

<fileset

dir=""

includes="AndroidManifest.xml" />

</replaceregexp>

<!-- 5、打包release -->

<antcall target="release" />

<!-- 输出渠道包到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一键自动打多渠道包相关推荐

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

    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. linux系统启动流程详解
  2. You must use the Role Management Tool to install or configure Microsoft .NET Framework 3.5 SP1
  3. Debian9.1下安装后没有ifconfig命令
  4. CF1100F Ivan and Burgers(线性基)
  5. Oracle入门(九A)之用户的权限或角色
  6. 互联网日报 | 华为Mate40系列国内发布;陆金所在纽交所挂牌上市;苹果大中华区营收大降28.6%...
  7. js跨域 ajax跨域问题解决
  8. 简单公司主页HTML5模板
  9. Excel教程一:将Excel中一列转换成多行
  10. html得到上传文件类型后缀,js获取上传文件后缀名(附js提交form表单)
  11. [导入]MsAjax Lib- Boolean 类型扩展
  12. DE25 Homogeneous Linear Systems with Constant Coefficients
  13. C#:将图片文件上传到数据库两种方法。
  14. Solidworks常用技巧
  15. Mac、centos安装MongoDB
  16. 如何让你的Python程序支持多语言
  17. ulipad编码问题
  18. c语言编程绝对质数,C语言《绝对素数》
  19. 3D STL文件解析
  20. Java 明文转密文

热门文章

  1. Pintia公共子串查找
  2. 平移变换、旋转变换、放射变换、射影变换8自由度等基础理论
  3. unity 手写板功能 HandwritingBoard
  4. 第12周 oj 进制转换
  5. 第四周项目2长方形面积
  6. 系统资源严重不足,无法启动API
  7. Nacos名字服务(Naming Service)
  8. STL中容器vector迭代器失效的相关问题
  9. 1、[python]经典详细入门
  10. 环状序列(Circular Sequence,ACM/ICPC Seoul 2004,UVa1584)