dll 源码_重新编译mono——Android动态更新dll

环境:

操作系统:Mac OSX10.12.6

mono版本:unity2017.1.3p4

NDK版本:android-ndk-r10e

一.指导步骤:

1.修改mono源码,重新编译,替换打包机的libmono.so(Mac路径:Unityxxx ▸ ⁨PlaybackEngines⁩ ▸ ⁨AndroidPlayer⁩ ▸ ⁨Variations⁩ ▸ ⁨mono⁩ ▸ ⁨Release⁩ ▸ ⁨MonoLibs⁩)(请参考https://www.toutiao.com/i6694163607380296205/)

2.与服务器对比版本,下载新版Assembly-CSharp.dll,存入手机目录/data/data//files中。

3.重启apk,启动时决定是否调用外置dll或内置dll

二.流程图

e3748ab3ab704dbd66bef28c727f918d.png

---------------------------------------------华丽的分割线---------------------------------------

三.mono启动校验代码:

1.读取外部版本文件fuckbin

2.通过外部版本文件MD5读取最新下载的dll文件

3.通过dll文件前四个字节获取版本号A

4.获取原始dll的前四个字节获取版本号B(具体如何修改apk内置dll版本号在另一篇单独讲解)

5.通过A与B比较决定是否使用新dll

(版本对比方案有很多,保证使用dll为最新的即可)

Modify Beginint datasize = 0; char *bytes = NULL;if(name != NULL){if(strstr (name, "Assembly-CSharp.dll")){ int a_version = 0; int b_version = 0; //本地dll的版本号 char _ver[4]; memset(_ver, 0, 4); memcpy(_ver, data, 4); b_version = atoi(_ver);g_strdup_printf("read super file,%s
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值