unity3d libmono最简单的编译

来源:互联网 发布:淘宝客如何设置佣金 编辑:程序博客网 时间:2024/06/03 05:31

前言:如果你在考虑unity的热更新问题,那么有几种方案可以供你选择
1. 选择lua :可以保证你的ios+android平台更新,缺点:lua调试很蛋疼,不是面向对象的语言(虽然你可以用table来作为假定的面向对象,但是这里我说的是标准的面向对象)
2. 选择反射:可以做到ios+android平台更新,缺点:不能挂载mono脚本到你的prefab上,所有的东西你都需要去通过find查找这个prefab下的节点
3. 选择libmono:可以做到android平台热更新,缺点:ios做不到
4. 选择其他的类lua的东西,这里不做介绍

这里给你一个建议:如果你需要快速开发那么请选择3,因为这种方式开发是最友好的,并不会对开发者造成任何的问题,和以前开发一样,如果你想双平台更新那么请选择1,其他方案我都不推荐了

我们游戏就属于需要快速开发,所以我们选择了3,之前了解了一些文章,在windows下尝试过编译mono源码,但是一直有些环境安装不了,加之当时的事情太多所以就交给其他同学在处理这个东西,后来他在mac下成功编译了,我这里也是借他的编译过程简单的记录下。网上可能有很多的介绍,但是我这里以最简单的方式来完成这个过程。

第一步:安装装载器

首先你需要安装一个叫brew的东西,这个东西简单来说就是为你安装其他软件的一个装载器,有了这个东西本文的环境基本上不用担心了(有些mac版本已经有了这个就跳过这个步骤)。具体只需要在终端输入

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然后就静静的等待他的安装,国外的东西都挺慢的,所以不要放弃。

第二步:搭建环境,输入

brew install autoconf automake libtool pkg-config

这里是不是突然觉得mac下好舒心,装东西就这么方便,只需要一个命令就可以去喝茶了。这里就安装了4个软件了。

第三步:下载mono对应的版本

下载你的mono对应的版本,并存放到本地非中文目录(一定要非中文的目录,否则编译失败)下载地址 https://github.com/Unity-Technologies/mono

第四步:修改加载路径,直接参考我的吧(关键处)

本地存放在mono/metadata/image.c这个文件
下载地址:http://download.csdn.net/detail/pdw_jsp/9751495一共四处修改 都带有 EditFlag

第五步:执行编译

把/mono-unity-x/external/buildscripts/build_runtime_android.sh复制到/mono-unity-x根目录下 并 cd到这个目录,然后执行

bash /mono-unity-x/external/buildscripts/build_runtime_android.sh

等待几分钟编译结束后在build下可以找到们编译后的so文件

第六步:替换so文件

拷贝编译后的so文件到unity安装目录下。例如如下路径

C:/Program Files (x86)/Unity/Editor/Data/PlaybackEngines/androidplayer/release/libs/armeabi-v7a/libmono.so

第七步:测试更新

更新测试这里就不给出了。可以自己写个简单的测试例子然后放到android机器上验证以下就可以了,我这里是经过了验证的。

总结:重新编译libmono其实就是为了重新指定dll的读取路径,让我们每次更新的dll变成当前的dll即可

0 0
原创粉丝点击