Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android架构之路--热更新Tinker(下)

Android架构之路--热更新Tinker(下)

原创
作者头像
conanma
修改于 2021-09-06 02:09:37
修改于 2021-09-06 02:09:37
50100
代码可运行
举报
文章被收录于专栏:正则正则
运行总次数:0
代码可运行

一、多渠道打包

tinker官方文档推荐用walle或者packer-ng-plugin来辅助打渠道包。估计有不少同学用过,今天我想推荐另外一款多渠道打包的插件ApkMultiChannelPlugin,它作为Android Studio插件进行多渠道打包。 安装步骤:打开 Android Studio: 打开 Setting/Preferences -> Plugins -> Browse repositories 然后搜索 ApkMultiChannel 安装重启。 有不了解的同学,可以直接看它的文档。

我是采用add channel file to META-INF方式进行多渠道打包,在这里提供一个读取渠道的工具类ChannelHelper

二、多渠道打包步骤

1. 选择一个基准包

选择基准包的一个apk,然后右键,点击Build MultiChannel

1-1:选择基准包

2. 配置

配置签名信息,打包方式和渠道等。

1-2:配置多渠道

配置说明:

Key Store Path: 签名文件的路径 Key Store Password: 签名文件的密码 Key Alias: 密钥别名 Key Password: 密钥密码

Zipalign Path: zipalign 文件的路径(用于优化 apk;zipalign 可以确保所有未压缩的数据均是以相对于文件开始部分的特定字节对齐开始,这样可减少应用消耗的 RAM 量。) Signer Version: 选择签名版本:apksigner 和 jarsigner Build Type: 打包方式

Channels: 渠道列表,每行一个,最前面可加 > 或不加(保存信息的时候,程序会自行加上)

我们刚才刚才配置的东西会保存在根目录的 channels.properties里

1-3:channel配置文件

3. 开始打包

配置完成后,选择基准包的一个apk,然后右键,点击Build MultiChannel,就会开始进行多渠道打包,文件会输出在选中的apk的当前目录下的channels是目录下,如图:

1-4:多渠道打包

4. 发布APK

将刚才打包完成的包,分别发布到对应的应用市场。

5. 修改bug

随便修改部分代码

6. 生成补丁包

在生成补丁包前,我们需要去tinkerpatch.gradle文件下修改一些信息。

  • baseInfo :改成我们刚才选择基准包的目录app-1.0.1-0601-14-30-42就可以。 双击TinkerPatchRelease生成差分包,patch_signed_7zip.apk就是补丁包
  • variantName : 因为刚刚我们使用assembleRelease生成的补丁,所以我们只需要使用release

双击TinkerPatchRelease生成差分包,patch_signed_7zip.apk就是补丁包

1-5:生成补丁包

7. 发布补丁包

回到Tinker后台,选中我们开始新建的项目,补丁下发->添加APP版本。然后上传刚刚的patch_signed_7zip.apk。

APP开启强制更新的话那么重启应用就会更新,否则会通过轮询去更新。应用重启才生效。

1-6: 发布补丁包.png

注:

  1. 这个补丁包对于以app-1.0.1-0601-14-30-42为基准宝,进行多渠道打包的apk都能生效(亲测成功),如果你把该渠道包进行360加固(protectedApp = true),也生效。
  2. 当我们在正式环境需要混淆代码:设置 minifyEnabled true,添加混淆:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-keep public class * implements com.tencent.tinker.loader.app.ApplicationLike

如图:

1-7: 混淆代码

这里推荐一篇混淆代码的文章:5分钟搞定android混淆


到这里Tinker的多渠道集成成功。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android架构之路--热更新Tinker(上)
当前市面的热补丁方案有很多,其中比较出名的有阿里的 AndFix、美团的 Robust 以及 QZone 的超级补丁方案。但它们都存在无法解决的问题,这也是正是最后使用 Tinker 的原因。先看一张图对比:
conanma
2021/09/04
1.9K0
Android热更新利器Tinker接入
基准包 例如有一个版本A,但是这时A是有Bug的,然后修复Bug后的生成的版本我们称为B。A和B之间的区别产生一个差分包(这里也称为补丁包),那么我们就可以说这个差分包是以A作为基准包相对B生成的。 基本步骤 1、注册Tinker账号并新建项目 2、配置gradle和代码 3、生成基准包 4、修复Bug 5、生成补丁包 6、发布补丁包 Tinker做了什么 1、1-2步是APP开发的基本步骤,完成1-3步,那么你的APP就集成了Tinker。 集成Tinker后,Tinker会根据各个版本的配置信息去自动加
用户1269200
2018/03/26
1.3K0
Android热更新利器Tinker接入
Android热更新之微信Tinker集成(接入Bugly热更新)
最近公司项目中需要集成热更新功能,由于刚开始接入的时候踩了很多坑,所以现在记录一下集成的过程.
SoullessCoder
2019/08/07
2.1K0
Android热更新之微信Tinker集成(接入Bugly热更新)
【Android】热修复——Tinker(入门)
前言 不知你是否遇到这样的情况?千辛万苦上开发了一个版本,好不容易上线了,突然发现了一个严重bug需要进行紧急修复,怎么办?难道又要重新打包App、测试,发布新个版本?就为了修改一两行的代码? 莫慌,这种问题其实可以分分钟解决。如果你学会了这项黑科技——热修复。 在用户使用App的时候,不知不觉,这个Bug就被修复了。 莫慌 热修复:热修复(也称热补丁、热修复补丁,英语:hotfix)是一种包含信息的独立的累积更新包,通常表现为一个或多个文件。这被用来解决软件产品的问题(例如一个程序错误)。——维基
Gavin-ZYX
2018/05/18
3.4K3
章鱼抓娃娃添加Bugly-Tinker热更新支持
Bugly热更新采用Tinker开源方案,官方文档如下: Bugly Android热更新使用指南 Bugly Android热更新详解
冰之角
2019/03/06
8800
Tinker-使用教程与原理分析(上)
前面我们讲解了AndFix的使用,这篇我们来讲解下微信的Tinker热修复,相比AndFix,Tinker的功能更加全面,更主要的是他支持gradle。他不仅做到了热修复更实现了“热更新”。既然他这么强大,下面我们就来了解他是如何使用的。
g小志
2018/09/11
1.9K0
Tinker-使用教程与原理分析(上)
Android 热更新 Tinker 集成配置【详细】
Tinker 是微信官方的 Android 热补丁解决方案,它支持动态下发代码、So 库以及资源,让应用能够在不需要重新安装的情况下实现更新。
ppjun
2018/09/05
1.6K0
Android 热更新 Tinker 集成配置【详细】
微信热修复tinker初探
前言 Tinker简介 Tinker是微信官方的Android热补丁解决方案,它支持动态下发代码、So库以及资源,让应用能够在不需要重新安装的情况下实现更新。当然,你也可以使用Tinker来更新你的插件。 Tinker已知问题 1) Tinker不支持修改AndroidManifest.xml,Tinker不支持新增四大组件; 2) 由于Google Play的开发者条款限制,不建议在GP渠道动态更新代码 3) 在Android N上,补丁对应用启动时间有轻微的影响; 4) 不支持部分三
用户1665735
2018/06/20
2K1
【详细】Android热更新Bugly集成配置
上一篇文章说道tinker的热更新,可是少了点补丁包的管理,这一篇文章介绍的bugly就是增强版的,更加方便你集成tinker和包括了补丁包的后台管理。 为什么使用 Bugly 热更新?
ppjun
2018/09/05
1.1K1
【详细】Android热更新Bugly集成配置
【Android】Walle多渠道打包&Tinker热修复
Walle 介绍 Walle(瓦力):Android Signature V2 Scheme签名下的新一代渠道包打包神器。 瓦力通过在Apk中的APK Signature Block区块添加自定义的渠道信息来生成渠道包,从而提高了渠道包生成效率,可以作为单机工具来使用,也可以部署在HTTP服务器上来实时处理渠道包Apk的升级网络请求。 ——来自 Walle 使用 使用Walle生成多渠道的速度是很快的,原来的项目打一个包就需要两分钟多,每次发布打7个包需要十几分钟。用了Walle后,7个包只要两分钟左右
Gavin-ZYX
2018/05/18
1.4K0
Bugly 多渠道热更新解决方案
Gradle使用productFlavors打渠道包的痛 有很多同学可能会采用配置productFlavors来打渠道包,主要是它是原生支持,方便开发者输出不同定制版本的apk,举个例子: android { ... defaultConfig { minSdkVersion 8 versionCode 10 } productFlavors { flavor1 { packageName "com
腾讯Bugly
2018/03/23
1.6K0
【云+社区年度征文】让移动开发更简单,集成异常上报、运营统计与应用升级
做移动开发最麻烦的就是收集用户在使用过程中的程序的异常崩溃日志,因为这个异常崩溃是无征兆的在毫无防备随时的出现,所以有时候真是丈二金刚(摸不着头脑);这个还是其次要命的是用户端程序的每次迭代和版本的分布又不容易推送和获取。
谭广健
2020/12/19
7500
乐固加固FAQ
加固过程中会破坏apk的签名文件,此时直接安装时会出错,找不到签名。因此需要重新签名,重签名后的apk签名文件和原来的保持一致就不会影响更新应用。
腾讯云@移动安全
2018/05/25
16.6K8
乐固加固FAQ
Bugly热更新SDK你需要知道的一些事
Bugly出热更新SDK了? 没错,Bugly也出热更新SDK啦,2016.11.25号,我们Bugly也上线了Android版的热更新SDK,大家都知道这一年来热更新被无数次提起,各大厂自主研发的热更新方案层出不穷,下面就列举一些大家比较熟悉的一些热更新方案: 微信开源:Tinker 大众点评:Nuwa 阿里巴巴:Dexposed 阿里巴巴:AndFix 美团:Robust 各个方案的优劣性笔者就不在这里做过多讨论了,总的一句话没有最好的,只有最适合自己的。 我们Bugly也是出于高可用性的考虑,Tink
巫山老妖
2018/07/20
1.6K0
Android开发笔记(一百一十四)发布工具
因为app开发者常常需要统计app在不同渠道的使用量,所以app安装包就得按照不同的渠道号分别打包。至于为什么要进行使用量的统计,可参见《Android开发笔记(一百零七)统计分析SDK》,现在我们以友盟统计为例,演示一下如何在Eclipse环境实现多渠道打包的功能。 代码工程导入了友盟统计分析的sdk后,还需在AndroidManifest.xml中定义当前发布包的渠道号,如下所示:
aqi00
2019/01/18
1.1K0
Tinker-自定义扩展与流程分析(下)
上一篇我们讲解了Tinker的使用,现在我们讲解下一些功能的扩展与从源码角度查看流程分析。
g小志
2018/09/11
8080
Tinker-自定义扩展与流程分析(下)
Android 新一代多渠道打包神器
李涛
2017/04/21
6.5K2
Android 新一代多渠道打包神器
开发工具总结(8)之图文并茂全面总结上百个AS好用的插件(下)
上篇文章介绍了一至七条,由于篇幅过长,这里分为上下两篇讲解,这里截取的是剩下的从第八条开始一直到结尾的那一部分。查看上篇文章请点击 开发工具总结(1)之图文并茂全面总结上百个AS好用的插件(上)。
AWeiLoveAndroid
2018/09/03
1.7K0
开发工具总结(8)之图文并茂全面总结上百个AS好用的插件(下)
【Android 热修复】运行 Tinker 官方示例 ( 处理 TINKER_ID 问题 | 编译 debug 包 | 修改 Gradle 脚本 | 生成 patch 包 | 热修复 )
Tinker 官方代码示例 : https://github.com/Tencent/tinker/tree/dev/tinker-sample-android
韩曙亮
2023/03/29
7560
【Android 热修复】运行 Tinker 官方示例 ( 处理 TINKER_ID 问题 | 编译 debug 包 | 修改 Gradle 脚本 | 生成 patch 包 | 热修复 )
Android使用Ant进行apk多渠道打包
Android使用Ant进行apk多渠道打包 前言: Ant 是什么? 详细介绍请看http://ant.apache.org/ 总之一句话:Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能。 准备工作: android sdk中默认支持使用ant来执行编译动作。但是要想使用ant来进行编译,还需要ant的执行环境。 为了能顺利使用ant来编译,我们需要如下准备: 1,android sdk,最简单的是下载一个adt bundle即可; 2,ant包,下载链接:htt
用户1289394
2018/02/26
9510
推荐阅读
相关推荐
Android架构之路--热更新Tinker(上)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验