dll 源码_重新编译mono——Android动态更新dll
環(huán)境:
操作系統(tǒng):Mac OSX10.12.6
mono版本:unity2017.1.3p4
NDK版本:android-ndk-r10e
一.指導(dǎo)步驟:
1.修改mono源碼,重新編譯,替換打包機(jī)的libmono.so(Mac路徑:Unityxxx ? ?PlaybackEngines? ? ?AndroidPlayer? ? ?Variations? ? ?mono? ? ?Release? ? ?MonoLibs?)(請(qǐng)參考https://www.toutiao.com/i6694163607380296205/)
2.與服務(wù)器對(duì)比版本,下載新版Assembly-CSharp.dll,存入手機(jī)目錄/data/data//files中。
3.重啟apk,啟動(dòng)時(shí)決定是否調(diào)用外置dll或內(nèi)置dll
二.流程圖
---------------------------------------------華麗的分割線---------------------------------------
三.mono啟動(dòng)校驗(yàn)代碼:
1.讀取外部版本文件fuckbin
2.通過外部版本文件MD5讀取最新下載的dll文件
3.通過dll文件前四個(gè)字節(jié)獲取版本號(hào)A
4.獲取原始dll的前四個(gè)字節(jié)獲取版本號(hào)B(具體如何修改apk內(nèi)置dll版本號(hào)在另一篇單獨(dú)講解)
5.通過A與B比較決定是否使用新dll
(版本對(duì)比方案有很多,保證使用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的版本號(hào) 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的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: div 布局_CSS布局:三栏布局
- 下一篇: 储存外部资源的Android项目子目录,