mono unity Xamarin 这三者之间是啥关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mono unity Xamarin 这三者之间是啥关系相关的知识,希望对你有一定的参考价值。

参考技术A 简单点说你可以理解为mono=Xamarin,unity在两者之外。
详细点说就是:
1、Mono:
.net是微软出的标准。如果站在Mono的角度来说,这套标准能规定编译器产生一些符合一定条件的文件出来,这些中间文件最后在目标平台上被解析成跟机器相关的东西。问题是,开始只有Windows上才能运行.net标准的代码。因为其他如Linux之类的机器上没有相应的基础库和相关的执行文件来解析这种标准下的东西。所以,就产生了Mono。Mono的目标是在尽可能多的平台上使.net标准的东西能正常运行的一套工具,叫framework也好,叫库也好,核心在于“跨平台的让.net代码能运行起来“。
2、Unity:
这是一个3D引擎,用来给行业(游戏、教育、仿真等需要大量使用三维数字表现的地方)快速的制作互动式的3D数字产品(主要是3d游戏)的工具。在用到编程的地方,Unity采用C#、javascript(官方可能叫UnityScript)、Boo,这些语言的编译支持需要上面的Mono的支持。Unity默认的开发IDE,也是Mono提供的MonoDevelop。Unity的跨平台能力,主要是架构在Mono这个基础上。

3、Xamarin:
跟Mono有千丝万缕的关系,Mono现在就应该是它赞助的。跟Mono之间的关系在我了解的资料上,是“Mono是开源的,商业化的Mono就是Xamarin”,但是这句话可能不对,仅供参考。

Xamarin Android - 关闭 Mono 日志

【中文标题】Xamarin Android - 关闭 Mono 日志【英文标题】:Xamarin Android - Turn off Mono Logs 【发布时间】:2015-01-01 20:34:38 【问题描述】:

这可能是一件很挑剔的事情,但在 Xamarin 中运行 Android 应用程序时,它会在控制台中转储大量以 [Mono] 开头的行

有没有办法禁用这些日志?

提前致谢

【问题讨论】:

【参考方案1】:

这可以通过改变设备上Monos执行环境的状态来实现;这只是一组改变 Monos 行为的环境变量(垃圾收集、日志记录等)。在这种情况下,要更改日志记录行为,我们需要修改存储在环境变量 MONO_LOG_LEVELMONO_LOG_MASK 中的值。

Xamarin.Android 提供了 2 种机制开发人员可以用来更改执行环境:

1. 使用adb shell setprop debug.mono.env。这可以作为构建后操作来完成。 2. 使用环境构建文件更改每个项目的执行环境状态。

我更喜欢使用方法 2,因为编辑文本文件比更改构建操作更容易。使用下面列出的步骤执行此操作。

添加环境文件

将名为 environment.txt 的纯文本文件添加到 Xamarin.Android 项目的根路径。

右击environment.txt并将其构建操作设置为AndroidEnvironment

环境文件是由换行符分隔的一系列 key=value 对。对于日志记录,我们可以设置以下变量:

MONO_LOG_LEVEL

调试 信息 消息 警告 严重 错误

MONO_LOG_MASK

asm dll cfg 全部 类型 gc

例如,我们可以通过错误过滤MONO_LOG_LEVEL来忽略大多数消息:

environment.txt

MONO_LOG_LEVEL=error

背景阅读:

Android Environment Mono - Logging Runtime Events

【讨论】:

非常感谢,马特!回答我的问题,然后一些:) Pleasure :) 仅供参考,该文件还用于控制 Mono 使用哪种垃圾收集算法。如果您的应用在 GC 崩溃并因此变得无响应,您可以使用 MONO_GC_PARAMS=bridge-implementation=## 来试验不同的算法。 我做了所有这些,但不确定它是否改变了什么。我怎么知道这些参数被正确编译了? @matthewrobbinsdev 我一定是做错了什么。我已经创建了文件并将构建操作设置为 AndroidEnvironment 但我不认为它正在接受它。我可以在文件中出现乱码,并且没有构建错误。我想我可以通过电子邮件发送 Xamarin 支持。 这么多年的痛苦,终于有了谷歌搜索的聪明主意:))谢谢马特!【参考方案2】:

我所做的如下。它仍然不完美,因为窗口包含 10k 日志,包括隐藏的日志,所以我的最终消失了。此外,我似乎无法从窗口复制。

1) 为我的所有日​​志使用“AAA”标签。 2) 在工具>Android>设备日志中查看输出 3) 按标签按字母顺序排序。 4)我发现我下面的输出仍然让人分心。我可以单击标签的“过滤器”并取消选中除我之外的所有内容。烦人的是,我必须定期重复此步骤,因为默认情况下不会过滤新标签。

【讨论】:

如何添加“标签”?

以上是关于mono unity Xamarin 这三者之间是啥关系的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D学习:简单梳理下Unity跨平台的机制原理

Unity+Lua游戏开发的性能检测!

Xamarin 和mono的区别,两者是不是一样的

Xamarin vs. Mono vs. Monodevelop [关闭]

在 Unity 5 中使用 .NET 4.5 代码

MAC下 MONO xamarin 怎么不能用 MSBuild