我如何告诉我的老板与Xamarin合作不会让它变得更快

Chr*_*sco 31 android xamarin.ios ios xamarin

我是我工作中唯一的移动开发人员.在我被录用之前,我现在的老板正在考虑使用Xamarin,因为他们的营销说的是共享代码原生代码.自从我构建大型信息系统以来,我认为自己是一名高级Android开发人员.现在我正在处理我可以在一周内完成的简单应用程序,但是Xamarin因为太多错误而让我很头疼,并且可重复使用的代码大约10%可以轻松复制/粘贴iOS,尽管你事实上可以共享10%的代码,有时您仍然需要使用编译指令#if / #endif.

我的意思是,没有任何真正的优势,对我来说,因为我已经知道这两个JavaObjective-C语言.我已经在iOS和Android SDK上拥有丰富的知识SQLite和数据存储知识,Core Data因此学习Xamarin会使速度变慢.

我已经尝试过谈论他们不会选择Xamarin因为它只能分享一些代码,但他们似乎也不理解.

我需要一些好的论据来说服他们不要买它,所以我可以以更高效,更快的方式完成我的工作.先感谢您.

Pan*_*cho 45

Lee Whitney博客的一些好点:为什么我不推荐Xamarin用于移动开发:

应用开销

基于Xamarin的应用程序具有内置开销,使其平均更大.这会影响设备上使用的下载时间和存储空间.最小额外大小通常为几兆字节,并且随着代码使用更多API,可以按比例增长.这是因为.NET程序集中的代码在引用程序集时静态链接(作为本机代码)到应用程序中.在Android上,由于操作系统特定的原因,还有一个额外的启动延迟.对于Xamarin而言,这种开销曾经大大增加,公司在减少开销方面取得了很大进展.但是,对应用用户的影响仍然可以衡量.

跨iOS和Android的UI代码有限共享

用户界面开发在iOS和Android之间无法移植.
这意味着必须为每个平台使用不同的API,事件逻辑,小部件和设计器,并对其进行不同的编码.对于常见的低级别操作,有一些例外.

Xamarin认为,试图在非常不同的平台上抽象UI API会产生不必要的复杂性,或者导致LCD(最小公分母)设计的用户体验不佳.他们在这里有一点意见.Titanium试图部分地做到这一点,结果使许多开发人员对不一致或不可预测的结果感到不满.HTML5应用程序在不强制LCD设计的情况下更成功地实现了UI抽象,但它们没有Xamarin的原生性能.

UI问题可能是开发移动应用程序的一些最耗时的方面.尽管有充分的理由,但重要的是,对于许多移动UI问题,Xamarin不会为开发人员或设计人员节省时间.

Xamarin以外的有限代码共享

Xamarin不允许在其自身环境之外创建可重用的组件或模块.例如,用Xamarin编写的代码不能用于本机或HTML5应用程序.这意味着团队使用Xamarin开发的任何代码都无法与使用iOS和Android的任何其他工具的团队共享或重用.这有多重要取决于具体情况,但发展问题是我们无法预测所有情况.因此,离开大门是一个令人不安的限制.

生态系统和社区

这不是Xamarin的错.哪家公司拥有与Apple,Google或HTML5相匹配的移动生态系统?但是,这很重要.当开发人员在网上搜索某个问题时发现结果的可能性是其10倍时,会直接影响工作效率.可用支持,服务和第三方组件以及相关工具的生态系统现在并将继续显着小于基于本机或HTML5的应用程序.

第三条学习曲线

一些概念和技术需要特定于Xamarin环境的特殊知识.这有效地为编程语言和本机API之外的开发人员增加了第三条学习曲线.例如,开发人员必须了解iOS引用计数以避免Xamarin的垃圾收集问题(这是MonoTouch GC中的错误吗?).另一个例子是数据结构和泛型以不同的方式工作(http://docs.xamarin.com/guides/ios/advanced_topics/limitations).这些是在您实际采用新平台之前很难看到的问题类型,所以它们值得特别考虑.

更多运动部件

Xamarin介绍了它自己的一组错误,这些错误会影响产品质量和开发人员的工作效率.问题不在于Xamarin产品不好,而是在应用工具链中添加任何大型或复杂系统都会带来本机应用中不存在的问题和错误.

可以使用Xamarin的错误跟踪器(https://bugzilla.xamarin.com)查看这些错误的历史记录.

是的,所有软件都有错误.关键是当你衡量添加新工具的优势时; 必须考虑新问题的缺点.

摘要

最后,我们必须尝试量化Xamarin等开发抽象优于其他抽象或本机开发的优势.C#比Objective-C好吗?是的,到目前为止,我认为,但这只是一个因素.当你添加所有内容时,它会提升Xamarin的规模,转而采用其他移动开发方法.截至2013年(这些东西可以快速改变)我倾向于选择本机代码解决方案或HTML5/Cordova解决方案.我喜欢两种原因,并试图在另一篇文章中解释一些决策因素.

  • 这个答案已经过时了.所有这些都由Xamarin纠正.现在它是Xamarin.Forms中90%的代码共享.微软的大力支持.. (12认同)
  • 您应该复制/粘贴您的答案[在同一问题上,但在正确的网站上](http://workplace.stackexchange.com/questions/23945/how-do-i-tell-my-boss-working-with-xamarin - 会不会让它更快);) (2认同)
  • 提示:引用其他来源时,应使用正确的Markdown blockquote格式.虽然你在底部提到了你的来源,但直到那时你才引用其他人的网页并不明显.复制/粘贴到Markdown编辑器后,选择您粘贴的内容并使用"blockquote"按钮 - 它看起来像一个卷曲的双引号字符.这将插入正确的降价(大于标志)以影响blockquote. (2认同)
  • 您仍然必须为每个平台编写单独的代码,因为每个操作系统都有不同的API.您只能共享数据模型,http请求等.在访问本机组件时,您仍然拥有适用于Android,iOS和Windows的不同代码库. (2认同)