Unity Android DLL热更
有异曲同工之处。
这里是为了能够在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
2013.3.0 f1 编译方法一样,只需要更新mono相关即可,NDKr10e 一样可用
TODO