Android-Ant自动编译打包android项目 -- 2 ----签名与渠道包
2014-06-25 11:11
716 查看
上篇介绍了怎么使用ant自动编译打包现有的android项目,这篇将继续介绍如果如何在ant打包应用的时候加入签名信息以及自动打包渠道包。
在项目的根目录下建一个ant.properties文件,输入如下内容,其中keystore密码和alias密码可以不指定(防泄漏),那么在命令执行的过程中会要求你输入。
[html] view
plaincopy
#keystore的路径,必须使用正斜杠
key.store=E:/wp_android_sample/me.key
#keystore的密码
#key.store.password=*****
#alias名
key.alias=me
#alias密码
#key.alias.password=******
在项目根目录下运行 ant release 命令就会帮你生成一个经过签名和aligned的apk,生成的apk(your_project_name-release.apk)在bin目录下
实现批量循环打包需要一个类似于for循环的功能,在Ant的核心包里没有相关的For循环的Task,即不支持for循环,但是ant支持第三方扩展包,以支持更多的其他功能。
于是我们要下载相应的支持for循环的扩展包。可以使用开源的Ant-contrib包。下载地址:http://ant-contrib.sourceforge.net/ 。
下载后的解压得到的jar文件放到ant的lib目录。接下来我们就可以打包渠道包了,具体做法是:
(1)首先在ant.properties文件中增加属性 market_channels (渠道列表,以逗号分割),version(应用程序版本名)
[html] view
plaincopy
#渠道市场列表
market_channels=91,360,wandoujia,baidu
#版本号
version=1.2.1
(2)在我们项目的build.xml中加入如下代码:
[html] view
plaincopy
<!-- 渠道包打包脚本 ant deploy-->
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement location="lib/ant-contrib-1.0b3.jar"/>
</classpath>
</taskdef>
<target name="deploy">
<foreach target="modify_manifest" list="${market_channels}" param="channel" delimiter=",">
</foreach>
</target>
<target name="modify_manifest">
<!-- 加上时间戳 -->
<tstampprefix="build.">
<formatproperty="TimeSign" pattern="yyyyMMddHHmm"/>
</tstamp>
<replaceregexp flags="g" byline="false">
<!-- 匹配的内容是 android:value="*****" android:name="UMENG_CHANNEL" -->
<regexp pattern='android:value="(.*)" android:name="UMENG_CHANNEL"' />
<!-- 匹配之后将其替换为 android:value="渠道名" android:name="UMENG_CHANNEL" -->
<substitution expression='android:value="${channel}" android:name="UMENG_CHANNEL"' />
<!-- 正则表达式需要匹配的文件为AndroidManifest.xml -->
<fileset dir="" includes="AndroidManifest.xml" />
</replaceregexp>
<property name="out.release.file" location="${out.absolute.dir}/${ant.project.name}_${channel}.apk" />
<!--包 -->
<antcall target="release" />
<!--输出渠道包到bin/out目录下 -->
<copy tofile="${out.absolute.dir}/out/${ant.project.name}v${version}-${channel}.apk" file="bin/${ant.project.name}-release.apk"/>
</target>
在项目根目录下运行 ant deploy 命令就会帮你各个渠道的签名包了(为了全程可以自动执行,ant.properties文件中的keystore的密码可以指定,这样在执行过程中就不需要手动输入密码了),在bin目录的out目录下。
1. 加入签名信息:
在项目的根目录下建一个ant.properties文件,输入如下内容,其中keystore密码和alias密码可以不指定(防泄漏),那么在命令执行的过程中会要求你输入。[html] view
plaincopy
#keystore的路径,必须使用正斜杠
key.store=E:/wp_android_sample/me.key
#keystore的密码
#key.store.password=*****
#alias名
key.alias=me
#alias密码
#key.alias.password=******
在项目根目录下运行 ant release 命令就会帮你生成一个经过签名和aligned的apk,生成的apk(your_project_name-release.apk)在bin目录下
2. 自动打包渠道包:
实现批量循环打包需要一个类似于for循环的功能,在Ant的核心包里没有相关的For循环的Task,即不支持for循环,但是ant支持第三方扩展包,以支持更多的其他功能。于是我们要下载相应的支持for循环的扩展包。可以使用开源的Ant-contrib包。下载地址:http://ant-contrib.sourceforge.net/ 。
下载后的解压得到的jar文件放到ant的lib目录。接下来我们就可以打包渠道包了,具体做法是:
(1)首先在ant.properties文件中增加属性 market_channels (渠道列表,以逗号分割),version(应用程序版本名)
[html] view
plaincopy
#渠道市场列表
market_channels=91,360,wandoujia,baidu
#版本号
version=1.2.1
(2)在我们项目的build.xml中加入如下代码:
[html] view
plaincopy
<!-- 渠道包打包脚本 ant deploy-->
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement location="lib/ant-contrib-1.0b3.jar"/>
</classpath>
</taskdef>
<target name="deploy">
<foreach target="modify_manifest" list="${market_channels}" param="channel" delimiter=",">
</foreach>
</target>
<target name="modify_manifest">
<!-- 加上时间戳 -->
<tstampprefix="build.">
<formatproperty="TimeSign" pattern="yyyyMMddHHmm"/>
</tstamp>
<replaceregexp flags="g" byline="false">
<!-- 匹配的内容是 android:value="*****" android:name="UMENG_CHANNEL" -->
<regexp pattern='android:value="(.*)" android:name="UMENG_CHANNEL"' />
<!-- 匹配之后将其替换为 android:value="渠道名" android:name="UMENG_CHANNEL" -->
<substitution expression='android:value="${channel}" android:name="UMENG_CHANNEL"' />
<!-- 正则表达式需要匹配的文件为AndroidManifest.xml -->
<fileset dir="" includes="AndroidManifest.xml" />
</replaceregexp>
<property name="out.release.file" location="${out.absolute.dir}/${ant.project.name}_${channel}.apk" />
<!--包 -->
<antcall target="release" />
<!--输出渠道包到bin/out目录下 -->
<copy tofile="${out.absolute.dir}/out/${ant.project.name}v${version}-${channel}.apk" file="bin/${ant.project.name}-release.apk"/>
</target>
在项目根目录下运行 ant deploy 命令就会帮你各个渠道的签名包了(为了全程可以自动执行,ant.properties文件中的keystore的密码可以指定,这样在执行过程中就不需要手动输入密码了),在bin目录的out目录下。
相关文章推荐
- Ant自动编译打包android项目(二)----签名与渠道包
- Ant自动编译打包android项目(二)----签名与渠道包
- Android-Ant自动编译打包android项目 -- 2 ----签名与渠道包
- Android使用ant对项目进行编译签名优化打包
- Ant自动编译打包&发布 android项目
- Ant自动编译打包&发布 android项目
- Ant自动编译打包&发布 android项目
- Ant自动编译打包android项目
- Ant自动编译打包&发布 android项目
- Andorid进阶7—— Ant自动编译打包&发布 android项目
- [Android] mac上申请签名及使用ant自动编译打包签名APK
- Android使用Ant自动编译签名打包详解
- Android使用ant对项目进行编译签名优化打包
- Windows系统下Ant自动编译打包并签名Android应用——探索篇
- 利用Ant 做Android自动化编译实现自动签名, 以及一次生成多个渠道版本.
- Ant自动编译打包android项目
- Ant自动编译打包&发布 android项目
- Android - Ant自动编译打包android项目 -- 1
- Android使用ant对项目进行编译签名优化打包
- Windows系统下Ant自动编译打包并签名Android应用——实践篇