Ant打包
Posted 小帆的帆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ant打包相关的知识,希望对你有一定的参考价值。
一、单个打包
1.下载ant,并配置环境变量
http://ant.apache.org/
2.添加环境变量, android SDK目录下的tools文件夹
比如我的:/Users/Forrest/Documents/Android\\ SDK/tools (注意转义)
3.进入项目目录,输入命令
Forrest:ProjectDemo Forrest$ android update project --name ProjectDemo --target 1 --path ./
注:
--name ProjectDemo 项目名称
--target 1 这个数字并不是SDK版本,可以理解为一个序号,获取方法,输入命令:android list targets
--path ./ 指定项目路径,当前目录则为./
4.自动生成如下4个文件
project.properties
local.properties
build.xml
proguard.cfg
5.设置SDK路径
sdk.dir=/Users/Forrest/Documents/Android SDK (可能需要转义,本人转义,可通过)
6. 设置签名属性
把创建的密匙release.keystore放到当前目录下,并在此目录下创建ant.properties空文件,填入以下内容
key.store=release.keystore
key.store.password=antPassword
key.alias.password=antPassword
key.alias=release
proguard.config=proguard.cfg
7.使用ant运行项目
输入命令:ant release
以上主要是为批量打包做准备
二、批量打包
Ant批量打包的基本思想是,每次打包后自动替换渠道号,然后再次打包从而实现多渠道打包的目的。
但是Ant不支持循环,怎样循环打包? 扩展包Ant-contrib能轻松解决这个问题.可以翻墙的同学可以到http://ant-contrib.sourceforge.net/自行下载,下载后直接把ant-contrib-1.0b3.jar放到Ant的lib文件夹即可.
上面这个网站我没有找到.jar文件,还是需要自己操作生成...不懂,所以直接百度,http://ishare.iask.sina.com.cn/f/64797351.html
1.修改AndroidManifest.xml
application标签内添加:
<meta-dataandroid:name="UMENG_CHANNEL"android:value="meizu"/> (必须在同一行内,决不能换行)
2.修改build.xml
将以下红色的直接修改
<?xml version="1.0" encoding="UTF-8"?>
<project name="ThumbPlay" default="help">
<!-- 中间跳过,找version-tag-->
<!-- version-tag: 1 -->
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement location="/Applications/ant-1.9.2/lib/ant-contrib-1.0b3.jar"/>
</classpath>
</taskdef>
<!--上面蓝色部分复制到下面这句上面,再修改红色部分的路径-->
<import file="$sdk.dir/tools/ant/build.xml" />
<!--下面蓝色部分复制到上面这句下面,再修改红色部分的为项目名,黄色部分不动,这部分是循环修改AndroidManifest.xml中UMENG_CHANNEL对应的值-->
<target name="deploy">
<foreach target="modify_manifest" list="$market_channels" param="channel" delimiter=",">
</foreach>
</target>
<target name="modify_manifest">
<!--<replaceregexp file="AndroidManifest.xml" encoding="utf-8" match="android:value="(.*)"" replace=""/>-->
<replaceregexp flags="g" byline="false">
<regexp pattern="android:name="UMENG_CHANNEL" android:value="(.*)"" />
<substitution expression="android:name="UMENG_CHANNEL" android:value="$channel"" />
<fileset dir="" includes="AndroidManifest.xml" />
</replaceregexp>
<!--<property name="out.release.file" value="$out.absolute.dir/$channel.apk"/>-->
<antcall target="release"/>
<copy tofile="$gos.path/ThumbPlay_$channel.apk">
<fileset dir="$out.absolute.dir/" includes="ThumbPlay-release.apk" />
</copy>
<delete includeEmptyDirs="true">
<fileset dir="$out.absolute.dir" includes="**/*"/>
</delete>
<echo message="==========================="/>
</target>
</project>
3.配置ant.properties
application.package=ccom.example.progressdialog --- 包名
ant.project.name=ProgressDialog ---项目名
java.encoding=utf-8
out.absolute.dir=/Users/Forrest/Documents/workspace/ProgressDialog/bin ---项目的bin目录
gos.path=app-version ---包完成后, 生成在项目的根目录下, 存放打生产的apk文件
key.store=/Users/Forrest/Documents/workspace/ProgressDialog/debug.keystore ---签名文件的绝对路径
key.store.password=android
key.alias=androiddebugkey
key.alias.password=android
proguard.config=proguard.cfg ---加上,根代码混淆有关吧
app_version=1.0
market_channels=guanwang,shuihu,wushen,shenhua,huawei ---渠道号,以逗号分割
4.生成渠道包
进入项目根目录输入命令:ant deploy
等待完成............
自己打包成功的步骤如上
参考:
http://blog.csdn.net/clwwlc/article/details/21134449
http://blog.sina.com.cn/s/blog_74c22b21010173f8.html
以上是关于Ant打包的主要内容,如果未能解决你的问题,请参考以下文章