报错InvalidOperationException: The builder was not properly initialized.
加载成功,热修的东西都加载出来了,但是报错(现在没发现这个报错影响了什么)。 InvalidOperationException: The builder was not properly initialized. at System.Resources.SatelliteContractVersionAttribute.get_Version () [0x00000] in <00000000000000000000000000000000>:0 at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <00000000000000000000000000000000>:0 at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <00000000000000000000000000000000>:0 at IFix.Core.ReflectionMethodInvoker.Invoke (IFix.Core.VirtualMachine virtualMachine, IFix.Core.Call& call, System.Boolean isInstantiate) [0x00000] in <00000000000000000000000000000000>:0 at IFix.Core.ExternInvoker.Invoke (IFix.Core.VirtualMachine vm, IFix.Core.Call& call, System.Boolean isInstantiate) [0x00000] in <00000000000000000000000000000000>:0 at IFix.Core.VirtualMachine.Execute (IFix.Core.Instruction* pc, IFix.Cor
调用你的SatelliteContractVersionAttribute.Version的时候,你这个属性抛了异常
调用你的SatelliteContractVersionAttribute.Version的时候,你这个属性抛了异常
项目里没有这个调用,我在编辑器里跑了下没有这个异常,在Android上跑的时候报这个错误
调用你的SatelliteContractVersionAttribute.Version的时候,你这个属性抛了异常
项目里没有这个调用,我在编辑器里跑了下没有这个异常,在Android上跑的时候报这个错误
那就是你Android调用了。
调用你的SatelliteContractVersionAttribute.Version的时候,你这个属性抛了异常
项目里没有这个调用,我在编辑器里跑了下没有这个异常,在Android上跑的时候报这个错误
那就是你Android调用了。
[IFix.Patch]
public async Task Initialize()
{
Debug.Log("测试await热修复");
await TestAsync(); //热更添加
Debug.Log("测试await热修复1");
}
//原有
public async Task TestAsync()
{
Debug.Log("测试await热修复0.1");
await Task.Delay(10);
Debug.Log("测试await热修复0.2");
}
我测试了下发现,只要修改async Task方法,然后这个方法里有await就会报这个错误。
调用你的SatelliteContractVersionAttribute.Version的时候,你这个属性抛了异常
项目里没有这个调用,我在编辑器里跑了下没有这个异常,在Android上跑的时候报这个错误
那就是你Android调用了。
[IFix.Patch] public async Task Initialize() { Debug.Log("测试await热修复"); await TestAsync(); //热更添加 Debug.Log("测试await热修复1"); } //原有 public async Task TestAsync() { Debug.Log("测试await热修复0.1"); await Task.Delay(10); Debug.Log("测试await热修复0.2"); }我测试了下发现,只要修改async Task方法,然后这个方法里有await就会报这个错误。
我用附带的Helloworld工程又测试了一下,用Fix(Android)打出来的补丁,放进apk中await就无法热修。但是用Fix打出来的补丁,放进apk里就能热修await
@QYC-Unity 同样的问题,在task或者valuetask里面调用await会出现同样的报错。 把task或者valuetask换成unitask后,可以正常热更
同样的问题, 老哥们有结论吗?
同样的问题, 老哥们有结论吗?
我这边不用平台fix,直接用fix打的补丁可以
同样的问题, 老哥们有结论吗?
我这边不用平台fix,直接用fix打的补丁可以
我也试试看, 不过这样子感觉怪怪的
injectfix是按实际编译出来的dll里的指令来生成补丁,fix android有这个调用,也就是android编译的dll有这个调用。