Unity Android DLL 更新
文章目录
介绍
Unity Android 平台下 DLL 更新的一个可行方法是修改 libmono.so 使其可以读取自定义目录下的 DLL 文件。
网上已经有相关的大量资料介绍:
- Unity Android DLL 热更新与加密 | 杨振林的博客
- 惊鸿哥的港湾——如何在CentOS/RHEL中编译Unity Mono生成Android版的libmono.so
- 惊鸿哥的港湾——Unity Android DLL 热更
- Unity3D-重新编译Mono加密DLL
这里主要的目标是适配 Unity 5.3.8f2,因此这里记录一遍流程。
环境
- CentOS 6.8
- Unity 5.3.8f2
- macOS 10.14.6
- Virtual Box 6.0
导入虚拟机
因为之前已经为 Unity 5.6.6f1 做过一次 DLL 更新,可以直接将上次的 VMWare 虚拟机拿过来使用。
使用 VirtualBox 打开 VMWare 创建的虚拟机,图文并茂:
配置 SSH 访问
使用虚拟机的话如果直接在 Virtual Box 中操作,无法复制粘贴,不是很方便,因此第一件事件是配置 SSH 访问。
关机,网络设置中增加第二块桥接网卡
开机修改配置文件
vi /etc/sysconfig/network-scripts/ifcfg-eth0
|
|
删除网络配置后重启
|
|
使用 Virtual Box 命令行或 GUI 界面增加 SSH 服务端口转发,然后在终端中使用以下命令连接
ssh -p 2222 root@127.0.0.1
这样可以在宿主机执行所有操作,方便复制粘贴命令与输出
配置国内镜像
配置国内镜像以提高下载包的速度。
|
|
编译
下载 zip 文件
scp -P 2222 ~/Downloads/mono-unity-5.3.zip root@127.0.0.1:~
unzip mono-unity-5.3.zip
修改 mono/metadata/image.c
中读取 dll 方法,可以参考文章开始处给的其他文章。
安装依赖包
|
|
修改 external/buildscripts/build_runtime_android.sh
git clone --branch "master" "$KRAIT_PATCH_REPO" "$KRAIT_PATCH_PATH"
改为
git clone --branch "unity-master-android2" "$KRAIT_PATCH_REPO" "$KRAIT_PATCH_PATH"
去掉 -g
编译选项,不要使用 -O3
修改 NDK 的 RELEASE.TXT
文件内容为 r10e
第一次执行 sh external/buildscripts/build_runtime_android.sh
第一次编译时会先克隆一个仓库并报错
vi ../../android_krait_signal_handler/build.pl
将第一行
#!/usr/bin/env perl -w
改成
#!/usr/bin/perl -w
第二次执行 sh external/buildscripts/build_runtime_android.sh
将生成的结果拷贝到 Unity 安装目录中:
C:\Program Files\Unity5.3.8f2\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Libs
总结
其实在实际使用时,还有很多可以优化的地方:
- 使用 Packer 与 Vagrant 自动化生成镜像与使用镜像
- 配置共享文件夹,将所有相关文件放在共享目录中,在宿主机中修改