Android.Ant.Python之批量打包(一)

来源:互联网 发布:云淘网络 编辑:程序博客网 时间:2024/05/16 01:28

最近遇到一个项目是面对多个商家共用的,但每个商家用单独的icon和程序名,所以需要必须建立N个工程,然后引用同一个library,如果有100个商家的话就要导出100个.apk文件,如果library每更新一次,又要重新打包N个.apk文件,工作量非常非常的大!

 

后来去搜索了关于很多批量打包的网页,发现都找不到一个明确的解决方法

分享一下我的方法,配置好后只需要执行一个shell文件就可以全自动打包到指定的文件夹(我在Mac平台,Windows的童鞋请用.bat代替)

看之前可以参考一下官网资料 http://developer.android.com/tools/building/building-cmdline.html

简单说明一下步骤:

1、搭建Apache Ant

2、对Android项目提供ant支持

3、提供签名所需的信息、单个项目自动打包

4、修改build.xml脚本,自定义打包信息

5、批量打包!!

 

1、搭建Apache Ant

如果没有搭建过ant的请到官网下载 http://ant.apache.org/

然后打开终端输入 open -e~/.bash_profile

增加

export PATH=${PATH}:/Volumes/dylan/adt-bundle-mac-x86_64-20130522/sdk/tools

exportANT_HOME=/Volumes/dylan/adt-bundle-mac-x86_64-20130522/apache-ant-1.9.1

export PATH=$PATH:${ANT_HOME}/bin

 

路径替换成你自己所在的路径

保存后,在终端输入 ant -version,如果如图显示出版本号就成功了

 

Windows的话把bin目路增加到在PATH就行了

2、对Android项目提供ant支持

终端输入 

 

android update project --name 项目名称 --target 版本id --path 项目路径

 

比如

 

android update project --name com.wtapp.hk.sunmas --target  8 --path /Volumes/dylan/work/workspace_weizhan/com.wtapp.hk.sunmas/

如图

选中项目按F5刷新,发现新增了build.xml、local.properties

 

重要提示:如果你的项目有引用其他项目(library),那么被引用的library项目也需要执行android update project命令来提供ant支持!如果你忘记了,终端会提示哪个项目缺少build.xml等支持ant的文件

 

3、提供签名所需的信息、单个项目自动打包

 

打开local.properties文件

 

增加并修改几个属性

key.store=keystore的路径

key.alias=keystore的Alias(别名)

key.store.password=密码

key.alias.password=密码


也可以不要密码,到时候打包的时候会自动提示输入,不过自动打包的意义就没了,PS:你的密码会暴露请小心

 

到这里你就可以通过命令行进行打包了,马上试一试吧!

 

在终端cd到项目的根目录,然后执行ant release命令

 

 

 

然后就会稀里哗啦的一对文字在窗口滚动,最终显示如下


哈哈!显示耗时6秒,如果是引用太多项目,而且是第一次编译的话耗时可能比较久

这时候你可以在按F5刷新bin目录下被编译的apk文件了,里面很多东西但我们最终需要的是以-release结尾的文件

 

 

这样就可以自动打包是不是很神奇?!但这只是单个项目的打包,并不是批量打包,后面我会讲这么批量打包

 

4、修改build.xml脚本,自定义打包信息

你可以打开项目根目录下的build.xml脚本文件,里面有很多注释,可以理解一下各个文件的用处

 

.apk打包就是靠这个脚本来执行的,这个脚本并没有多少代码,但是你会在末尾发现这一句    <import file="${sdk.dir}/tools/ant/build.xml" />

 

执行的脚本最终会导入并执行"${sdk.dir}/tools/ant/build.xml"下的脚本文件

 

而我们真正要修改的也就是这个文件了,打开它发现有1500多行的代码,可想而知编译打包并不是一件简单的事啊

 

首先修改一个简单的,修改打包的存放目录,统一放在一个地方吧

 

请先备份${sdk.dir}/tools/ant/build.xml!!!以防万一

 

打开${sdk.dir}/tools/ant/build.xml

然后command+F(或Ctrl+F)搜索 -release.apk 我们找到了

 

<property name="out.final.file" location="${out.absolute.dir}/${ant.project.name}-release.apk"/> 

 

我们直接把路径改了,${out.absolute.dir}其实就是bin目录,替换就行

比如       

 <property name="out.final.file" location="/Volumes/dylan/work/weizhan_apk/${ant.project.name}-release.apk"/>

 

然后再执行ant release命令,你会发现apk出现在了你替换的目录中!!

 

还有很多其他的东西可以修改的,比如versionCode、versionName等等自己去研究一下吧

 

5、批量打包!!

 

到这里,我们都配置好了,我们一共用了三个命令而已,对于新的项目我们只需执行一下三步即可

 

android update project --name com.wtapp.hk.sunmas --target 8 --path /Volumes/dylan/work/workspace_weizhan/com.wtapp.hk.sunmas/

 

cd /Volumes/dylan/work/workspace_weizhan/com.wtapp.hk.sunmas

 

ant release

 

我的方法比较笨,就是把每个项目的命令行都放进shell里面,然后执行这个shell就可以全自动批量打包了(Windows可以用bat批处理文件)

 

 

android update project 命令是提供ant支持用的,执行一次就行,批量打包就不加进去了

 

shell创建如下

 

指定目录、新建shell、修改权限、编辑并保存要执行的命令行、执行shell

 

 

这样就可以是实现批量自动打包了

 

我的是笨方法、我认为还可以列出工作空间所有项目、之后智能匹配出相应的命令,然后自动执行全部命令行

听说AppleScripte很强大,有待研究,如果有懂的大牛看到的话请指点指点:P

 

更多细节请参考官网资料 http://developer.android.com/tools/building/building-cmdline.html

0 0
原创粉丝点击