热修复(更新)方案使用教程(Tentcent InjectFix)

时间:2024-03-28 07:19:27


为什么叫采坑呢?因为这是在研究新技术嘛,并没有踩进去,而是在尝试,因此采集到的了一些坑的地方,并解决它们,写出来给大家看看。

学习之前

首先非常感谢 车先生对这一切的贡献!

下载

这里Click是InjectFix在github上的工程地址,大家先浏览一下,上面有非常详细的功能介绍和使用过程,如果您能按照官网上一步一步 的学习,那非常好,您或许可以看看下面的“采坑”~

当然,如果您想跟随本章教程一起学习的话:
请先下载这个工程吧。。(因为大陆网络限制原因可能很多可爱的程序员不能访问github成功下载工程,那么我这里贴出来。。qq云盘 密码:3usc3i

下载下来过后:
1,解压后打开路径“InjectFix-master\Source\VSProj ”,右键编辑方式打开build_for_unity.bat文件,修改Unity_Home为你Unity安装 目录,(1:和Editor平级目录)然后保存后运行。
2,运行后其实就是安装了injectfix这个工具了,具体做了些什么你们可以自己找找看。
3,新建一个新的Unity工程,将InjectFix-master\Source\UnityProj下的两个文件夹复制粘贴到你的工程Assets文件夹同级目录下,然后打开工程就导入完成了。
4,下面介绍一下该工具的使用
热修复(更新)方案使用教程(Tentcent InjectFix)


inject : 注入。将当前工程作为发布包进行一系列操作,保存当前状态在发布包当中,Inject后就不可以再生成补丁了,可以理解为:这个工程现在只能被修复,但不能再这个工程基础上生成修复包了。

这就是为什么在官网的教程上这位车老哥会告诉你,先修改一下代码,改为正确的计算逻辑,然后fix,然后再改回来,再inject。从而可以在editor上测试热修复。

而我们为了方便更多小白鼠的理解呢,我们在当前的基础上,再开一个工程。稍后操作,先介绍完这些哈哈:

Fix :修复。生成一个热修复文件(补丁),该文件就是用来热修复的,他会以.bytes结尾。
下面的两个

Fix Android、iOS :分别是android和ios的补丁生成方法。


好了,介绍完之后,我们继续教程操作。

这个时候我们应该是两个相同的工程已经打开了,可以分别命名为Test_InjectTest_Fix
一个用来测验热更效果,一个用来生成补丁。

好,下面实际操作一个热更新流程:

1,打开工程 Test_Inject,打开场景helloworld,点击InjectFix-Inject热修复(更新)方案使用教程(Tentcent InjectFix)
现在我们是在将我们目前这个工程进行注入,这代表着我们不能用此工程进行Fix补丁产生了。那么就用第二个工程进行产生补丁。

2,打开工程 Test_Fix,这里可以看到工程Helloworld文件夹,这是一个测试demo文件夹,打开里面热修复(更新)方案使用教程(Tentcent InjectFix)有两个cs,Calc是计算器方法
Helloworld是绑定在相机上的程序入口。大家可以打开看一下,等你们三分钟。
1分钟。。

2分钟。。

3分钟。。
好,看完了我们知道在Helloworld中运用Calc的add方法进行了计算,那么目前我们尝试热更一下这个add方法,我们来修改一下Calc类中的add方法:
将:热修复(更新)方案使用教程(Tentcent InjectFix)
修改为:
热修复(更新)方案使用教程(Tentcent InjectFix)
注意,我们增加了一个特性[Patch]增加了一个debug,修改了a*b的返回值为a+b
Ok!

3,这个时候我们点击这个 Test_Fix工程的Fix(注意我们是在editor下测试的。因此,不要选择android的和ios的Fix哦~)
控制台显示:热修复(更新)方案使用教程(Tentcent InjectFix)
则表示我们生成补丁文件成功了。然后我们需要找到补丁然后打到第一个工程里就Ok了,下面我们找到补丁。
5,右键Assets文件夹,点击ShowInExplore,找到这个.bytes文件热修复(更新)方案使用教程(Tentcent InjectFix)
复制一下,就可以了。


刚才我们已经做好了补丁包,那么我们来测试一下是否可以热更add方法:

1,打开Test_Inject 工程,运行。。
我们发现控制台打印了运行结果
热修复(更新)方案使用教程(Tentcent InjectFix)
10+9=90 这就是原有Helloworld代码执行的结果。

2,好我们现在热更这个方法,取消运行状态,将刚才复制好的.bytes文件复制到Resources文件夹下(没有就创建一个)
。执行。。

3,我们发现,现在同样的Calc代码,执行结果却是我们在Fix工程里修改过的结果了。
热修复(更新)方案使用教程(Tentcent InjectFix)


到这里我们就已经完成了一个热更流程了,是不是很神奇。。

采坑:

1,在配置InjectFix工具文件的时候。修改Unity_Home为你Unity安装 目录不是Editor下,而是和Editor平级目录,和**unity不同哦。

2,要好好理解Inject和Fix的关系,才可以避免点击fix的时候报这个错
热修复(更新)方案使用教程(Tentcent InjectFix)
3,当你双击bat文件配置如果出错,可能是你的路径有中文。
4,配置好InjectFix工具后如果打开工程后inject如果还是提示你应该安装Inject工具,那么你可以试着打开
热修复(更新)方案使用教程(Tentcent InjectFix)
运行这个exe后,再次执行build_for_unity.bat文件文件安装InjectFix工具。

暂时这么多,感谢你用心看到现在,祝你2020快乐~

如果有什么问题可以在下方留言哦,Up主平时工作比较忙,但是几乎每天都会看一看留言的,知无不答言无不尽!
顺手想打2019的时候,转眼一看已经2020.1.1了,这一年看了多少遍右下角的2019,可是再也看不到了,还有点想念吧?再见了2019~

新年好 2020 !


Eric 白羽
2020.1.1