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

我是我工作中唯一的移动开发者。 在我被雇用之前,我现在的老板正在考虑使用Xamarin作为他们的营销说共享代码本地的话。 自从我构build大型信息系统以来,我认为自己是一名高级Android开发人员。 现在我正在开发一个简单的应用程序,我可以在一个星期内完成,但Xamarin让我头疼,因为它太麻烦了,可重用的代码大约有10%,可以很容易地复制/粘贴到iOS ,尽pipe你可以分享这个10%的代码,有时候你仍然需要使用编译指令#if / #endif

我的意思是,对我来说没有任何好处,因为我已经知道JavaObjective-C语言。 我已经在iOS和Android SDK上对SQLite和数据存储与Core Data有广泛的了解,所以学习Xamarin会让它变慢。

我已经试图说服他们不要去找Xamarin,因为它只有一个你可以分享的小代码,但是他们似乎并不理解。

我需要一些很好的论据来说服他们不要买它,所以我可以以更高效更快的速度完成我的工作。 先谢谢你。

Solutions Collecting From Web of "我如何告诉我的老板与Xamarin合作不会更快"

从李惠特博客的一些好点:为什么我不推荐Xamarin移动开发 :

应用程序开销

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

在iOS和Android上共享有限的UI代码

用户界面开发在iOS和Android之间是不可移植的。
这意味着必须针对每个平台使用不同的API,事件逻辑,小部件和devise器。 对于常见的低级操作,有一些例外。

Xamarin会争辩说,试图在非常不同的平台上抽象UI API会导致不必要的复杂性,或者导致LCD(最低公分母)devise的糟糕用户体验。 他们在这里有一个点。 titanium试图部分地这样做,结果使得许多开发人员不满意的不一致或不可预知的结果。 HTML5应用程序在不强制使用LCDdevise的情况下取得了这种UI抽象的成功,但是它们并没有Xamarin的本地性能。

UI问题可能是开发移动应用程序最耗时的一些方面。 尽pipe有一个很好的理由,但重要的是,对于许多移动UI问题,Xamarin不会为开发人员或devise师节省时间。

Xamarin之外的代码共享有限

Xamarin不允许在自己的环境之外创build可重用的组件或模块。 例如,用Xamarin编写的代码不能用于本机或HTML5应用程序。 这意味着由团队使用Xamarin开发的任何代码都不能与使用任何其他iOS和Android工具的团队共享或重复使用。 这个问题有多重要取决于情况,但是发展的问题是我们无法预测我们所有的情况。 因此,走出困境是一个不舒服的局限。

生态系统和社区

这不是真的Xamarin的错。 什么公司的移动生态系统与苹果,谷歌或HTML5相匹配? 但是,这很重要。 当开发者在search网页时发现search结果的可能性高出10倍时,直接影响生产力。 可用的支持,服务和第三方组件以及相关工具的生态系统将会并且将继续显着小于基于本机或基于HTML5的应用程序。

第三个学习曲线

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

更多移动部件

Xamarin引入了它自己的一组影响产品质量和开发人员生产力的错误。 问题不在于Xamarin有一个糟糕的产品,而是在应用程序工具链中添加任何大型或复杂的系统时,都会遇到本机应用程序中不存在的问题和错误。

这些错误的历史logging可以使用Xamarin的bug追踪器( https://bugzilla.xamarin.com )来查看。

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

概要

最后,我们必须尝试和量化像Xamarin这样的开发抽象的优点,而不是其他抽象或本地开发。 C#比Objective-C更好吗? 是的,在我看来,这只是一个因素。 当你把所有东西都加起来的时候,它会把Xamarin的规模提高到其他的移动开发方式。 截至2013年(这个东西可以很快改变),我倾向于select本地代码解决scheme或HTML5 / Cordova解决scheme。 我喜欢两种不同的原因,并试图解释另一篇文章中的一些决定因素。