dll文件复制和替换不了_重新编译mono——Android动态更新dll
環(huán)境:
操作系統(tǒng):Mac OSX10.12.6
mono版本:unity2017.1.3p4
NDK版本:android-ndk-r10e
一.指導(dǎo)步驟:
1.修改mono源碼,重新編譯,替換打包機的libmono.so(Mac路徑:Unityxxx ? ?PlaybackEngines? ? ?AndroidPlayer? ? ?Variations? ? ?mono? ? ?Release? ? ?MonoLibs?)(請參考https://www.toutiao.com/i6694163607380296205/)
2.與服務(wù)器對比版本,下載新版Assembly-CSharp.dll,存入手機目錄/data/data//files中。
3.重啟apk,啟動時決定是否調(diào)用外置dll或內(nèi)置dll
二.流程圖
---------------------------------------------華麗的分割線---------------------------------------
三.mono啟動校驗代碼:
1.讀取外部版本文件fuckbin
2.通過外部版本文件MD5讀取最新下載的dll文件
3.通過dll文件前四個字節(jié)獲取版本號A
4.獲取原始dll的前四個字節(jié)獲取版本號B(具體如何修改apk內(nèi)置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總結(jié)
以上是生活随笔為你收集整理的dll文件复制和替换不了_重新编译mono——Android动态更新dll的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 修改mongodb最大查询数_关于Mon
- 下一篇: rediscluster全局数据_red