使用Xamarin与原生Android开发Android应用程序的比较

47

有人知道如何比较使用Xamarin的C#编程和Android Java本地代码的优缺点吗?

开发Xamarin是否比原生Android更受限制,或者差距并不那么大。 我想听听有经验使用两种技术开发的人的意见。
谢谢!


8
我理解这是一个基于观点的问题,但它非常有意义。很多人都有这个问题。我在许多会议上经常回答这个问题。 - Donn Felker
1个回答

100
更新 20160822:此建议仍然有效。我不断被问及此事。我知道的一家公司选择了Xamarin,结果发现它并没有解决他们的Android问题,因为他们不得不学习两种语言/实现来解决大多数问题。

更新 20150513:到目前为止,这是我从初创公司那里收到的最常见问题之一。他们应该选择哪种方法。我最终会把他们引导到这篇文章。它仍然是可靠的建议。

我已经用过两种方式进行开发。在Xamarin中几乎可以做任何想做的事情。你将遇到的几个困难领域是:

  • 寻找好的、可行的示例代码。边缘情况真的很糟糕。
  • 你会发现你必须通过阅读大量Java代码来学习Java。

另一个问题是,虽然Xamarin正在表现不错并且越来越受欢迎,但社区仍然相当小。当您发布一个Xamarin应用程序时,这会带来问题。如果您需要引进其他人来维护它,他们必须了解.NET、C#和Android。找到这种组合相当困难,我发现所有需要更新我的应用程序的承包商或顾问都非常昂贵。

这是隐含的问题。它会帮助您更快地走出门,但如果您不是更新的人,则维护和新功能开发将花费您的代价。

我为什么知道这个?我用Xamarin编写了两个应用程序,最终想要进行更新。因为我没有时间,所以我不得不联系一个承包商来做到这一点。与已经存在的Android或iOS开发人员相比,这相当昂贵。最后,我把这些应用从Xamarin移植到了本地的Android和iOS。

这些都是次要问题。它是一个非常棒的平台。如果您计划始终在其上工作,请使用它。能够使用C#的强大功能真的很棒。在使用C#多年后,我对Java实际上非常厌恶。这是个人喜好,但事实就是这样。

一切都是权衡取舍。


1
谢谢,完美的答案 :) - CSharper
非常好的答案,谢谢。将其转换为本机Android有多麻烦?我将进行初始开发和重大转变,然后让其他开发人员参与。因此,我倾向于从Xamarin开始,然后进行转换,部分原因是我精通C#,部分原因是MVVMCross,Task Parallel Library等似乎能够减少代码量。在我的情况下,业务逻辑将是复杂的,但渲染到表面,动画和自定义手势也将是复杂的(我将使用最少的本机控件)。 - Chris
1
@Chris 对我来说,转换到Android很容易。免责声明 - 我写了几本关于Android开发的书籍 - 所以对我来说有些不同。这实际上取决于您的应用程序的复杂程度... - Donn Felker
请问您能否提供使用Xamarin创建的应用程序链接? - Gopal Singh Sirvi
@GopalSinghSirvi,它们不再使用Xamarin编写,因此现在发布它们进行比较是不公平的(我已将它们移植到本机iOS和Android)。 - Donn Felker

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