关于使用腾讯 Bugly 平台 Tinker开源热修复框架的 项目集成

Android热更新,高级Android开发技术 那我们该怎么做才能做到年薪60万+呢,对于程序员来说,只有不断学习,不断提升自己的实力。我之前有篇文章提到过,感兴趣的可以看看,到底要学习哪些知识才能达到年薪60万+。通过职友集数据可以查看,以北京 Android 相关岗位为例,其中 【20k-30k】 薪酬的 Android 工程师,占到了整体从业者的 30.8%!北京 Android 工程师「工资收入水平 」今天重点内容是怎么去学,怎么提高自己的技术。1.合理安排时间2.找对好的系统的学习资料3.有老师带,可以随时解决问题。 阅读详情

Tinker是什么

Tinker是微信官方的Android热补丁解决方案,它支持动态下发代码、So库以及资源,让应用能够在不需要重新安装的情况下实现更新。当然,你也可以使用Tinker来更新你的插件。

它主要包括以下几个部分:

  1. gradle编译插件: tinker-patch-gradle-plugin
  2. 核心sdk库: tinker-android-lib
  3. 非gradle编译用户的命令行版本: tinker-patch-cli.jar



为什么使用Tinker

总的来说:

  1. AndFix作为native解决方案,首先面临的是稳定性与兼容性问题,更重要的是它无法实现类替换,它是需要大量额外的开发成本的;
  2. Robust兼容性与成功率较高,但是它与AndFix一样,无法新增变量与类只能用做的bugFix方案;
  3. Qzone方案可以做到发布产品功能,但是它主要问题是插桩带来Dalvik的性能问题,以及为了解决Art下内存地址问题而导致补丁包急速增大的。
特别是在Android N之后,由于混合编译的inline策略修改,对于市面上的各种方案都不太容易解决。而Tinker热补丁方案不仅支持类、So以及资源的替换,它还是2.X-7.X的全平台支持。利用Tinker我们不仅可以用做bugfix,甚至可以替代功能的发布。Tinker已运行在微信的数亿Android设备上,那么为什么你不使用Tinker呢?

Tinker的已知问题

由于原理与系统限制,Tinker有以下已知问题:

  1. Tinker不支持修改AndroidManifest.xml,Tinker不支持新增四大组件;
  2. 由于Google Play的开发者条款限制,不建议在GP渠道动态更新代码;
  3. 在Android N上,补丁对应用启动时间有轻微的影响;
  4. 不支持部分三星android-21机型,加载补丁时会主动抛出"TinkerRuntimeException:checkDexInstall failed";
  5. tinker的一般模式并不支持加固,需要使用usePreGeneratedPatchDex模式,即提前生成补丁模式。某些加固工具可能会将非exported的四大组件类名替换,这些类将无法修改。对于Android N之后的设备,本模式可能会因为内联而出现问题,建议过滤N之后的设备;
  6. 对于资源替换,不支持修改remoteView。例如transition动画,notification icon以及桌面图标。

如何使用Tinker
接下来带大家 在项目中一步步使用 Tinker,我们选一个平台 我选的是bugly ,腾讯的,当然你也可以选择其他的平台, TinkerPatch ,这个也可以 ,但以后肯定要收费的,  TinkerPatch平台文档 。


首先第一步  添加插件依赖
工程根目录下“build.gradle”文件中添加:

第二步:在app module的“build.gradle”文件中添加(我的配置):
apply  plugin: 'com.android.application'
def releaseTime() {
return new Date().format( "yyyy-MM-dd", TimeZone. getTimeZone( "UTC"))
}
dependencies {
compile fileTree( dir: 'libs', include: [ '*.jar'])
compile 'com.android.support:appcompat-v7:24.1.1'
// 多 dex 配置
compile "com.android.support:multidex:1.0.1"
// 集成 Bugly 热更新 aar (灰度时使用方式)
// compile(name: 'bugly_crashreport_upgrade-1.2.0', ext: 'aar')
compile 'com.tencent.bugly:crashreport_upgrade:latest.release' // 其中 latest.release 指代最新版本号,也可以指定明确的版本号,例如 1.2.0
compile 'com.tencent.bugly:nativecrashreport:latest.release' // 其中 latest.release 指代最新版本号,也可以指定明确的版本号,例如 2.2.0
}

android {
compileSdkVersion 23
buildToolsVersion "23.0.2"

// 编译选项
compileOptions {
sourceCompatibility JavaVersion. VERSION_1_7
targetCompatibility JavaVersion. VERSION_1_7
}

// recommend
dexOptions {
jumboMode = true
}

// 签名配置
signingConfigs {
debug {
storeFile file( "../KeyDianda.jks")
storePassword "111111"
keyAlias "key_dianda"
keyPassword "111111"
}

release {
storeFile file( "../****.jks")//修改成自己的秘钥
storePassword "***"// 改成自己的密码
keyAlias "***"
keyPassword "***"
}
}

// 默认配置
defaultConfig {
applicationId "com.tinker.ddinfo"
minSdkVersion 14
targetSdkVersion 23
versionCode 200
versionName "2.0.0"

// 开启 multidex
multiDexEnabled true
// 以 Proguard 的方式手动加入要放到 Main.dex 中的类
multiDexKeepProguard file( "keep_in_main_dex.txt")
}

// 构建类型
buildTypes {
// release {
// // 不显示 Log
Tencent Tinker:移动应用热修复的未来之路 Tencent Tinker是腾讯公司开发的一款移动应用热修复框架,旨在帮助开发者快速修复线上应用的bug、漏洞和功能问题。它提供了一套强大的工具和机制,使得开发者能够在不影响用户体验的情况下进行实时修复和功能更新。Tencent Tinker的出现解决了传统应用修复需要重新发布整个应用的痛点,有效提升了开发效率和用户体验。 阅读详情

相关推荐

中级Java工程师面试题,Android热修复方案盘点

腾讯 QZone Muitidex方案 正文 热修复方案按照是否必须重启 分为两类: 重启生效 / 即时生效。按照 实现方式可以分为3类: java层的实现 / native层的实现 / java native混合实现 阿里AndFix 方案(已弃用) AndFix 是 无需重启 的 native层 的实现. 但是,AndFix目前已经3年多没维护更新。因为阿里已经有了新的替代方案,不再需要维护。另外,这种纯native的实现方式,兼容性十..

m0_60452187的博客 360

热修复Tinker接入问题与解决2022年

在接入Bugly热修复SDK和微信独立Tinker接入的过程中,同几年前的官方接入指南文档和Github上的Issues作斗争的艰难困苦。

博客,是nsacer先森的 5319

Android-第三方开源框架:Bugly让热修复变得如此简单,学android的入门基础知识

… implementation “com.android.support:multidex:1.0.1” // 多dex配置 implementation ‘com.tencent.bugly:crashreport_upgrade:1.3.4’// 远程仓库集成方式(推荐) } 签名配置部分请根据你项目的实际情况修改,如: 四、配置Tinker ========== 在app的build.gradle文件同级目录下创建一个tinker-support.gradle文件,内容如下: apply plug

m0_64319298的博客 889

Flutter 专题 七十九 基于Tinker的Flutter热更新实战

本文详细介绍了在Flutter Android应用中集成Tinker实现热更新的完整实战方案。针对线上紧急Bug修复需求,通过修改so库加载路径,利用Tinker生成并下发轻量补丁包,实现用户无感更新。文章涵盖从环境配置、基准包制作、补丁生成到Bugly下发与监控的全流程,并总结了关键注意事项与避坑指南,为Flutter应用提供稳定的热更新能力。

weixin_28197941的博客 251

开源替代商业加固:Android应用自建加固方案全解析

在移动应用安全领域,代码混淆、签名校验与DEX加密是保护Android应用免受逆向分析和篡改的关键技术。商业加固平台虽然便捷,却常伴随包体膨胀、兼容性风险和成本问题。开源工具链的出现,为开发者提供了全流程可控、成本透明的自建加固路径。通过R8/ProGuard实现基础混淆,结合自签名校验与AES加密的DEX动态加载,开发者可以构建一套完整的加固方案。该方案能有效提升应用抗逆向能力,同时无缝嵌入CI/CD流水线,实现自动化发版。本文分享从商业平台迁移至开源方案的真实踩坑记录,涵盖DEX加密壳设计、SO库保护、

weixin_34221073的博客 274

资深开发者实战总结:高频SDK选型、接入与避坑指南

在软件开发中,SDK(软件开发工具包)是提升开发效率、集成核心功能的关键组件,其本质是一套封装了特定能力(如推送、分享、存储、通信)的代码库与接口规范。理解SDK的工作原理,即通过标准化接口调用服务商提供的云端或本地能力,是高效集成的基础。其技术价值在于避免重复造轮子,让开发者能聚焦业务创新,同时依托服务商的规模与专业保障服务的稳定性与性能。在实际应用场景中,从移动端的用户互动、后端的云服务赋能,到运维监控与商业增长,SDK贯穿应用全生命周期。例如,在**推送服务**集成时,深入理解厂商通道机制与**权限引

aodiyi6351的博客 496

Android 热修复

什么是热修复? 在应用上线之后,出现了BUG需要及时修复时,不需要再发新的安装包,只需发布补丁包,在客户无感知的情况下修复BUG。 为什么要用热修复? 因为在实际的使用当中,如果应用出现了BUG,那么需要重新走开发>测试>发包>审核>上线的流程,到最终提示用户下载新的版本并安装,既可修复该BUG,但是相对来说太耗费人工成本,另外用户体验也不好,为了解决该问题,那么就需要通过热修复来处理。 怎么使用热修复? ...

郭宝的博客 746

Android热修复技术:Tinker实战指南

本文还有配套的精品资源,点击获取 简介:在Android开发中,热修复技术是保持应用稳定性和用户体验的关键。本文详细介绍了如何使用腾讯开源的Tinker进行应用的动态更新,包括集成Tinker、配置Tinker Gradle插件、创建和编译补丁包、服务器端管理和客户端补丁应用等关键步骤。文章还涵盖了测试、调试以及使用Tinker时需要关注的注意事项,确保开发者能够高效地修复...

weixin_29717341的博客 2716

Frida实战:SSL Pinning绕过技术全解析

本文详细解析了如何使用Frida工具绕过SSL Pinning技术,包括环境搭建、四种实战绕过方案及常见问题排查指南。通过具体代码示例和实战经验,帮助安全研究人员快速掌握SSL Pinning绕过技术,适用于金融类App的安全测试场景。

weixin_42530732的博客 188

Ecg信号QRS波峰检测:A Real-Time QRS Detection Algorithm (Pan-Tompkins法)

Pan-Tompkins法是R峰检测的经典方法,被引量高达6000+次。 Pan J, Tompkins W J. A real-time QRS detection algorithm[J]. IEEE transactions on biomedical engineering, 1985 (3): 230-236. 本文对论文流程进行了总结,并参考BioSigKit项目,复现了论文代码。 流程图: 代码如下: 第一部分是信号读入,这里使用MIT_BIH信号的100,读入10000个数据点 第二部分

weixin_42870380的博客 1万+

temu登录接口逆向分析(含Py纯算)

【代码】temu登录接口逆向分析(含Py纯算)

数据精灵喵 1948

WSL2+Docker实战:在Windows上部署MinerU 2.5.3,解锁媲美Demo的VLM PDF解析能力

本文详细介绍了如何在Windows系统上通过WSL2+Docker部署MinerU 2.5.3,实现媲美Demo的VLM PDF解析能力。文章涵盖环境准备、Docker部署实战技巧及高级使用技巧,特别针对PDF识别中的复杂排版、公式和图表处理提供了优化方案,帮助用户高效处理学术论文和技术文档。

weixin_29291573的博客 482

XGBoost详解(原理篇)

XGBoost全称为eXtreme Gradient Boosting,即极致梯度提升树。XGBoost是Boosting算法的其中一种,Boosting算法的思想是将许多弱分类器集成在一起,形成一个强分类器(个体学习器间存在强依赖关系,必须串行生成的序列化方法)。Note:关于Boosting算法详见博文集成学习详解_tt丫的博客-优快云博客XGBoost是一种提升树模型,即它将许多树模型集成在一起,形成一个很强的分类器。其中所用到的树模型则是CART回归树模型。

tt丫的博客 7万+

UE5实现距离测量功能

UE5实现距离测量功能

专注GIS开发 6268

RK3399平台开发系列讲解(内核入门篇)1.2、如何高效的阅读Linux内核设备驱动

内核开发在很大程度上并不是重新造“轮子”的过程,而是深入理解并尽量复用现有的内核设计框架,然后参照相似的功能模块去添加或改写某项需要的功能。在对内核整体框架以及某些子系统融会贯通以后,我们才有可能站在巨人的肩膀上去改进框架本身,实现自主创新。如果过分强调不必要的“自主创新”,可能会让内核的可维护性变差,最终结果反而得不偿失。 那么此次就分享就围绕如何高效的阅读内核驱动代码:

内核笔记 7341

高通平台开发系列讲解(系统篇)系统关机流程

📢本篇章主要图解高通平台系统关机流程。

内核笔记 3213

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: android 倒计时 CountDownTimer
weitf
博客等级 码龄16年 0粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值