Android thinker

本文详细介绍了一个简单的Android热修复过程,从环境搭建到实践操作,帮助读者理解如何使用Tinker进行热更新,解决应用中的紧急问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

国家虽安,忘战必危, Android虽爽,不学则忙,老夫纵横江湖数十载,深谙世事之难料,顾。。

 ok,ok 不装比了,进入正题,今天要讲的是Android 热修之 thinker。

在研究这个之前,我花了大量的时间 找了网上的一些内容,包括 csdn ,简书之类的文章,发现这些文章对于想要了解 这个thinker的 初学者来说,都tm是垃圾,真的垃圾,现在我来给大家用最通俗易懂的语言来讲讲我的理解。

 

first of all:对于愈加变态的需求,我们需要不断加强自己, 首先想了解thinker 你需要先看这个,https://github.com/Tencent/tinker/wiki/Tinker-接入指南 ,从上往下一个字不漏的看一遍,然后在文章的2/3处 有demo的 官方demo的试验方法,你先去试验一下 看能否成功,一般来说,只要有点帅的都可以成功,当你成功之后,你就会信心大增,从而开始自己写个小demo来测试,这时候你可能想,这还不是轻轻松松的, 曾几何时 老夫也是这样想,然而其中的坑只能自己啃!!

 

下面进入 demo 制作时刻:

 

1 。自己新建一个项目工程,我喜欢最直观的方式展现给大家,如下图所示!:

 

先按照 thinker官方要求,把gradle 依赖什么的配好,这是根目录的, 然后 配置 项目目录的,如下

 

这个里面东西有点多 一张图看不了,结尾我会把demo传给大家下载, gradle 里面东西有点多, 所以首页把官方的 gradle全部复制过来,里面有些东西需要稍微修改下,这里需要注意的是 thinker id ,在官方demo里面 这个是 

def gitSha() {
    try {
        String gitRev = 'git rev-parse --short HEAD'.execute(null, project.rootDir).text.trim()
        if (gitRev == null) {
            throw new GradleException("can't get git rev, you should add git to system path or just input test value, such as 'testTinkerId'")
        }
        return gitRev
    } catch (Exception e) {
        throw new GradleException("can't get git rev, you should add git to system path or just input test value, such as 'testTinkerId'")
    }
}
 
这个里面指向的,说实话这我tm看的不是很懂,目前来说...  但是无伤大雅,我们只需要改成自己定义好的 比如;
 
buildConfigField "String", "TINKER_ID","\"1.0\""

这样子就ok了,这里定义好之后,我们还需要在mainfest里面也 定义一下 thinkid;

 
<meta-data  android:name="TINKER_ID"  android:value="1.0" />

像这样,因为官方文档这样说:

 
TINKER_ID, NEW_TINKER_IDconfigField("key", "value"), 默认我们自动从基准安装包与新安装包的Manifest中读取tinkerId,并自动写入configField。在这里,你可以定义其他的信息,在运行时可以通过TinkerLoadResult.getPackageConfigByName得到相应的数值。但是建议直接通过修改代码来实现,例如BuildConfig。
当我们把这个改好之后,下面就开始 新建一个activity ,然后我的页面是这样的,
 
 
看得出来,非常简单,然后 activity代码这样的;
看的出来非常简单,然后我们把官方demo里面的那些类都拖到这个工程中,就像上面我截图所展示的工程目录一样,然后我们就把目前这个工程当做是 有bug的apk,  
然后开始打包, 在AS 的terminal 里面 输入 gradle assembleDebug ,打出一个测试包,这个时候你在 工程目录build 下面可以看到如图所示:
 
 
我们把刚刚生产的apk 拖出来 发送到qq,然后安装到手机,这个时候 手机上的为 有bug的apk,下面我们把这个apk的名字 复制一下,在 gradle 里面 把oldpaht的 路径改成这个:如图所示,
 
这个时候,我们修改一下 activity 里面的代码,如图所示:
 
 
这样以后,我们继续按照官方流程:
 
在AS 的terminal 里面 输入 gradle tinkerPatchDebug ,这个目的相当开始生成有差异的补丁包,运行完以后,可以在 工程目录看到如图:
 
 
 
好,把箭头指向的这个文件 通过adb push到我们手机里面,(这个不懂得同学要去好好了解下,关于了解内容 可以搜索 :Android adb push,你会发现你又学到新东西了),我这里是直接push到sdk的根目录下面, 当这一步也完成之后,剩下你所需要做的就是 点击activity按钮里面的 热修,静静的查看log之日,等他完成。。。。  
 
ok,特么的,我讲的完全不,你特么是不是要给个评论给个赞, 哟哟,check it,面对谁 pg one 几年前的兄弟,我们一直在房间里一直封闭,所以说我觉得 pg one你低俗,你从分赛到现在都没洗衣服,面对你我想举个白旗,因为你tm穿的像个寒流来袭!
 
 
 
下载地址:http://download.youkuaiyun.com/detail/apple_xiangsiyu/9918697

 

 

ThinkAndroid是一个免费的开源的、简易的、遵循Apache2开源协议发布的Android开发框架,其开发宗旨是简单、快速的进行 Android应用程序的开发,包含Android mvc、简易sqlite orm、ioc模块、封装Android httpclitent的http模块, 具有快速构建文件缓存功能,无需考虑缓存文件的格式,都可以非常轻松的实现缓存,它还基于文件缓存模块实现了图片缓存功能, 在android中加载的图片的时候,对oom的问题,和对加载图片错位的问题都轻易解决。他还包括了一个手机开发中经常应用的实用工具类, 如日志管理,配置文件管理,android下载器模块,网络切换检测等等工具。 目前ThinkAndroid主要有以下模块: MVC模块:实现视图与模型的分离。 ioc模块:android中的ioc模块,完全注解方式就可以进行UI绑定、res中的资源的读取、以及对象的初始化。 数据库模块:android中的orm框架,使用了线程池对sqlite进行操作。 http模块:通过httpclient进行封装http数据请求,支持异步及同步方式加载。 缓存模块:通过简单的配置及设计可以很好的实现缓存,对缓存可以随意的配置 图片缓存模块:imageview加载图片的时候无需考虑图片加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。 配置器模块:可以对简易的实现配对配置的操作,目前配置文件可以支持Preference、Properties对配置进行存取。 日志打印模块:可以较快的轻易的是实现日志打印,支持日志打印的扩展,目前支持对sdcard写入本地打印、以及控制台打印 下载器模块:可以简单的实现多线程下载、后台下载、断点续传、对下载进行控制、如开始、暂停、删除等等。 网络状态检测模块:当网络状态改变时,对其进行检测。 项目主页:https://github.com/white-cat/ThinkAndroid(不过这个项目已经两年没更新了)  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值