mac下ant批量打包全过程

由于目前渠道很多,需要批量打包,一般是window下打包,但是mac下如何批量打包呢?其实挺麻烦的,具体步骤如下:

一.打包前准备工作

1.首先确定你的JDK版本为1.6!

2.在AndroidManifest.xml中application标签下添加一个用来识别渠道的标签:

<meta-data  android:name="qudao"  android:value="channel" />

3.为了让ant支持循环功能,我们要在Android SDK/tools/lib下放一个ant-contrib-1.0b3.jar包

4.项目中放置第三方jar包的文件夹必须叫libs而不是lib

二.build.xml等文件的生成和配置

1.通过终端(cmd)命令自动生成build.xml和local.properties两个文件,方法如下:

<sdk>/tools/android update project -p <project> -t <target>

例如:

/Users/moushou/Downloads/AndroidSDK/tools/android update project -p /Users/moushou/Documents/workspace/HelloWorld -t 14

其中<sdk>为SDK全路径,<project>为项目全路径,<target>为API版本。

执行完成截图如下:

执行完成后,Refresh你的项目就会发现项目的根目录下多了两个文件:build.xml和local.properties

其中local.properties的内容是:

# This file is automatically generated by Android Tools.

# Do not modify this file -- YOUR CHANGES WILL BE ERASED!

#

# This file must *NOT* be checked into Version Control Systems,

# as it contains information specific to your local configuration.

# location of the SDK. This is only used by Ant

# For customization when using a Version Control System, please read the

# header note.

sdk.dir=/Users/moushou/Downloads/AndroidSDK

project.properties的内容如下:

# This file is automatically generated by Android Tools.

# Do not modify this file -- YOUR CHANGES WILL BE ERASED!

#

# This file must be checked in Version Control Systems.

#

# To customize properties used by the Ant build system use,

# "ant.properties", and override values to adapt the script to your

# project structure.

#proguard.config=proguard.cfg

# Project target.

target=Google Inc.:Google APIs:14

proguard.config=proguard.cfg

项目的目录结构如下图所示:

:project.properties中target=GoogleInc.:GoogleAPIs:14代表所使用的SDK的版本,可进行手动修改。

2.手动为项目新建一个File,该文件名为:ant.properties,创建完成项目的目录结构如下图:

创建完成后在ant.properties中添加如下内容:

key.store=<keystore>

key.alias=<key>

key.store.password=<keystore pwd>

key.alias.password=<key pwd>

market_channels=xx,yy,zz

app_version=1_0_build_0

例如:

key.store=/Users/moushou/Desktop/qianming

key.alias=meilihuaduo

key.store.password=123456xx

key.alias.password=123456xx

market_channels=anzhuoshichang,jifengshichang,baiduyingyongzhongxin

app_version=1_0_build_0

其中:

keystore为签名文件的全路径。

key.alias为签名需要使用的私钥。

key.store.password为私钥库的密码。

key.alias.password为私钥的密码。

market_channels为渠道集合。

app_version为apk的版本(此字段可根据自己喜好编写)。

--------------------------------------------------------------------------------------------------

至此,除build.xml外,其余文件配置完成。

三.build.xml的编写方法:

1.修改build.xml的第二行,修改方法如下:

<project name="HelloWorld" default="release">

其中name为你项目的名称,default设置为release。

2.循环替换AndroidManifest.xml中qudao的value值并进行自动签名打包,方法如下:

1 <import file="${sdk.dir}/tools/ant/build.xml" />

2     <property name="out.unaligned.dir" value="/Users/moushou/Desktop/HelloWorld_${app_version}/" />

3     <mkdir dir="${out.unaligned.dir}" />

4     <target name="modify_update_file">

5         <echo>*********************** make channel ${channel}</echo>

6

7         <replaceregexp file="AndroidManifest.xml"

8             match=‘channel‘

9             replace=‘${channel}‘

10             byline="false"

11             encoding="utf-8"

12         />

13         <property name="out.unaligned.file" location="${out.unaligned.dir}/HelloWorld_${app_version}_${channel}_android.apk"/>

14

15     </target>

16

17     <target name="make_one_channels" depends="savemanifest,modify_update_file,release,replacemanifest,deletebin" description="description">

18     </target>

19

20     <target name="replacemanifest">

21         <echo>*********************** replacemanifest</echo>

22         <delete file="${basedir}\AndroidManifest.xml"/>

23         <copy file="..\temp\build\META-INF\AndroidManifest.xml" todir="${basedir}" encoding="utf-8"/>

24     </target>

25

26     <target name="savemanifest">

27         <echo>*********************** savemanifest</echo>

28         <copy file="${basedir}\AndroidManifest.xml" todir="..\temp\build\META-INF" encoding="utf-8" />

29     </target>

30

31     <target name="deletebin">

32         <delete dir="${basedir}\bin" />

33     </target>

34

35     <taskdef name="foreach" classname="net.sf.antcontrib.logic.ForEach" classpath="/Users/moushou/Downloads/AndroidSDK/tools/lib/ant-contrib-1.0b3.jar" />

36     <target name="make_channels">

37         <foreach target="make_one_channels" list="${market_channels}" delimiter="," param="channel">

38         </foreach>

39     </target>

其中:

1.out.unaligned.dir的value值为apk输出文件夹的绝对路径,文件夹采用HelloWorld结合app_version命名,app_version为ant.properties中的app_version

2.out.unaligned.file的location为apk最终的输出路径,apk命名采用HelloWorld加app_version加当前的channel加android方式

3.说一下打包的过程:

(1)第36行make_channels的target是ant的入口,该target中使用foreach循环调用名为make_one_channels的target(第17行)并把market_channels集合中的每个值替换给channel

(2)make_one_channels的target指定了每次打包的过程:

   savemanifest:打包前先将原始的AndroidManifest.xml复制到与项目同一层级目录下的temp下build下META-INF中

   modify_update_file:匹配到AndroidManifest.xml中的channel并将其替换

   release:自动编译加签名

   replacemanifest:删除AndroidManifest.xml,将temp/build/META-INF中的原始AndroidManifest.xml复制回项目根目录下

   deletebin:删除bin文件(:这步很重要,否则只能打出一个渠道的APK,当时做这块的时候碰到的问题)

4.第35行taskdef标签下的classpath是ant-contrib-1.0b3.jar的绝对路径

四.打包方法的使用

打开终端(cmd),执行:

cd /Users/moushou/Documents/workspace/HelloWorld

然后执行:

ant make_channels

此时,打包就开始进行啦!当出现BUILD SUCCESSFUL代表打包成功!如下图所示:

此时你会发现你输出的文件夹中多了三个APK,如下图:

1.每次打包前一定要删除掉temp/build/META-INF中的AndroidManifest.xml,特别是在给不同项目做打包时

   2.打包前请检查AndroidManifest.xml中qudao的value值是否为channel,特别是打包失败后再次重新打包的时候一定要将value值改为channel

   3.如果打包时出现Cannot recover key错误导致BUILD FAILD的话,请检查ant.properties中key.alias.password的值后面是否有多余的空格!有的话请把空格删除掉!

五.在代码中获取渠道值,方法如下:

       try {

ApplicationInfo appInfo = getPackageManager().getApplicationInfo

                         (getPackageName(),PackageManager.GET_META_DATA);

qudao = appInfo.metaData.getString("qudao");

} catch (NameNotFoundException e) {

e.printStackTrace();

}

时间: 2024-11-11 01:08:48

mac下ant批量打包全过程的相关文章

cocos2dx Android 使用ant 批量打包

参考文章: 例子:http://www.2cto.com/kf/201305/208139.html http://blog.csdn.net/ljb_blog/article/details/12709983 eclipse 如何支持ant:http://www.cnblogs.com/sw926/p/3238512.html 环境介绍: 引擎:cocos2dx2.2.2 开发平台:mac jdk 1.7 注:参考了以上文章,最后发现打包也不用自己下ant,也不用命令行, 而是设置 <proj

使用Ant批量打包Android应用完全指南

本文章由Socks完成,博客地址:http://blog.csdn.net/zhaokaiqiang1992 转载请说明! 折腾了一下午,百度了一下午,终于实现了使用Ant对Android应用的批量打包,也算是了却了我的一桩心事.虽然网上的这部分教程也有,但是感觉写的不是详细.更为重要的是,各种方法之间的差异比较大,对于新手来说,各种方法之间的选择是极为痛苦的,一个方法一个方法的去实验,是很浪费时间的.因此,我想给大家提供一套完整的,详细的Ant打包Android应用的教程,方便大家的学习和以后

【Android开发经验】使用Ant批量打包Android应用全然指南

本文章由Socks完毕.博客地址:http://blog.csdn.net/zhaokaiqiang1992 转载请说明. 折腾了一下午.百度了一下午,最终实现了使用Ant对Android应用的批量打包,也算是了却了我的一桩心事.尽管网上的这部分教程也有,可是感觉写的不是具体. 更为重要的是.各种方法之间的差异比較大.对于新手来说.各种方法之间的选择是极为痛苦的,一个方法一个方法的去实验,是非常浪费时间的. 因此,我想给大家提供一套完整的,具体的Ant打包Android应用的教程,方便大家的学习

Android采用Ant批量打包

Ant批量打包的目的是:Android应用市场繁杂,有时候可能需要统计你的app在各个渠道的下载量等信息,而统计各个渠道时是要做区分的,你需要在项目的配置文件中添加数据元,来标示我们的应用是在哪个渠道上发布的. 1.准备工作: 在正式开始Ant打包前,需要下载和配置Ant环境,下载地址:ant下载 下载后解压安装包,解压后的目录如下: 接下来就是配置Ant的环境变量: 创建ANT_HOME变量,填入路径:E:\apache-ant-1.9.7-bin\apache-ant-1.9.7 然后在Pa

androd Eclipse Ant 批量打包

androd Eclipse Ant 批量打包的相关网址  有全部的教程  如遇到打包的问题  可从以下的链接中查找答案  谢谢这些前辈分享的资源  在此引用表示感谢 http://blog.csdn.net/mxthing/article/details/45716671http://www.android100.org/html/201509/14/181502.html http://ant.apache.org/bindownload.cgi http://blog.csdn.net/z

Mac下cocos2dx-3.0打包Android时,提示&amp;quot;SimpleAudioEngine.h&amp;quot;not found的解决方法

前段时间触控公布cocos2dx-3.0,在升级之后试过之后,在最初的不习惯之后,感觉比之前的好用了不少,在下之前一直是用xCode模板创建,这回算是一口气升到顶了. 之后再一次编程时须要用到SimapleAudioEngine,而之后调试的时候在iPhone上全然没问题,可是在Android真机上调试时,却提示"SimpleAudioEngine.h" not found,在网上查了下,应该是库没有导入,可是因为我对eclipse了解不多,并且import入的时候也有莫名其妙的错误,

CygWin模拟Linux环境进行Ant批量打包

运行环境:Windows7 + Cygwin + ant 第一种:有源码 这种方式比较 简单.利用ant打包.直接shell脚本修改 配置渠道号的文件.我们目前是用的umeng的.在AndroidManifest.xml里.提供一个简单的修改渠道号的脚本. 配置: 1.环境变量配置: (1)cd~ 或 cd /home 进入用户目录 其中.bash_profile文件为配置文件. (2)输入cat .bash_profile查看该文件 其中配置了ndk路径,ant路径,sdk相关路径,也可以写成

mac下android工程打包时的ant安装

一.Ant含义        Ant本身就是一种流程脚本引擎,用于自动化调用程序完成项目的编译.打包.测试等.ANT是纯JAVA语言编写的,所以具有很好的跨平台性.Ant运行是只需要一个XML文件(构建文件),所以操作比较简单.Ant通过调用target树,就可以执行各种task.每个task实现了特定接口对象.由于Ant构建文件是XML格式的文件,所以很容易维护和书写,而且结构清晰.由于Ant的跨平台性和操作简单,所以很容易集成到一些开发环境中.      (简单了解了下,具体的可以百度,后面

Mac下利用eclipse打包cocos2dx安卓apk

上一篇博客中我们已经配置好了JDK和ANT,接下来我们就可以使用eclipse将我们开发好的cocos2dx项目进行打包了. 首先,我们需要准备好下面的内容 配置环境变量,打开"终端",输入"pico .bash_profile"命令 点击回车后,可以看到如下内容,根据自己的目录结构配置好环境变量 配置好之后,输入"Ctrl + X"保存内容,然后输入"Y"确定,点击回车,环境变量就配置好了. 然后,当我们在XCode中创建好