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打包的主要内容,如果未能解决你的问题,请参考以下文章

ant编译build.xml文件

ANT自动打包U3D安卓项目研究笔记

WebService之CXF框架

【前端】vue项目同时引入elementUI和ant-design后,导致打包失败的解决方案。

ant的打包工具

如何写ant的打包命令