Xamarin for Android(Mono for Android)与原生Android开发相比如何?

8

我最近选择学习C#并使用Xamarin开发移动应用,特别是针对Windows Phone和Android的开发。我知道Windows Phone应用程序开发主要是使用C#,而Xamarin可以编译Android的本地代码,但它与Java的本地开发相比如何?我能否使用Xamarin使用Android SDK和扩展中的全部或至少大部分(例如90%以上)功能?


你可以花些时间阅读 Xamarin 的文档。这里是链接- http://xamarin.com/。 - Anukool
1
没有什么能够取代本地代码 :) - Ali Bahraminezhad
1
Xamarin 在其网站上表示:Xamarin.Android 提供了对标准 Android API 的完全访问。 - Frank Rem
编译和运行应用程序需要多长时间?原生和Xamarin之间有什么区别? 缓慢的编译执行周期可能会对开发速度产生重大影响,因为它会在开发人员的思考和专注中造成许多干扰。 使用Xamarin会影响编译时间吗? 影响有多大? - Marchy
3个回答

7
我认为需要考虑的主要问题是您喜欢使用的编程语言 - 在您的情况下是C# - 并使用它。在使用C#构建应用程序时,我唯一关心的事情与Java相比是没有像Java那样多的第三方参考资料可供使用。您会发现自己下载示例文件并对其进行逆向工程以学习如何执行新功能,如果只能找到基于Java的示例,则必须更频繁地搜索Intellisence以查找使用某些内容。但您会发现通常可以使用与Java中相同的方法,但首字母大写。LINQ是我发现在数据操作中的一个重要优势,而在Java中不可用。

祝你好运,詹姆斯


3
我没有对Xamarin C#关于Android Java API的覆盖率进行任何统计或研究,但在我的工作中,当我从Java移植代码到C#时,我所需的一切都在那里。此外,Xamarin表示,对于新的Android SDK版本,他们通常会在24小时内发布相应的C#版本。如@dotToString所说,如果有必要,您可以将Java jar库添加到Xamarin C#项目中并调用它们。

性能是另一个问题 - 我不相信它在Android上运行本地代码。相反,Mono运行时以某种方式解释字节码。我对Java vs. Xamarin C#代码性能进行了一些真实代码比较,请参见以下链接:

Does anyone have benchmarks (code & results) comparing performance of Android apps written in Xamarin C# and Java?

Greg


2
语句“Mono运行时以某种方式解释字节码”的说法不正确。 - Mark Lopez
1
@MarkLopez - 如果您理解得更好,请解释它到底是做什么的。最有可能的情况是将.NET pcode实时编译为本机代码,提前执行 - 是整个应用程序还是特定模块或单个函数一次完成呢? - gregko
1
运行Monodroid应用程序时,实际上有两个独立的运行时在执行,一个是剥离了的.NET CLR版本,另一个是本地的Android Dalvik VM。.NET运行时托管在与您的Monodroid应用程序一起部署的mono运行时(Mono.Android.Platform.ApiLevel_XY.apk)中。正是这个Monodroid运行时使.NET CLR和Dalvik VM保持同步(对象的创建和销毁)。 - samus

1
你可以使用所有的Android功能和Java库互操作。此外,您还可以获得非Windows特定的.NET优势,包括LINQ。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接