Unity Android DLL热更

梦想游戏人
目录:
Unity

和 Unity Mono 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

Scroll Up