Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android开发笔记(一百一十四)发布工具

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

作者头像
aqi00
发布于 2019-01-18 06:38:34
发布于 2019-01-18 06:38:34
1.1K00
代码可运行
举报
文章被收录于专栏:老欧说安卓老欧说安卓
运行总次数:0
代码可运行

多渠道打包工具

Eclipse/ADT环境

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <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
代码运行次数:0
运行
AI代码解释
复制
	<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
代码运行次数:0
运行
AI代码解释
复制
	<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
代码运行次数:0
运行
AI代码解释
复制
        <meta-data
            android:name="UMENG_CHANNEL"
            android:value="${UMENG_CHANNEL_VALUE}" >
        </meta-data>

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android自动化构建之Ant多渠道打包实践(下)
前言 上一篇(Android自动化构建之Ant多渠道打包实践(上))已经介绍了Android的apk是如何构建的,本篇博客继续Ant打包的实践过程。 集成友盟统计SDK 这里以友盟统计为例,对各个渠道进行统计,我们需要先集成它的SDK 配置权限 <!-- 权限 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" > </uses-permission> <uses-permis
巫山老妖
2018/07/20
4500
AndroidStudio3.0多渠道打包:我用一行命令打出N个包
csdn: http://blog.csdn.net/k_bb_666
蜻蜓队长
2018/08/03
4090
AndroidStudio3.0多渠道打包:我用一行命令打出N个包
使用Gradle管理你的Android Studio工程
关于Android Gradle更多详细内容已经出书《Android Gradle权威指南》,大家可以购买,看更多没有介绍的知识点和内容,购买链接如下
飞雪无情
2018/08/28
1.1K0
studio多渠道打包
由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这事就简单了。 友盟多渠道打包 废话不多说,以友盟统计为例,在AndroidManifest.xml里面会有这么一段: <meta-data android:name="UMENG_CHANNEL" android:value="Channel_ID" /> 里面的 Channel_ID 就是渠道标示。我们的目标就是在编译的时
xiangzhihong
2018/01/30
7670
Android Studio 使用Gradle多渠道打包
我们都知道国内应用市场非常多,为了统计各个应用市场的app下载量和使用情况,我们需要多渠道的打包。如果一个一个的手动去打包岂不烦死了,要多麻烦就有多麻烦。这就要求我们学会使用Gradle进行多渠道打包。废话不多说了,直接进入正题吧! 第一步:配置AndroidManifest.xml 以友盟渠道为例,渠道信息一般都是写在 AndroidManifest.xml文件中,大约如下: <meta-data android:name="UMENG_CHANNEL" android:value="xiaomi" />
非著名程序员
2018/02/02
9660
Android开发Gradle高级技巧、自定义Gradle Task、打包完成自动签名、执行Shell脚本
先说下为什么有这篇文章吧,最近在写一个应用需要进行系统签名;每次我都需要先将apk生成然后使用sign.jar和系统证书进行签名,非常的麻烦而且tmd还是搞两个系统也就是每次都需要用两个系统证书分别进行签名…
Android技术干货分享
2019/03/27
4.7K0
Android开发Gradle高级技巧、自定义Gradle Task、打包完成自动签名、执行Shell脚本
android友盟统计分渠道打包
什么是多渠道包 渠道包就是要在安装包中添加渠道信息,也就是channel,对应不同的渠道,例如:小米市场、360市场、应用宝市场等 产品在不同的应用市场可能有不同的统计需求,需要为每个应用市场的Android包设定一个可以区分应用市场的标识,这个为Android包设定应用市场标识的过程就是多渠道打包。
再见孙悟空_
2023/02/10
6430
android友盟统计分渠道打包
Android项目实战(三十五):多渠道打包
多渠道打包:   可以理解为:同时发布多个渠道的apk。分别上架不同的应用商店。这些apk带有各自渠道的标签,用于统计分析各个商店的下载次数等数据。   实现步骤 一、添加友盟渠道标签     添加位置:app目录下的 AndroidManifest.xml文件      添加语句:     <!--多渠道打包--> <meta-data android:value="${UMENG_CHANNEL_VALUE}" android:name="UMENG_CHANNEL"/>     示
听着music睡
2018/05/18
1K0
360加固apk并自动签名
我们知道Android加混淆之后,代码的安全性得到了提高,即使你hook,反编译得到的也是乱码的,对于阅读性造成了影响,为了增强代码的破解难度,我们通常退对apk进行加固,常见的有腾讯,360,爱加密
xiangzhihong
2018/02/05
2.7K0
360加固apk并自动签名
Gradle多渠道打包
国内Android应用市场品种太多,血统不纯,每次上线App都打包打到手软,上传上到吐血!好在我们有了Android studio和gradle,一条命令打包各种渠道版本App!
GitOPEN
2019/03/01
1.1K0
Android开发笔记(七十)反编译初步
Android的内核源码很大,有几个G,仔细找找网上有许多下载的地方。作为普通开发者,一般不需要阅读内核源码,但一点都不了解好像也不行,因为实际开发中有时候就得会那么一点点。下面几个源码目录,是开发者在实际开发中可以参考的: \system\core\toolbox : linux后台命令的源码,如ls、rm、kill、chmod、top、netstat等等。 \packages\apps : Android自带的应用程序的源码,如计算器、日历、相机、浏览器、联系人、音乐、拨号、设置等等。 \sdk : Android开发的辅助工具源码,如eclipse插件、emulator模拟器、ddms管理工具、draw9patch点九制图工具。 \frameworks\base\core\java\android : 提供给开发者的SDK开发框架的源码,基本与“Android SDK Manager”上下载的SDK一致。
aqi00
2019/01/18
9510
APK多渠道加固打包笔记之360加固宝
首先需要知道V1,V2,V3签名的区别,可以参考之前的文章:AndroidV1,V2,V3签名原理详解
小柔
2022/10/09
1.6K0
APK多渠道加固打包笔记之360加固宝
关于Gradle配置的小结
使用 Android Studio 来开发 Android 工程的过程中,接触 Gradle 是不可避免的,比如配置签名、引入依赖等。那么 Gradle 到底是什么东西呢? Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化建构工具。它使用一种基于 Groovy 的特定领域语言 (DSL) 来声明项目设置,抛弃了基于 XML 的各种繁琐配置 (此定义来自于百度百科-_- !) 。啰里啰唆一堆,幸运的是,一般来说 Android 开发者只要会配置 Gradle 就可以了,并不需要深入了解。那么下面我们就来揭开 Gradle 的面纱吧。
俞其荣
2022/07/28
6590
关于Gradle配置的小结
Ant打包安卓apk(4)-多渠道(配置)打包方案
目前我需要一个boolean, 一个请求的url, config.url =http://10.1.64.42:9082/insure-pad/padServer.do, config.bool = false 我想加快apk打包速度啊, 一方面是还在用eclipse, 二来如果用普通的gradle的farvor方式还是不够快,美团都有v2方案了, 自己搞一搞比较有意思而已
acc8226
2022/05/17
1.3K0
Ant打包安卓apk(4)-多渠道(配置)打包方案
gradle打包android (实现外部导入签名文件、多渠道打包、导入ant脚本)
       最近一直在做android自动打包,之前已经完成了用纯命令行的形式打包、原生态ant脚本打包,和基于android的SDK的打包,并且实现了多渠道打包,后来同事推荐了gradle,网上的资料说gradle各种好,自己也感兴趣是实现一下,其实一般来说由于android对eclipse的支持减弱,大部分的人都是用gradle与android studio融合,这样面的例子也会比较多,但笔者所在的项目还是在eclipse的比较多,由于开发人员在移植过程中发现报错比较多所以一直没有完全移植(好吧,其实早晚会移植),所以笔者是用eclipse的IDE做的实验,下面先贴几个基础知识
粲然忧生
2022/08/02
8030
写给小白的android基础面试笔试题(一)
序言:由于公司的某些方面原因,LZ最近都处于找工作的状态,年关了,最关键的LZ还只是个没毕业的孩子,所以工作越来越不好找了,到哪里投简历都是动不动就好几年经验,这让我们这些没经验的渣渣还怎么活啊!好了,也不吐槽那么多了,这几天到处去投简历,到处去面试,培训机构,外包公司这些都经历了个遍,总结了一下面试的时候的面试笔试题(如有错误,请及时纠正)
用户2802329
2018/08/07
9630
乐固加固FAQ
加固过程中会破坏apk的签名文件,此时直接安装时会出错,找不到签名。因此需要重新签名,重签名后的apk签名文件和原来的保持一致就不会影响更新应用。
腾讯云@移动安全
2018/05/25
16.7K8
乐固加固FAQ
相关推荐
Android自动化构建之Ant多渠道打包实践(下)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验