首页 > 其他 > 详细

【InjectFix】injectFix热修复使用介绍

时间:2021-01-12 20:24:48      阅读:115      评论:0      收藏:0      [点我收藏+]
 
XLua的升级版,可以直接在unity工程上修改C#代码即可更新,符合苹果热更新条款
 
一、原理:
虚拟机负责新逻辑的解析执行;注入代码负责把调用重定向到虚拟机;
 
二、使用流程和方法:
1.安装
下载解压后,VSProj文件夹下的built_for_unity.bat文件,编辑修改UNITY_HOME为本机unity安装目录,保存之后运行
 
IFixToolKit文件夹在和Asset文件夹同级目录,Assets文件夹下有IFix和Plugins文件夹
 
打开之后可以看到:
技术分享图片

 

 

技术分享图片
1.Inject:注入,对工程进行一系列操作,保存当前状态,Inject之后就不能生成补丁了
 
2.Fix:生成一个热修复文件,文件就是用来热修复的,以.bytes结尾
 
2.配置热更新
热更新的实现依赖于提前做些静态代码插入,需要做配置类
而且配置必须打[Configure]标签 必须放在Editor目录下,创个脚本在Editor下
//两种方式
//1、配置类必须打[Configure]标签
//2、必须放Editor目录
[Configure]
public class HelloworldCfg
{
    [IFix]
    private static IEnumerable<Type> hotfix
    {
        get
        {
            return new List<Type>()
            {
                typeof(Helloworld),
                typeof(IFix.Test.Calculator),
                //AnotherClass在Pro Standard Assets下,会编译到Assembly-CSharp-firstpass.dll下,用来演示多dll的修复
                typeof(AnotherClass),
            };
        }
    }
    
    [IFix]
    private static IEnumerable<Type> ToProcess
    {
        get
        {
            return (from type in Assembly.Load("Assembly-CSharp").GetTypes()
                    where type.Namespace == "XLua" && !type.Name.Contains("<")
                    select type);
            //对XLua命名空间下进行插入
        }
    }
}

 

注:
*配置类打上Configure标签
* 配置的属性打上IFix标签,而且必须是 __static__ 类型
 
3.修改bug打补丁
如;
错误的代码:
public int Add(int a, int b)
{
  return a - b;
}

在方法上打上[Patch]标签并修改里面内容

[Patch]
public int Add(int a, int b)
{
    return a + b;
}

保存之后执行InjectFix/Fix菜单,在项目文件夹中生成.bytes文件

 
4.上传补丁
实际项目可上传到服务器中加载,在此仍然在原项目中使用,将Assembly-CSharp.patch.bytes文件放在Resources文件夹中。

 

【InjectFix】injectFix热修复使用介绍

原文:https://www.cnblogs.com/weigangblog/p/14080959.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!