如何在Linux上配置自动打包并签名APK的环境

我们在开发Android APP的过程中,总会有一步,就是在完成开发后,会涉及到APP的打包与签名。一般情况下,打单个包的时候,时间上不会要很久。开发人员在开发环境下,就能直接打包并对包进行签名。
然后,当我们的APP需要做推广与合作时,我们就要分不同的渠道给到推广或合作方。这种情况下,会就遇到,经常需要打不同渠道号的包。这在10个包之内,开发人员手动打还可以接受。一旦出现100个渠道以上,开发人员就直接崩溃了。这手动打起一,保守估计要一天以上。渠道还不能出错。
要解决这个办法,就是批量打包了。 在Windows环境下打包,网上已经有很多了。像是还有批量打包的工具。这里就不再进行讨论。
现在我们直接说怎么在CentOS下配置这个批量打包并签名的环境,来进行批量打包。
在开始之前,最好有一些关于下面几个名词的了解,会更有助于我们理解这篇文章。什么是SDK, aapt, PATH。
目前,实行的思路如下:
a.先把线上主渠道号的包进行反编译。
b.修改APK的AndroidManifest.xml配置文件的渠道号(我们是放在配置文件内,不知道其他公司是否一样)
c.然后进行APK的打包并实现签名,新的渠道包就算完成。
现在先进行环境的安装:
1.安装aapt和apktool命令以及apktool.jar。
安装步骤直接参考:http://code.google.com/p/android-apktool/
在Linux环境下的安装步骤如下:
  1. Download apktool-install-linux-* file
  2. Download apktool-* file
  3. Unpack both to /usr/local/bin directory (you must have root permissions)
在这一步一定要注意【aapt command in a PATH】,就是说aapt命令要加入环境变量(PATH)。具体如何把aapt命令,加入环境变量(PATH)里。
#vi /etc/profile
编辑此文件在最后加上:
export PATH=$PATH:/usr/local/aapt:/usr/local/apktool
让刚加上的变量,立刻生效,直接执行:
#source /etc/profile
查看是否已生效,直接:
# echo $PATH
应该能看到如下图片:
2.安装 JRE 1.6 (Java Runtime Environment) JDK 的环境。
关于如何安装JDK以及Apktool的使用方法,请参考本博客另一篇文章,都有提到。在这里我就不再重复写了。
按上面二步操作完成以后,就可以进行反编译,修改AndroidManifest.xml配置的渠道,最后再打包签名了。
在进行打包的过程可能会遇到几个问题,以及对应的解决方法:
a.出错~~
I: Smaling...
I: Building resources...
aapt: /lib/libz.so.1: no version information available (required by aapt)
I: Copying libs...
I: Building apk file...
aapt: /lib/libz.so.1: no version information available (required by aapt)
这个在打包与签名的时候会提示,说明libz的版本与aapt不兼容。需要进行libz的版本升级。
这里要注意的重点是,如果我们的机器是64位的,因为Android都是基于32开发的,它依赖的是32位的libz。所以在升级的时候,需要特殊的操作。如下:
wget http://124.202.164.4/download/36593658/49562183/3/gz/12/28/1359618838796_796/zlib-1.2.7.tar.gz
tar zxvf zlib-1.2.7.tar.gz
cd zlib-1.2.7
export CFLAGS=-m32  【注意这里,这才是重点】
./configure --prefix=/usr/local/zlib-1.2.7-32
make && make install
ll /lib/libz.so.1
mv /lib/libz.so.1 /lib/libz.so.1_backup
ln -s /usr/local/zlib-1.2.7-32/lib/libz.so.1 /lib/libz.so.1
如果出现此问题,说明你java环境没有安装好,请仔细查看:
/usr/local/bin/apktool: line 78: exec: java: not found
反编译命令:
/usr/local/bin/apktool  d -f /mnt/html/shell/package/mumayi/mumayi.apk /mnt/html/shell/package/mumayi/cache/mumayipackage
打包命令:
/usr/local/bin/apktool b -f /mnt/html/shell/package/mumayi/cache/mumayipackage /mnt/html/shell/package/mumayi/apk/mumayipackage_mumayi.apk
 参考文章与资料:

《如何在Linux上配置自动打包并签名APK的环境》有一个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注