如何在我的跨平台项目中使用mono

时间:2013-01-21 06:11:02

标签: android ios windows-phone-7 mono cross-platform

我一直在寻找我的企业应用程序的解决方案,至少需要支持3个平台,包括iOS,Android和Window Phone。经过一整天的搜索,我终于开始关注2个有前景的跨平台解决方案,一个是单核交叉,另一个是手机。 monocross似乎完全使用c#和.net,是否可以访问本机库和语言?我在某处读到它直接编译成可以在目标平台上执行的二进制文件。 关于phonegap,它使用每个平台上的webview来提供向最终用户呈现用户界面的功能。由于它是通过解释语言和高级api实现的,因此性能可能无法满足我们的需求。 最后,我们(我的团队)决定尝试单声道,架构如下图所示:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ [monotouch,monodroid,silverlight]或[native gui calls]或[html5 / js / css]

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ [mono / c#]

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ [云]

我想使用mono / c#来编写一些通用的业务逻辑和数据结构,当谈到一些常见的平台功能时,比如存储服务,通知,我想将它们包装在每个平台上并公开用于c#(业务逻辑层)的统一api。至于表示层,我们决定从上面列出的3种可选​​解决方案中进行选择。

为了实现这一点,首先我必须弄清楚是否可以调用本机框架。 所以,我的问题是:
1,单声道工作,我的意思是,编译成二进制文件的c#代码可以直接在iOS,Android和Windows Phone上执行吗?
2,是否有机制进行本机调用?就像在cocos2d-x中一样,我可以通过JNI调用java方法,而在iOS中,c ++可以直接调用oc。我可以用c#用单声道调用cocoa touch东西吗? 3,是否可以在一个项目中管理所有这些东西,以及如何构建它们? 4,有没有更好的解决方案?

感谢您的耐心等待任何建议!

2 个答案:

答案 0 :(得分:1)

我想知道为什么Xamarin没有登陆搜索结果的第一页,

http://xamarin.com/features

但这就是Mono为想要定位移动平台的C#开发人员创造的东西。适用于Android的MonoTouch和Mono每个都具有使用Microsoft .NET的通用库库,以及特定于平台的绑定。

您的非UI代码应该能够在便携式库中使用并在它们之间共享。微软的可移植库是Windows特有的,现在我不确定Mono家伙可以接受多少,但即使PCL失败,你也可以根据源文件的同一副本创建多个平台特定的项目(我在#SNMP中做了。剩下的任务是为Windows Phone,iOS和Android开发特定于平台的UI。

有大量文章展示了这些功能,

http://docs.xamarin.com/

以及许多成功的应用

http://xamarin.com/apps

学习产品的最佳方法是尝试(在Xamarin的情况下免费试用)。这也适用于MonoCross(这是一个基于Mono构建的框架)。

我对PhoneGap并不熟悉,所以你需要有人的建议。

答案 1 :(得分:0)

免责声明:这不是一个完整的答案 - 但我希望它能回答至少部分问题


18个月前,当我使用Mono产品开始跨平台开发时,我遇到了类似的问题。

我之前构建的方法叫做MvvmCross--很久以前它已经从MonoCross中分离出来了 - 现在它没有共享任何代码(但也许我们有一天会再次合作!)。

该方法使用PCL来共享代码。这并非完全无痛,但在您完成一些设置步骤后很容易 - http://slodge.blogspot.co.uk/2012/12/cross-platform-winrt-monodroid.html

您可以在此视频中详细了解此方法:http://slodge.blogspot.co.uk/2012/12/mvvmcross-video-presentation-xaminar.html