Ant 多渠到混淆打包

2015-05-14 17:19:56 +08:00
 pgyer

最近刚忙完了一个项目,本以为可以好好放松一下了,没想到客户提了一个变态的要求,同时要打包上线100多个渠道,需要替换图标,启动页还有一堆烦人的参数,粗略估计一个一个打包,至少两天时间,真是醉了。心中一阵草泥马飞过之后,想着自己的尾款还没到账,只能硬着头皮搞一个自动化的打包脚本。

1、首先安装ant ,下载地址http://ant.apache.org/不会安装的可以参考http://yarin.blog.51cto.com/1130898/692569。

2、利用Ant批量打包的基本思想是,每次打包后自动替换渠道号,以及自己要替换的参数,比如本demo就要不仅要替换渠道号,一些参数,还要替换图标和启动页面。

这样带来了一个问题:Ant不支持循环,怎样循环打包?

扩展包Ant-contrib能轻松解决这个问题

可以翻墙的同学可以到http://ant-contrib.sourceforge.net/自行下载,或者去我的云空间下载http://pgyer.qiniudn.com/ant-contrib-1.0b3.jar,下载后直接把ant-contrib-1.0b3.jar放到Ant的lib文件夹即可。

3、生成并改写build.xml 执行如下命令

android update project --name testbyfrank -t 1 -p /Users/frank/Documents/workspace/testbyfrank

此命令在当前的工程目录生成build.xml, -t 表示targetid 可以通过android list targets查看 -p 指定工程目录

修改build.xml 代码见demo

4、生成ant.properties 内容如下:market_channels是用来替换的参数以:和-分割。

java.encoding=utf-8

out.absolute.dir=/Users/frank/Documents/publish_testbyfrank

gos.path=/Users/frank/Documents/publish_testbyfrank_bin

proguard.config=proguard.cfg

app_version=1.5

market_channels=\u65B0\u77E5:60-xinzhi,\u897F\u5149:18-xiguang

5、project.properties文件中打开混淆代码,去掉下面所在行的#

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

6、编写proguard-project.txt,demo中有,大家自行删减

6、执行命令ant deploy就慢慢等待生成的多渠道的apk吧

7、最后在目录/Users/frank/Documents/publish_testbyfrank_bin下生成了两个apk

testbyfrank_xiguang.apk 和testbyfrank_xinzhi.apk

自己抽离出来的demo已经经过我的测试没有问题,大家可以通过http://pgyer.qiniudn.com/testbyfrank.zip下载示例代码。

注意事项及可能遇到的问题

1.工程如果引用到其它类库工程,请先生成类库的build.xml

2.如果提示invalid resource directory name: /Users/frank/Documents/workspace/appcompat_v7/bin/res/crunch等类似的错误请先手动删除bin目录,重新执行ant deploy命令

3.如果出现Can't read [/Users/frank/Documents/workspace/testbyfrank/libs/Android_Location_V1.1.0.jar] (No such file or directory)类似的错误,表明你没有用到这个类库,请在混淆文件中去掉对应的即可。

4.如果xml文件有用到自定义的控件,对应的java文件不能混淆

5.如果用的gson的库,对应的实体类不可以混淆。

655 次点击
所在节点    蒲公英
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/191087

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX