android - 使用 Xamarin for Android 是否多次安装了 Mono 运行时?

标签 android xamarin mono

使用任何 .NET 语言(C#、VB.NET、F# 等)开发的 AFAIK 桌面应用程序 不包括 .NET 运行时,所有应用程序都在同一个 .NET 框架上运行。

对于 Android,这是不正确的。每个应用程序都在 APK 中包含 Mono 框架。

所以,Xamarin 生成的 APK 非常庞大!

如你所见here包含整个 Mono 框架和库的 6K HelloWord 应用程序增长到 15.8M。

即使在链接器之后,6K HelloWord App 仍然保持在 2.9M(是 HelloWorld App 大小的 480 多倍)。

不用说,对于 Xamarin,我们使用的是“runtime-over-runtime”环境,即 Mono-over-Dalvik(如果需要,也可以是 Mono-over-ART)

简化这个,我想知道的是:

由于每个 APK 都包含 Mono 框架,Mono 框架是随每个应用程序一起安装还是只随我们安装的第一个应用程序一起安装?

和...

卸载 Xamarin 应用程序后,Mono 运行时也被卸载了吗?如果没有,我们如何卸载 Mono 运行时?

比你强

最佳答案

我认为您只是误解了与每个 Xamarin Android 应用程序 bundle 在一起的 Mono 运行时的用途。 它不包含在您的应用程序包中,然后安装在系统上。 它包含在包中,因此每次您运行您的应用时,它实际上运行包含在您的包中的 Mono 运行时,然后它运行您的应用

起初它可能看起来有点愚蠢(因为你的每个应用程序都会有自己的 Mono 运行时打包在一起),但这使你能够在手机上拥有不同的应用程序,它们将在不同的 Mono 运行时上运行,有点像就像在 Docker 容器中一样。

唯一的异常(exception)是使用您的手机或 Android 模拟器进行调试。然后,为了加快进程,它会安装特殊的“共享包”,但它们仅用于调试。

关于android - 使用 Xamarin for Android 是否多次安装了 Mono 运行时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37387133/

相关文章:

将服务绑定(bind)到 android.app.Activity 与将其绑定(bind)到 android.app.Application

android - 从 fragment 开始 Activity

Android 内存泄漏 - 无法正确解除分配位图,内存不足错误 - 位图大小超出 VM 预算 [Mono Android]

linux - Linux 中的 F# 单元测试项目与单声道(FAKE,NUnit 3)

c# - Xamarin Forms map Pin 标注

linux - 如何在 Delphi Prism for .net 中创建适用于 Windows 和 Linux(Mono) 的 ini 文件?

android - 协程上下文自定义getter

Android缓存图像的最佳方式

android - 在透明背景上的状态栏上永久显示扩展字符串(天气温度),所有字符大小合适且可见

c# - for循环中的字符串连接导致应用程序停止 - Xamarin