Android-Ant自动编译打包android项目 -- 2 ----签名与渠道包
上篇介绍了怎么使用ant自动编译打包现有的android项目,这篇将继续介绍如果如何在ant打包应用的时候加入签名信息以及自动打包渠道包。
1. 加入签名信息:
在项目的根目录下建一个ant.properties文件,输入如下内容,其中keystore密码和alias密码可以不指定(防泄漏),那么在命令执行的过程中会要求你输入。
- #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(应用程序版本名)
- #渠道市场列表
- market_channels=91,360,wandoujia,baidu
- #版本号
- version=1.2.1
(2)在我们项目的build.xml中加入如下代码:
- <!-- 渠道包打包脚本 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 clean 无误后再运行 ant deploy 命令就会帮你各个渠道的签名包了(为了全程可以自动执行,ant.properties文件中的keystore的密码可以指定,这样在执行过程中就不需要手动输入密码了),在bin目录的out目录下。
Android-Ant自动编译打包android项目 -- 2 ----签名与渠道包的更多相关文章
- Android - Ant自动编译打包android项目 -- 1(转)
1. 背景: Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其当要将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我 ...
- (转载)Ant自动编译打包android项目
1 Ant自动编译打包android项目 1.1 Ant安装 ant的安装比较简单,下载ant压缩包 http://ant.apache.org (最新的为1.9.3版本),下载之后将其解压 ...
- Ant自动编译打包android项目(转载)
1.1 Ant安装 ant的安装比较简单,下载ant压缩包 http://ant.apache.org (最新的为1.9.3版本),下载之后将其解压到某个目录(本人解压到E:\Progra ...
- ant自动编译打包android项目
源代码及可执行文件下载地址:http://files.cnblogs.com/rainboy2010/antdemo.zip Android打包APK的流程如下: 下面我们开始尝试使用ant进行ap ...
- android ant 自动编译打包
http://www.cnblogs.com/tankaixiong/archive/2010/11/24/1887156.html
- Ant自动编译打包&发布 android项目
Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我们自动编译打包了. ...
- Andorid进阶7—— Ant自动编译打包&发布 android项目
http://www.cnblogs.com/tt_mc/p/3891546.html Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Ecl ...
- 通过ant脚本编译打包android工程
通过ant脚本,编译打包android工程 1.Android程序编译.打包.签名.发布的三种方式: 方式一:命令行手动编译打包 方式二:使用ant自动编译打包 方式三:使用eclipse+AD ...
- [转]Windows中使用命令行方式编译打包Android项目
http://my.oschina.net/liux/blog/37875 网上很多用Ant来编译打包Android应用的文章,毕竟Ant是纯Java语言编写的,具有很好的跨平台性.今天想写个纯win ...
随机推荐
- Android 有用的快捷键
The powerful Android Studio 08 Jun 2016 Android Studio is the official tool for Android development ...
- python基础教程第6章——抽象
1.函数的定义,使用def(或“函数定义”)语句: def hello(name): return ‘Hello.'+name+'!' def fibs(num): result=[0,1] for ...
- 九章算法系列(#4 Dynamic Programming)-课堂笔记
前言 时隔这么久才发了这篇早在三周前就应该发出来的课堂笔记,由于懒癌犯了,加上各种原因,实在是应该反思.好多课堂上老师说的重要的东西可能细节上有一些急记不住了,但是幸好做了一些笔记,还能够让自己回想起 ...
- 利用Azure Automation实现云端自动化运维(4)
在上述基本准备工作做完后,wo们看看如何实现利用Azure Automation实现定时自动开关机的操作,这种场景非常适合Dev/Test环境,因为Azure的虚拟机是按照分钟收费的,所以我们可以在开 ...
- Linux的启动流程以及GRUB详解
一.Linux引导和启动流程 概述,计算机电源接通后通过BISO之后,没有问题,就会去硬盘上找到MBR(Main Boot Record 主引导记录区)位于整个硬盘的0磁道0柱面1扇区, ...
- HeadFirst设计模式读书笔记(4)-工厂模式
工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个.工厂方法让类把实例化推迟到子类. 所有工厂模式都用来封装对象的创建.工厂方法模式通过让子类决定该创建的对象是什么,来达到将对象 ...
- accel-pptp 部署
accel-pptp 是 pptp-client 和 pptpd 的改进版,使用内核 pptp 模块,相比 raw socket 实现方式能提供更好的性能. Ubuntu 12.04 上启用内核 ...
- 常用的IO流
常用的IO流 •根据处理数据类型的不同分为:字节流和字符流 •根据数据流向不同分为:输入流和输出流 字节流:字节流以字节(8bit)为单位,能处理所有类型的数据(如图片.avi等). 字节输入流:In ...
- Linux内核中常见内存分配函数(三)
ioremap void * ioremap (unsigned long offset, unsigned long size) ioremap是一种更直接的内存“分配”方式,使用时直接指定物理起始 ...
- 两年前实习时的文档——Platform学习总结
1 概述 驱动程序实际上是硬件与应用程序之间的中间层.在Linux操作系统中,设备驱动程序对各种不同的设备提供了一致的訪问接口,把设备映射成一个特殊的设备文件,用户程序能够像其它文件一样对设备文件进 ...