通过IL2CPP热更代码

2019-12-30  本文已影响0人  陌路契约zzz

最近有空研究了一下游戏的代码热更。

代码热更主流方案有如下几种:

1.通过代码改写mono读取dll的路径,从而实现旧dll替换为新dll。这个过程中最难的是编译mono,里面有非常多的坑。不过幸好网上已经有很多人把避坑指南给我们了。我是照着这篇文章编译mono的,还是遇到了很多坑。只能说环境一定要先搭建正确。

Unity中的Mono & Linux上编译Mono的流程

2.热更lua代码,这个其实已经很成熟了。大部门项目会用到toLua、xLua这两个方案。只要在创建lua虚拟机之前热更玩lua代码就没问题了。

3.热更IL2CPP。网上找了一些文章,大部分文章其实都是在讲一位大佬写的解决方案。我也是通过这个案例成功的实现了热更IL2CPP。

热更IL2CPP案例地址:https://github.com/noodle1983/UnityAndroidIl2cppPatchDemo/

依赖库地址:https://github.com/noodle1983/UnityAndroidIl2cppPatchDemo-libboostrap

通过案例中的ReadMe文件,我们可以知道他是如何实现热更的。

最主要的部实现方式就是使用libbootstrap库将libil2cpp的加载重定向到新的libil2cpp并且实现旧apk读取新的patch文件。作者已经帮我们做好了。

该文主要记录我在实现热更IL2CPP时遇到的一些坑。

image-20191230105441851.png

3.运行bat文件,等待编译完成,在ndk路径下的libs文件夹中就会有对于cpu架构的libboostrap库

image-20191227203007230.png

4.将这里面的库替换掉项目中的库,然后就可以热更自己项目的了。

上一篇下一篇

猜你喜欢

热点阅读