Ant批量打apk包

2016.11.5~2016.11.6令人难忘的周末,四个前端同事徒手将游戏打出了将近100个安卓apk包,还不包括打包中途替换渠道名失误,或者AndroidManifest.xml配置错误而返工的包,一个包不超过5min耗时,这感觉多么酸爽。于是乎,需要研究下自动打包怎么实现。

在网上搜了蛮多资料,无外乎Ant打包,美团批量打包(http://tech.meituan.com/mt-apk-packaging.html)具体问题具体分析,决定采用两者结合的方式,完美解决我们游戏的打包。

Ant打包

  • 前期准备工作
  • ant下载安装
    ant不是eclipse和android SDk里面自带的ant,而是从这里下载的 – Ant官网http://ant.apache.org/ , 下载Ant
    这里写图片描述

zip解压到目标目录,配置环境变量
1:解压apache-ant-1.9.7-bin.zip到d:\Program Files (x86)
2:设置环境变量
ANT_HOME :
d:\Program Files (x86)\apache-ant-1.9.7

ANDROID_HOME:
E:\mine\android\adt-bundle-windows-x86_64-android-6.0\adt-bundle-windows-x86_64-20140702\sdk

JAVA_HOME:
C:\Program Files\Java\jdk1.8.0_60

CLASSPATH:
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

path 增加:
%ANT_HOME%\bin;%ANT_HOME%/lib;
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
%ANDROID_HOME%\tools;(重要,没有这句,执行android相关命令会提示Android不是内部系统命令)

3:ant是否安装成功了?
这里写图片描述

输入ant,输出如上图所示解雇,证明安装成功了。
4:扩展包Ant-contrib
Ant可以实现打包,但是不支持循环打包,扩展包Ant-contrib恰恰支持foreach。
在网址(http://ant-contrib.sourceforge.net/)下载Ant-contrib,放到ant的安装目录,即:
Ant-contrib

  • 编写打包的代码
    1:生成build.xml和proguard-project.txt
    在cmd 用cd到eclipse工程路径或者直接在该项目工程下,Shift+鼠标右键,选中:在此处打开命令行,
    输入如下指令:
    android update project -n 项目名字 -p(这里有一个空格) .(点不要忘了)
    项目名字:
    这里写图片描述
    结果:
    这里写图片描述

刷新下eclipse工程:可以看到
这里写图片描述

build.xml用来编写代码执行批量打包的逻辑。
2:手动生成文件:
ant.properties:
local.properties

这里写图片描述

3:来解析properties文件里的内容
ant.properties
这里写图片描述

签名shol.keystore放置在根目录下。
local.properties
这里写图片描述

可以把这两个当做配置表来看,里面配置了一些变量。
4:build.xml
明确我们游戏需要替换:
apk包名com.xx.xx.xx
这里写图片描述

JPUSH_APPKEY:
这里写图片描述

CHANNEL_ID
这里写图片描述

这几个配置在:ant.properties
这里写图片描述
格式为:(包名1:appkey1:渠道名1,包名2:appkey2:渠道名2)

build.xml代码上:
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

测试的时候,可以分成三个步骤,
step1:解析start —解析end
step2:替换配置start–替换配置end
step3:打包

step1:检测打印出来的是否正确
这里写图片描述

如果解析正确,接下来替换配置:
step2:屏蔽执行完替换配置打包后 重新 还原 Androidmanifest.xml 的代码段

这里写图片描述
查看Androidmanifest.xml里三项值是否改了

这里写图片描述

这里写图片描述

这里写图片描述

step3:打包。把step2测试时候屏蔽的代码段开启回来。
测试用的包名package_1不符合标准,这里我用其他的包名替代
这里写图片描述

这里写图片描述

这里写图片描述

问题集锦

  • xml 3 字节的 UTF-8 序列的字节 3 无效
    替换配置的时候,加上这句
    这里写图片描述

  • 打包中途,报错,ant/build.xml 某一行错误 null return 1
    这里写图片描述
    这里写图片描述
    eclipse工程清理下。

  • 签名是否正确
    对比证书指纹可以看出引用的是不是同一个keystore
    这里写图片描述

这里写图片描述

  • 怎么反编译apk?
    通过apktool

这里写图片描述

这里写图片描述

这里写图片描述

  • Java中如何取渠道名?
    这里写图片描述
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值