有異曲同工之處。
這裏是爲了能夠在Android下熱更C#代碼
另外一個更高層次的是更新so 實現il2cpp 的熱更
搭建mono編譯環境:(參考自:https://blog.csdn.net/huutu/article/details/58184031)
1.下載mono的unity分支 源代碼 https://github.com/Unity-Technologies/mono
2.下載ubuntu 14 64
3.unity 5.6版本的NKD必須是r10e 下載NDK
4.sudo su 切換到root安裝 ./android-ndk-r10e-linux-x86.bin
5.安裝後在安裝目錄裏面找到 RELEASE.txt ,裏面記錄着NDK 完整版本號,去掉rc4 ,修改爲 r10e
6.設置環境變量 ANDROID_NDK_ROOT sudo gedit /etc/bashrc
7.添加一行 export ANDROID_NDK_ROOT=/home/css/android-ndk-r10e;
8.讓環境變量立即生效 source /etc/bashrc , 測試是否添加成功 echo $ANDROID_NDK_ROOT
9.修改腳本build_runtime_android.sh,sudo gedit build_runtime_android.sh,
搜索KRAIT_PATCH_PATH 修改,KRAIT_PATCH_PATH="${CWD}/android_krait_signal_handler/build",
搜索(cd "$KRAIT_PATCH_PATH" &&修改(cd "$KRAIT_PATCH_PATH" && perl ./build.pl),,
android_krait_signal_handler/build.pl 刪除第一行註釋
10..安裝編譯環境
autoconf ,automake,bison,gcc,gettext,glib,make,perl
11.直接在mono目錄下執行 ./external/buildscripts/build_runtime_android.sh
輸出目錄在 builds/embedruntimes/android/xxxxxx
------------------------------------------------------------------------------------------
採坑
1.修改 build_runtime_android.sh -fpic -g 去掉-g 添加-O2 優化,其中O3 O4會閃退
2.
clean_build "$CCFLAGS_ARMv5_CPU" "$LDFLAGS_ARMv5" "$OUTDIR/armv5"
clean_build "$CCFLAGS_ARMv6_VFP" "$LDFLAGS_ARMv5" "$OUTDIR/armv6_vfp"
改成
#clean_build "$CCFLAGS_ARMv5_CPU" "$LDFLAGS_ARMv5" "$OUTDIR/armv5"
#clean_build "$CCFLAGS_ARMv6_VFP" "$LDFLAGS_ARMv5" "$OUTDIR/armv6_vfp"
3.image.c 代碼出 name 要判空一下,否則反射會閃退 Assembly.LoadXXXXX
4.重定向路徑的時候要注意路徑的正確性,Application.perXXXXXPath
TODO