每次apk文件的打包也是个蛋疼的事情,用ant多渠道打包也是非常的流畅的,随着版本到了22很多的东西出问题了,不管的release还是debug包,我也是看见朋友推荐的说是一个叫蓝贝壳儿的打包插件,当然这是一个eclipse的插件,用as开发的可能不需要,但是我们公司还是用ec开发,所以我是用了,不喜欢ant那样的控制台命令行来打,每次忘记命令还得去百度,太麻烦了。
不多说,我们http://www.orchidshell.com/这里先去下载压缩包,将OrchidShell文件夹拷贝到Eclipse的dropins文件夹下后,启动(重启)Eclipse,这样插件算是装了,到底装好没,那就
在需要打包的Android工程上点击右键可看到菜单 “兰贝壳儿”,说明安装成功,看图:
中文的插件用起来有信心多了吧,我们先依赖更新下,然后奇迹的事情发生了,你看:
是不是libs文件夹下多了个更新的jar,然后控制台也会打印相应的日志(这里就不贴图了),然后是不是还生成了一个bom.xml,没错这就是打包渠道的配置文件,使用简单方便。
这里使用的第三方jar包,使用maven管理jar包的组织形式
需要指出的是,这里的jar包必须有一个统一的下载网站。该网站可以是任何一家maven库或者maven库镜像。如果您自己有Team的服务器,当然也可以自己建一个Maven库来管理常用的通用组件。
反正我用得是默认的maven配置,然后我们就准备去打包。
注意打包发布前,需要修改配置文件中对应的项目:
如果你还没有签名文件,那么我们就来用jdk自带的故居apktool来生成签名文件:
步奏如下:
输入<android.keystore>的主密码(如果和 keystore 密码相同,按回车):首先,我们需要一个keystore,当然已经有了的话就不用这一步了:cmd下:进入到jdk的bin目录,这样的话,android.keystore文件就会生成在这个目录下,签名的时候我们需要这个文件cd C:\Program Files\Java\jdk1.6.0_10\bin>keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore输入keystore密码:再次输入新密码:您的名字与姓氏是什么?[Unknown]: 您的组织单位名称是什么?[Unknown]: richer您的组织名称是什么?[Unknown]:richer您所在的城市或区域名称是什么?[Unknown]: shanghai您所在的州或省份名称是什么?[Unknown]: shanghai该单位的两字母国家代码是什么[Unknown]: 86....... 正确吗?[否]: Y
其中参数-validity为证书有效天数,这里我们写的大些10000天。还有在输入密码时没有回显(尽管输就是啦) 并且 退格,tab等都属于密码内容,这个密码在给.apk文件签名的时候需要.
看节点就知道,里面包括渠道信息的配置和签名配置,以及打包后输出的目录。
其中channels 的keyname=””是指在你的AndroidManifest.xml文件中配置的Application级的<Meta-data>的名称。然后渠道有5个,所以会打出5个apk文件包来,keystore就是你对apk文件进行签名时使用的个人密钥。需要你将path修改为你的密钥库路径,passwd为密钥库的密码。
下面的alias是指每个密钥对应的别名,以及对应的密码。如果你有多个alias,可以在这里指定,插件会选取第一个可用的alias以及密码对应的密钥Key对你的apk文件进行签名。
<outpath value="F:\Repos\output\" />
这个路径就是你的apk文件自动打包生成出来以后的存放路径。注意插件会在这个路径下创建以你的工程名为名称的文件夹。
配置好后就可以批量多渠道打包了,成功后如下图(控制台输出):
然后去E:\Repos\output\文件下找刚才配置5个渠道的5个apk文件就ok了
apk优化
最后呢我们使用使用zipalign优化你的APK文件,可以减少运行内存RAM的占用。
如果你下载过Android SDK Tools,此文件位于android-sdk-windows\tools目录下
zipalign位于android sdk的tools文件夹下面,如果你使用windows操作系统可以通过cmd来执行它:
完整的命令行说明为
E:\android-sdk-windows\tools>zipalign.exe Zip alignment utility
Copyright (C) 2009 The Android Open Source Project
Usage: zipalign [-f] [-v] <align> infile.zip outfile.zip
zipalign -c [-v] <align> infile.zip
<align>: alignment in bytes, e.g. ’4′ provides 32-bit alignment
-c: check alignment only (does not modify file)
-f: overwrite existing outfile.zip
-v: verbose output
使用方法比较简单 zipalign -v 4 source.apk destination.apk 其中这里-v代表详细输出, 4代表对齐为4个字节,同时-f参数如果添加则会覆盖存在的输出文件
对于是否有效可以通过 zipalign -c -v 4 destination.apk 来查看是否成功的优化了你的apk文件,这里-c参数代表检查对齐,可以看作是只读执行,最后提示大家这步可能造成文件签名问题,注意和apk签名执行的顺序。