用于Android开发的Monotouch / Mono跨平台如何?

我是一个想要制作我的第一个移动应用程序的python程序员 . 我想为iOS和Android制作一款外观和感觉都是原生的应用程序 . 我想我会从一个简单的iPhone应用程序开始,只是为了看看它是如何工作的 . 单声道似乎是明显的解决方案 . 但是,我惊讶地发现,我发现的几乎所有Monotouch代码示例以及Stackoverflow上的答案都严重依赖于IOS框架,实质上使得代码根本不是跨平台的 . 例如,我正在研究使用计时器 . 我读过的所有例子都使用NSTimer . 当然这可以用C#本身来做,以便那部分是跨平台的?但是,为什么所有这些人都使用NSTimer?

所以,我的问题是,跨平台是如何为IOS / Android进行Mono开发的?是否仍然值得考虑小型应用程序,或仅适用于具有大量业务逻辑的大型应用程序?

回答(2)

3 years ago

你的问题太笼统了 . 我会回答两个场景:

Specific examples
如果您正在寻找如何创建计时器,创建数组,遍历列表,那么为什么不只是查找常规.NET示例并将其编译为可以在两个项目中的单个类库 .

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

.NET基类库中有计时器,数组和字符串 . 正如您所看到的,在Cocoa库中有一些MonoTouch包装 . 例如,您可以在.NET中定期运行铣削字符串,但在单触针中,您还可以选择NSString . 我想回答你的问题,人们有时可能会使用iOS特定类型的原因,要么是因为他们没有尝试跨平台制作代码而且这是一个偏好问题,或者他们必须做一些特别需要的东西这种类型的使用并非每个人都适用 .

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

EDIT
我添加了链接 .

3 years ago

我认为关键点在于,为了使用Mono而不使用平台特定类型等NSSTring,您需要一个特定于平台的包装器(抽象层),它允许您编写仅使用Mono类型的代码 .

即你问的是使用Mono但你真正需要的是MonoTouch和MonoDroid(@valdetero引用的框架,依赖于那些包装它们的包装器) .