【问题标题】:How cross-platform is Monotouch/Mono for Android development?用于 Android 开发的 Monotouch/Mono 的跨平台性如何?
【发布时间】:2012-06-22 14:35:51
【问题描述】:

我是一名 Python 程序员,希望制作我的第一个移动应用程序。我想为 iOS 和 Android 制作一个外观和感觉都是原生的应用程序。我想我会从一个简单的 iPhone 应用程序开始,看看一切是如何工作的。 Mono 似乎是显而易见的解决方案。然而,我惊讶地发现,我发现的几乎所有示例 Monotouch 代码,以及 Stackoverflow 上的答案,都严重依赖于 IOS 框架,本质上使得代码根本不是跨平台的。例如,我正在研究使用计时器。我阅读的所有示例都使用 NSTimer。当然这可以在 C# 本身中完成,以便该部分是跨平台的?但是,为什么所有这些人都使用 NSTimer?

那么,我的问题是,iOS/Android 的 Mono 开发如何跨平台?对于小型应用程序是否仍然值得考虑,还是仅适用于具有大量业务逻辑的大型应用程序?

【问题讨论】:

标签: mobile mono xamarin.ios cross-platform xamarin.android


【解决方案1】:

你的问题太笼统了。我会针对两种情况回答:

具体示例
如果您正在寻找如何创建计时器、创建数组、遍历列表,那么为什么不寻找常规的 .NET 示例并将其编译成一个可以在两个项目中使用的类库。

整体共享代码
如果您只是指两个平台之间的一般代码共享,您应该查看已经为您创建的模板和示例的框架。两个这样的模式是http://www.monocross.net/ (MVC) 和mvvmcross (MVVM)。这可以帮助您从一开始就构建项目以支持跨平台开发(iOS、Droid、Wp7、桌面等)。

.NET 基类库中有计时器、数组和字符串。如您所见,MonoTouch 包装的 Cocoa 库中有一些。例如,您可以在 .NET 中定期运行 mill string,但在 monotouch 中,您还可以选择 NSString。我想回答你的问题,人们有时可能会使用 iOS 特定类型的原因,要么是因为他们没有尝试使该代码跨平台而且这是一个偏好问题,要么他们必须做一些特别需要的事情不是每个人都使用那种类型。

Mono 的目的不仅仅是帮助进行跨平台开发。我来自 C#/.NET 背景,所以即使我正在构建一个只有一个屏幕和两个按钮的应用程序,我也会使用 MonoTouch,因为我宁愿使用带有 .NET BCL 的 C# 而不是 Obj-C。但这是我个人的选择,对我来说已经足够了。

编辑
我添加了链接。

【讨论】:

  • 感谢您的回答。让我感到惊讶的不是人们使用 NSTimer(确实是 NSString)之类的东西,而是更多的是它们也经常出现在给其他人的一般推荐中(例如在 monotouchexamples.com 上)。当然,当不需要跨平台时,没有理由不使用这些类,个人偏好是一个完全正当的理由。我只是想知道仅此而已,而不是关于 mono/C# 本身的一些原因。我将检查 MVC 和 MVVM。
【解决方案2】:

我认为关键在于,为了使用 Mono 而不是使用特定于平台的类型等,例如 NSSTring,您需要一个特定于平台的包装器(抽象层),它可以让您编写仅使用 Mono 类型的代码。

即您在询问是否使用 Mono,但您实际需要的是 MonoTouch 和 MonoDroid(@valdetero 引用的框架取决于支持它们的那些包装器)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多