今日科技快讯
三天的Google I/O大会2018终于落下帷幕,虽说现在的I/O大会重点已经变成了人工智能,但是Android P的推出还是让很多小伙伴激动不已的。这次Android P被喻为近几年变动最大的Android版本,新增了包括动态电量管理、App Actions、Slices、文字放大镜、凹口屏支持等功能,另外还推出了一个全新的开发组件Jetpack。在行为变更方面,Android P中使用了更加严格的后台限制,禁用掉了私有API,使用了新的生物识别API BiometricPrompt等。如果你有小米 Mi Mix 2S,Oppo R15 Pro,Vivo X21UD 和 X21这几款手机的话,现在就可以尝鲜Android P了。
作者简介
本篇来自 骑小猪看流星 的投稿,分享了Android打包渠道包相关知识点,希望对大家有帮助!
骑小猪看流星 的博客地址:
https://www.jianshu.com/u/0111a7da544b
内容概览
今天的文章主要介绍的是Android V1、V2签名包的基本概念和使用场景以及如何十分钟快速掌握美团多渠道打包。
1:美团多渠道打包的快速使用和集成
2:Android Studio 2.3版本及以上,V1、V2版本签名包的相关说明
3:V1、V2版本签名包的比较以及在本文提供的多渠道打包方案下,两种签名包的选择
准备工作
1:Python开发环境的安装,美团打包工具(下文的准备链接已给大家准备好了资源,直接下载即可)
2:带签名的APK包(也就是我们编写好的代码,需要生成一个正式的签名包)
开始体验
说起多渠道打包呐,脑海里面最直接的反应就是在AS里面直接配置flavor、使用友盟多渠道打包通过动态替换meta-data里面的value值去实现等等。
美团点评技术团队开源的多渠道打包着实可谓业界良心、精品楷模。通过使用Python直接批量修改,1秒打上百个包那真是So easy。
首先,需要下载给大家提供的准备链接:
https://pan.baidu.com/s/1kWa54d5?errno=0&errmsg=Auth%20Login%20Sucess&&bduss=&ssnerror=0&traceid=#list/path=%2F
下载完毕以后,解压出来会有2个包,一个是Python的安装环境,一个是美团打包的工具。其中,美团的打包工具是一个压缩包,解压之后,有如下文件。
下载无误之后,即可开始快速集成美团多渠道集成步骤:
步骤1:配置Python环境
A:首先,我们需要安装Python的环境(注意:Python2.X和3.X版本的都可以!两个版本都可以!虽然两个版本的差异和语法不一样,但是这里是为了配置打包环境,所以开发者暂时先不要纠结使用那个版本的问题)笔者使用的是python-3.6.3这个版本,该文件已上传百度云盘,下载即可。
下载之后,点击这个exe文件,点击之后,Windows下的界面是这样的(穷逼买不起MAC,见谅)
记住,下面的 Add Python 3.5 to PATH (红色箭头)一定要勾选,一定要勾选。
勾选之后,点击 Install Now,等待几秒。OK,安装完成!
B:打开CMD,输入 python,有以下提示则安装成功
安装成功。但是还是可能会安装失败,如下图
没事,出现安装失败的情况,可能是没有勾选Add Python 3.5 to PATH 没有勾选或者部分电脑勾选了还是安装失败(笔者的笔记本就遇到了这种问题,勾选了依旧没用)
解决办法:
I:重新安装Python环境,记得勾选Add Python 3.5 to PATH。
II:I步骤如果还是不行,那我们需要去环境变量里面,配置python的环境变量即可。想快速解决环境变量的可以点击下面链接当然自己百度也行。
步骤2:
集成好Python的环境配置以后,打开下载好的美团打包工具。也就是本文第一张图,首先,有一个JavaUtil,这个是获取渠道信息的代码(可以自己Copy到项目,根据项目需求去集成使用);还有一个PythonTool文件夹,这个就是美团打包的核心,点进这个文件夹之后,如图:
我们只需要把生成好的正式签名包,copy在这里。(这里只是演示,也就是app-release.apk这个文件)我们只需要把写好的正式签名包,copy在这里。注意:必须是同级目录。
然后,点击MultiChannelBuildTool这个python文件,点击一下即可!
点击之后,会生成一个紫色框的文件夹,我们点进去该文件夹
MMP,一瞬间生成了这么多个apk,耗时半秒不到。
基本的多渠道打包使用就已经完成了。
十分钟不到吧应该。是的,已经打包完毕了。
问题1:如何配置其他的渠道?
info文件夹,目录下的channel就是用来存放打包渠道的,注意:多个渠道之间请用换行隔开、多个渠道之间请用换行隔开(不建议使用Windows下面的txt直接打开,强烈建议使用notepad++等第三方文字编辑工具使用编辑!!!)
问题2:如何获取渠道信息?
在前面说到了,给大家准备的下载链接里面,解压缩后有个JavaUtil的包,这里面就是获取渠道信息的代码,开发者可以根据这个工具类,去获取渠道号。或者根据开发需要自己集成使用即可。
关于V1、V2签名包的说明:
说完了美团多渠道打包,我们在说说V1、V2签名包。
如果我们升级到最新的AS(笔者的是3.0),点击打包选项,细心的你会看到这样的打包界面:
老版本的AS,只有V1选择,也就是紫色的框框。但是新版本的AS,默认勾选的是V2版本(笔者的AS默认是勾选的V2版本)。如果只勾选V2版本,打出来的签名包,很多机型会直接提示安装失败。解决办法下面会说。
概述:
在Android 7.0中引入了APK Signature Scheme v2,v1是jar Signature来自JDK。
V1:应该是通过ZIP条目进行验证,这样APK 签署后可进行许多修改,这样可以移动甚至重新压缩文件。
V2:验证压缩文件的所有字节,而不是单个 ZIP 条目,因此,在签名后无法再更改(包括 zipalign)。正因如此,现在在编译过程中,我们将压缩、调整和签署合并成一步完成。好处显而易见,更安全而且新的签名可缩短在设备上进行验证的时间(不需要费时地解压缩然后验证),从而加快应用安装速度。
刚才说了,如果只勾选V2版本,打出来的签名包,很多机型会直接提示安装失败。下面就给大家提供两种解决方案
解决方案一:
V1和V2的签名使用:
1)只勾选V1签名并不会影响什么,但是在7.0上不会使用更安全的验证方式
2)只勾选V2签名7.0以下会直接安装完显示未安装,7.0以上则使用了V2的方式验证
3)同时勾选V1和V2则所有机型都没问题。
解决办法二:
还有一种快速高效的代码解决方式,我们可以直接在app的build.gradle的android标签下,加入以下代码也可以解决只勾选V2版本签名包部分机型会提示安装失败的问题。
想说的话
V2签名包是从Android7.0系统出现的新的签名机制,这个新机制使得apk的签名方式更加安全。首先我们应该尝试把V1和V2两个选项全部勾选,并尽可能的去使用他们,但是如果全部勾选完毕出现了问题,那么我们可以忽略这种新的签名机制,只勾选第一个选项(V1),依旧使用我们之前老的签名机制,也就是说,V1版本更加快速方便。
为什么这里会提到V1、V2的区别。因为这里的美团多渠道打包只能适用于V1版本的签名包!!!但是笔者公司的运营上周五将apk上架应用宝(在打包同时勾选V1、V2且没有使用多渠道打包)还是会提示:
所以,个人还是推荐使用V1打包方式。因为稳定,所以放心。
在提一嘴,前不久美图技术点评也实现了V2版本包的功能,想了解的请移步:
新一代美团快速打包
https://github.com/Meituan-Dianping/walle
集成起来会相对复杂一些,在一些讲究效率和快速开发的团队,正常使用V1签名包和上面的美团打包方式,依旧可以快速高效满足开发需求保证产出以及安全。
两者如何取舍,全在开发者个人主观能动性了。