Android thinker

article/2025/8/21 5:47:58

国家虽安,忘战必危, 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.csdn.net/detail/apple_xiangsiyu/9918697

 

 


http://chatgpt.dhexx.cn/article/RON4XLLF.shtml

相关文章

ESP32-CAM AI THINKER 引脚排列:GPIO 用法说明

ESP32-CAM 是一款开发板,带有一个 ESP32-S 芯片、一个 OV2640 摄像头、microSD 卡插槽和几个用于连接外设的 GPIO。在本指南中,我们将介绍 ESP32-CAM GPIO 以及如何使用它们。 引脚排列图 下图显示了 ESP32-CAM AI-Thinker 的引脚排列图。 电路原理示意图 下图显示了 ESP…

Thinkpad 各系列简介

ThinkPad 各系列简介 如果提到商务笔记本&#xff0c;大家一定会想到凭借坚固和可靠的特性在业界享有很高声誉ThinkPad笔记本电脑&#xff0c;以及ThinkPad那经典的键盘红点设计和纯黑低调的外表。 在这里我就简单介绍一下ThinkPad的各系列产品。 Thinkpad名称来历 “ThinkP…

python thinker canvas create_arc 使用详解

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 本文链接&#xff1a;https://blog.csdn.net/A757291228/article/details/106739556 ———————————————— 版权声明&#xff1a;本文…

二、让界面动起来,Python基于thinker实现的简单的俄罗斯方块小游戏

文章目录 界面动起来定时刷新页面移动俄罗斯方块 界面动起来 **功能&#xff1a;**如何让方块「动起来」? 分析过程&#xff1a; 要想让方块动起来&#xff0c;需要实现以下两点&#xff1a; 定时刷新页面移动页面内部的俄罗斯方块 定时刷新页面 实现定时刷新页面&#xff…

三、生成随机方块,Python基于thinker实现的简单的俄罗斯方块小游戏

文章目录 生成第一步&#xff1a;随机生成方块对象第二步&#xff1a;修改游戏运行方法 固定第一步&#xff1a;记录固定的方块第二步&#xff1a;修改check_move方法 左右移动第一步&#xff1a;左右移动方块第二步&#xff1a;绑定键盘 旋转第一步&#xff1a;添加旋转方法第…

【G-thinker】G-thinker部分源码解析

一、main 子图匹配程序run.cpp中主要使用到worker.h和comper.h分别对应线程和进程单位&#xff0c;接下来我们从main函数入手解析源码 从主函数可以看到&#xff0c;子图匹配程序中GMatchWorker继承了worker&#xff0c;主函数声明了workerparams并且传入了路径和线程参数&am…

python用thinker库制作一个进制转换器(可打包exe)

进制类型分为&#xff1a; 二进制 字母B表示 八进制 字母O表示 十进制 字母D表示 十六机制 字母H表示 进制转换之间很麻烦&#xff0c;还得计算&#xff0c;如果可以做一个进制转换器多nice&#xff0c;其实也不难&#xff0c;就利用一个tkinter库就能制作&#xff0c;废话不多…

Thinker Board 2开发板上使用奥比中光 astra 深度相机

Thinker Board 2 国产开发板 arm架构 上使用奥比中光 astra 深度相机 准备工作 1、下载astraSDK 选择linux_arm 下载 https://developer.orbbec.com.cn/download.html?id53 2、下载openNI https://dl.orbbec3d.com/dist/openni2/OpenNI_2.3.0.66.zip 开始安装 1、安装fre…

think

我167&#xff0c;97斤&#xff0c;胸d&#xff0c;腰很细&#xff0c;反手轻松摸肚脐那种&#xff0c;骨架小&#xff0c;总结就是身高刚好人瘦胸大屁股大腿细腰细肤白。走路腰杆能挺到天上&#xff0c;气质挺好。漂亮女生太多了&#xff0c;想取胜只能从气质下手了。脸呢&…

Python基于thinker实现的简单的俄罗斯方块小游戏源代码:一、搭建界面

文章目录 一、搭建界面搭建基础窗体第一步&#xff1a;创建画板大小第二步&#xff1a;在画板上作画 绘制俄罗斯方块第一步&#xff1a;绘制o形俄罗斯方块第二步&#xff1a;绘制其他形状方块 记录俄罗斯方块小游戏的游戏思路和过程 一、搭建界面 **目标&#xff1a;**搭建基础…

thinker board s debian系统安装配置

thinker board s debian系统安装配置 好多年前买了一块thinker board s&#xff0c;装安卓系统来用&#xff0c;结果经常性卡死不知道为啥&#xff0c;可能是供电问题&#xff0c;也可能是系统bug&#xff0c;之后就吃灰不怎么用了&#xff0c;最近想装一个计算服务器&#xff…

python利用thinker制作多页面切换的桌面应用实例教程

本篇文章主要讲解&#xff0c;python利用thinker制作多页面的桌面实例教程。可以在一个主界面中相互进行切换和设置相关的表单信息&#xff0c;布局等方法 代码片段的实际效果 视频演示&#xff1a; python使用thinker制作多窗口代码片段实例效果 gif动态图&#xff1a; 构建…

模型思维-THE MODEL THINKER

序言这本书是怎样写成的 Part1为什么需要模型思维 01做一个多模型思考者 使用模型来思考能够带给你的&#xff0c;远远不仅仅是工作绩效的提高。它还会使你成为一个更优秀的人&#xff0c;让你拥有更强的思考能力。你将更擅长评估层出不穷的经济事件和政治事件&#xff0c;更能…

展示一下用thinker做小软件的UI

有一个大坑给大家分享一下。ttk.Treeview可以改变列宽&#xff0c;却不能改变某一行的行高&#xff08;可以改变整体的行高&#xff09;&#xff0c;其实就是Treeview没有自动换行功能&#xff0c;很痛苦&#xff0c;很折磨&#xff0c;......我一度放弃thinker&#xff0c;因为…

Python Thinker GUI的组件的简单总结

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Label二、Button三、Entry四、Text五、CheckButton六、RadioButton七、Menu八、Canvas九、Scale 前言 例如&#xff1a;随之前学过Java的基础&#xff0c;…

Thinker 使用详解

文章目录 Tinker基本介绍它主要包含以下几部分&#xff1a;为什么使用 Tinker Tinker 执行原理及流程简单的使用 Tinker1,在项目的gradle.properties 中添加2,在项目的 gradle中添加&#xff1a;3,在 app 中的 gradle 中添加&#xff1a;4,接着进行初始化&#xff0c;新建一个类…

python界面编程-thinker

一、介绍 thinker是python内置界面库不需要额外安装 二、控件使用 1、窗口 import tkintertop tkinter.Tk()#创建窗口 top.mainloop()#消息循环2、按钮 from tkinter import *def button_event():print("按钮按下\n")return#创建窗口 main_window Tk() #设置窗口…

python thinker(菜单,滚动条,回调函数,对话框)

菜单menu from tkinter import * root Tk() def lab():label0Label(root,text"hello world")label0.grid(column0) root.geometry("800x480")#窗口大小menu0Menu(root)#参数是父级控件 for x in [文件,编辑,视图]:menu0.add_command(labelx,commandlab)#…

永恒之蓝(勒索病毒)

1、要有一台靶机和一台攻击机&#xff0c;这里的攻击机为kali&#xff0c;靶机为Windows2008。 2、添加一个新的网卡&#xff0c;防止病毒传播到主机。 1、添加网卡&#xff1a; 注意&#xff1a;这里添加的子网ip不能和前面的重复。 3、给虚拟机设置网卡。 两台虚拟机要设置为…

老生常谈,永恒之蓝-winxp

老生常谈&#xff0c;永恒之蓝-winxp 环境说明&#xff1a; 攻击机&#xff1a;kali 靶机&#xff1a;windows xp sp2 靶机开放服务&#xff1a;无&#xff0c;IE浏览器版本 6.0 信息收集&#xff1a; 扫描当前网段存活主机&#xff0c;发现目标主机&#xff1a;IP&#xf…