linux下apk批量打包

来源:互联网 发布:阿里云cdn加速怎么用 编辑:程序博客网 时间:2024/05/22 16:39

1.思路
整个思路就是,把需要修改的参数以<meta-data>的方式定义在项目的AndroidManifest.xml文件中,具体参数如何获取及具体用法这儿我就不多说,然后打包好一个完整的apk包作为参照包。然后用python脚本把调用apktool工具把apk解开,修改xml文件里面<meta-data>节点下对应参数的值,然后再把apk封起来。提供参数的文件我这儿用的是一个txt的文件,利用python脚本循环读取txt中的每一行,每一行代表一个apk所需的所有参数,使用时以'#'字符split.具体的可参照python脚本的主函数. 当然各位使用的话可以根据自己的需要另行修改,即使对python不懂的童鞋也不用慌张,其实我也不懂,但只要你有一定代码基础,再花十几分钟认真看看这个脚本文件,就会读懂具体的情节,然后根据自己需要修改。


2.崭新的linux环境下需要安装:
以下所有操作都是在linux终端里面用命令行搞定,所以大多数情况下是需要超级管理员权限。
①.jdk/jre
刚开始搞这个'工具'时,用的是一个新装的ubuntu12.04的系统。没想到会需要装jdk/jre的环境。但是在执行python脚本时,看日志报了一个错误,提示需要jre的环境,所以就想起还没装它的包,一查看ubuntu自带了jdk的包,所以就直接使用命令行装了。 
②.expect包
为嘛要装这个呢,是因为在打包apk的时候,需要输入签证秘钥时,用到了shell脚本来处理交互动作,就是检测到日志输出:Enter Passphrase for keystore时就输入密码,shell脚本此处用处就是不需要自己手动来输入,直接用脚本交互。在我自己玩这个打包的时候,发现我装的ubuntu日志输出要求输入秘钥时竟然报出的是:输入密钥库的口令短语。所以这个需要根据自己装的系统来查看具体情况,然后适当修改shell脚本里面的东西。如何查看呢,直接在终端里面用命令行运行这个shell脚本,就可以看到它的系统日志提示。
③.python环境
为嘛需要装这个运行环境,我就不多说。具体如何装,大家去go去哈。
④.androidSDK环境,要用到zipalign并赋予可执行权限
因为新装的linux系统,所以没有android的开发环境,在给apk打包的时候,最后一步用到了androidSDK里面的zipalign这个工具。如果你没装这个包,在执行python脚本的时候,日志会报错告诉你找不到这个包。所以我就索性在官网下载了一个android开发的adt,里面附带了最新版SDK,然后就把SDK,tools下的这个包copy到/usr/local/bin下面去,并赋予可执行权限。
⑤.apktool 三个文件都赋予权限.
apktool工具,是在解开apk时会用到,所以需要装这个包。这个需要在网络上去下载,我下载的地址是

http://code.google.com/p/android-apktool/downloads/list 到这个里面去把第一个和最后一个ForLinux的都下载下来,解压缩有三个文件,aapt、apktool、apktool.jar  都拷贝到 /usr/local/bin下面去,并赋予可执行权限。

 

3.准备完成后,如何打包

以上一切工作准备好之后,只需要执行python脚本,就会自动打包了。txt文件中有多少行,就会打包多少个,如果情况正常的话。

 

注意的地方:
1.shell脚本中 spawn /usr/bin/jarsigner -verbose -keystore 自己的秘钥文件名 -signedjar $new_name $origin_name 生成秘钥时的Alias
2.注意文件的路径及命名,比如所需参数的txt文件的路径,python中调用的shell脚本的路径,还有已经存在原始的apk的路径和命名,目前提供的文件中都是放在同一目录下的相对路径。

3.最后打包出来的apk文件也在同一目录下,但是请大家验证一下其可用与否,主要是验证它的签名是否正确,最简单的方式就是覆盖安装确定正确的包,看能否覆盖安装成功。
4.整个过程中涉及到很多linux基础命令,如果linux菜鸟,最好请教一下同事或朋友帮忙。

5.之前尝试了把这套脚本放在windows下去执行,但无论我如何装执行shell脚本的兼容包神马的,都没能成功。这套脚本的原创者是android开发者@杨豪 同学。作为高富帅的他是在自己的mac下运行的,所以我只是把它移植到linux下了而已。谢谢@杨豪 同学给于我莫大的帮助哈。

 

资源文件位置:http://download.csdn.net/detail/hshuaijun55/6017699

原创粉丝点击