美文网首页
通过IL2CPP热更代码

通过IL2CPP热更代码

作者: 陌路契约zzz | 来源:发表于2019-12-30 10:58 被阅读0次

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

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

    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时遇到的一些坑。

    • 使用demo中的libbootstrap库不能热更自己的app

      其实在readme文件中作者已经说了,demo中的库只适用于包名为cn.noodle1983.unitypatchdemo的apk,那么要想热更自己定义包名的apk只有重新编译出一个libbootstrap库了。下载上文提到的依赖库,然后编译出一个新的库。简单说下如何编译出新的库。

      1.如果你还没有android-ndk-r16b环境,那么就去https://developer.android.google.cn/ndk/downloads/older_releases.html这个地址下载安装NDK。然后配置一下环境变量。当你在控制台输入ndk-build命令出现下图的输出后就表示你的NDK环境已经搭建好了。

      image-20191230105350154.png

      2.下载解压完libboostrap后,需要编辑build_android.bat文件,然后把NDK的路径填写好。

    image-20191230105441851.png

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

    image-20191227203007230.png

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

    相关文章

      网友评论

          本文标题:通过IL2CPP热更代码

          本文链接:https://www.haomeiwen.com/subject/jibpoctx.html