前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android开发笔记(一百一十四)发布工具

Android开发笔记(一百一十四)发布工具

作者头像
aqi00
发布2019-01-18 14:38:34
9200
发布2019-01-18 14:38:34
举报
文章被收录于专栏:老欧说安卓老欧说安卓

多渠道打包工具

Eclipse/ADT环境

因为app开发者常常需要统计app在不同渠道的使用量,所以app安装包就得按照不同的渠道号分别打包。至于为什么要进行使用量的统计,可参见《Android开发笔记(一百零七)统计分析SDK》,现在我们以友盟统计为例,演示一下如何在Eclipse环境实现多渠道打包的功能。 代码工程导入了友盟统计分析的sdk后,还需在AndroidManifest.xml中定义当前发布包的渠道号,如下所示:

代码语言:javascript
复制
    <meta-data android:name="UMENG_CHANNEL" android:value="1001_0001" />

上面的1001_0001代表渠道A,如果接下来要打包B渠道的安装包,把android:value改为别的数值如1001_0002,然后导出安装包即可。可是渠道号有多个的话,每次打包都得先修改AndroidManifest.xml,然后再一步步导出安装包,不但费力而且费时,由此催生了批量打包的需求。 兰贝壳儿便是用来解决多渠道打包需求的Eclipse插件,最新版本是AndroidTools_1.1.4.201410081930.jar,下载地址是 http://download.csdn.net/detail/aqi00/9616501 。把该jar包放入eclipse的plugins目录,然后重启Eclipse就可以了。在app工程上右击,在右键菜单中依次选择“兰贝壳儿”——“打包发布”,就能自动处理多渠道打包。下面是右键菜单的截图:

第一次打包会提示“无法进行打包,Key和证书无法获取,请检查bom.xml文件!”,然后在项目的根目录下生成bom.xml,文件内容如下:

代码语言:javascript
复制
	<package>
		<!-- 不区分大小写,逗号隔开的metaName,代表不同SDK的渠道标识符 -->
		<channels keyname="UMENG_CHANNEL,gfan_cpid">
			<!-- channel的数量代表最终生成的apk文件的数量 -->
			<channel value="hiapk.com" />
			<channel value="andao007.com" />
			<channel value="domob.cn" />
			<channel value="gfan.com" />
		</channels>
		<keystore path="F:\Repos\android\keystore\common\common.key" passwd="123456">
			<alias name="marsor_common" passwd="123456" />
		</keystore>
		<outpath value="F:\Repos\android\keystore\output\" />
	</package>

上面的xml文件主要有三个地方需要修改: 1、channels的keyname要改为我们在AndroidManifest.xml中定义的渠道变量名,如UMENG_CHANNEL;同时要在下面补充各渠道的channel,填上每个渠道的具体值。 2、keystore的path值改为证书文件的完整路径,password值改为证书文件的密码;alias项的name值要改为证书的别名,password值改为证书别名的密码。 3、outpath要改为打包好的的apk文件存放目录的完整路径。 下面是一个实际开发中批量打包的bom.xml例子:

代码语言:javascript
复制
	<package>
		<channels keyname="UMENG_CHANNEL">
			<channel value="1000_0001" />
			<channel value="1070_0035" />
			<channel value="1070_0036" />
			<channel value="1071_0001" />
			<channel value="1072_0001" />
		</channels>
		<keystore path="E:\workspace_all\llms\NetHelper_III_3.1.8\keyStore\qzyd.speed.nethelper.keystore" passwd="llms">
			<alias name="qzyd.speed.nethelper" passwd="llms" />
		</keystore>
		<outpath value="E:\workspace_all\publish\" />
	</package>	

Android Studio环境

Android Studio自带了批量打包的功能,所以我们无需额外安装别的插件。下面仍然以友盟统计为例,说明多渠道打包的操作: 1、首先修改AndroidManifest.xml,把android:value的值改为${UMENG_CHANNEL_VALUE},如下所示:

代码语言:javascript
复制
        <meta-data
            android:name="UMENG_CHANNEL"
            android:value="${UMENG_CHANNEL_VALUE}" >
        </meta-data>

2、其次修改build.gradle,在android{ ... }包块中补充UMENG_CHANNEL_VALUE的各渠道定义,如下所示:

代码语言:javascript
复制
    productFlavors {

        tencent {}
        baidu {}
        dev360 {}
        huawei {}
        xiaomi {}
        lenovo {}
        wandoujia {}

        productFlavors.all { flavor ->
            flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
        }

    }

上面的渠道定义表示支持生成这些应用市场的渠道包:应用宝、百度助手、360助手、华为商店、小米商店、乐商店、豌豆荚等等。 3、修改完build.gradle,点击上方的“Sync Now”,完成构建同步操作,截图如下:

4、同步完成,依次选择菜单“Build”——“Generate Signed APK...”,输入证书路径及密码后点击“Next”按钮,弹出打包提示窗口,截图如下:

注意窗口下半部的Flavors区域,便是各应用市场的渠道号定义,全选这些应用市场,点击“Finish”按钮,接下来就是等待Studio自动打包完成了。

安全加固网站

之前在《Android开发笔记(七十三)代码混淆与反破解》里面,我们提到了一些基本的app加固措施,比如代码混淆、防二次打包等等,可是对开发者来说,无论自己想得多么周到,都敌不过防不胜防的各类漏洞,况且开发者应该把主要精力放在功能实现上,而不是浪费在安全加固上。因此,鉴于术业有专攻,我们不如把apk安装包交给专业的加固网站进行加固处理,下面是几个常见的app加固网站: 爱加密 https://www.ijiami.cn/AppProtect 360加固保 http://jiagu.360.cn/ 腾讯云乐固 http://legu.qcloud.com/ 阿里聚安全 http://jaq.alibaba.com/safety 金钟罩 http://www.netonsafe.com/AppProtect.html 梆梆加固 http://www.bangcle.com/products/productindex?product_id=1 娜迦加固 http://www.nagain.com/application/

重签名工具

经过安全加固后的apk安装包,需要重新加上原证书的签名,原因参见《Android开发笔记(七十)反编译初步》。重签名工具有好几个,最简单的便是Android自带的signapk.jar,它的下载地址是http://pan.baidu.com/s/1slgUuKl。使用该工具要在命令行下重签名,命令格式为“java -jar signapk.jar pem证书路径 pk8证书路径 签名前的apk文件路径 签名后的apk文件路径”,下面是个重签名命令的例子:

代码语言:javascript
复制
java -jar signapk.jar testkey.x509.pem testkey.pk8 old.apk new.apk

signapk.jar用来自己玩玩还不错,可要是用于批量签名,那麻烦多多。其一是要手工从证书文件中分解出pem和pk8两个文件,其二是要运行多个命令行才能对多个安装包分别重签名。所以实际开发中的重签名工具一般用的是爱加密APKSign,它的下载地址是http://pan.baidu.com/s/1gfyPCLd,下载解压后运行APKSign.exe打开工具页面,下面是该工具的页面截图:

点击工具页面上的“浏览...”按钮,然后同时选中多个apk安装包,回到主页面再点击“开始签名”按钮,就能完成批量重签名了。

一站式自动化发布

前面说了多渠道包的发布流程是:先进行批量打包,然后上传到安全网站加固,加固完下载下来做重签名。可现在的渠道这么多,保守都要打几十个渠道包,倘若每个步骤都要人工操作,不但苦逼的码农伤不起,老牛破车的电脑也伤不起呀。比如博主前几天给公司的app打多渠道包,从早干到晚做了十几个小时,才把一百多个渠道包都弄好。有道是,哪里有压迫,哪里就有反抗。哼,码农要打翻身仗,不当电脑的奴隶,誓要电脑当俺的奴隶。 潜心研究了大半天,终于有所收获,下面分享一下全自动化打包的过程说明: 1、启动多渠道打包操作(如Eclipse上运行兰贝壳儿,Studio上直接批量打包); 3、开发一个小程序轮询打包结果目录,一旦发现新文件,就拉去安全网站加固; 4、小程序定时轮询加固结果,下载安全网站加固好的文件; 5、小程序自动对已加固的文件进行重签名,关键在这里,重签名的几个工具用法就不多说了,下面直接给出重签名的命令:

代码语言:javascript
复制
jarsigner.exe -verbose -digestalg SHA1 -sigalg MD5withRSA -keystore keystore文件名 -storepass keystore文件对应的密码 -keypass keystore别名对应的密码 -signedjar 签名后的apk文件名 签名前的apk文件名 keystore别名
zipalign.exe -v 4 签名后的apk文件名 优化后的apk文件名

注意,jarsigner.exe是java自带的签名工具,在Java安装路径的bin目录下;zipalign.exe是Android自带的优化工具,在sdk路径下的build-tools\20.0.0目录下(20.0.0指的是sdk版本号)。 6、全部处理完毕,小程序自动打包所有签名好的安装包,并自动发邮件通知相关人员。 点此查看Android开发笔记的完整目录

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年07月25日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 多渠道打包工具
    • Eclipse/ADT环境
      • Android Studio环境
      • 安全加固网站
      • 重签名工具
      • 一站式自动化发布
      相关产品与服务
      云开发 CloudBase
      云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档