关于xamarin.ios:我应该为现有的Android应用程序选择Xamarin native或Xamarin.Forms吗?

Should I choose Xamarin native or Xamarin.Forms for existing Android app?

我们有一个Android应用程序,想要为跨平台重新创建它。

Xamarin原生和形式的事实是什么?

本机的优势是,我们可以重用所有XML布局,同时必须在XAML或XIB中重新创建IOS视图?

有什么真正的阻滞剂吗?


我将以乔尔奇的回答为基础,以一些实际的见解进行评论,并参考复制的要点:

这是我过去6个月积累的经验的简历:

xamarin.forms最适合:

  • 需要很少平台特定功能的应用程序
    • 错了。使用DI,您可以使用任何可能需要的设备功能。如果您对此有疑问,请查看Github上的XLabs。
  • 代码共享比自定义用户界面更重要的应用程序
    • 真是胡说八道。您可以编写自己的渲染器来以您想要的方式表示每个平台的控件。我还为自定义控件(如侧抽屉)编写了更困难的渲染器。在Android中,我在2天内完成了iOS,大约2周(Android渲染器只是本机控件的包装器)
  • 开发人员熟悉XAML
    • 嗯,是的,任何一个喜欢方便的用户界面开发的人。请注意,有一个使用XAML的学习曲线(我从WPF开发开始时就知道这一点)。但从我所看到的来看,它和安卓没有什么不同。

xamarin.ios&xamarin.android最适合:

  • 具有需要本机行为的交互的应用程序
    • 虽然本机破解解决方案的速度肯定更快,但如果购买好的控件/了解良好的本机实现并在C中进行镜像,则可以相当快地完成,因为C中的API与本机API非常相似。
  • 使用许多平台特定API的应用程序
    • 不知道为什么Xamarin会反广告形式。到目前为止我没什么问题
  • 自定义用户界面比代码共享
    • 可能是真的,但保持UI功能内联也很困难,您将需要更多的人力。

关于形式的考虑事项:

  • 现在表单似乎稳定了下来,我相信微软会尽最大努力把它变成一个稳定可靠的产品(构建问题在过去有时是一场噩梦,但随着时间的推移会变得更好)。

  • 与WPF XAML相比,Xamarin的XAML开发程度较低,但非常相似。不过,最近的Nuget更新以惊人的速度提供了镜像功能。您对XAML期望和喜爱的绝大多数特性都存在。

  • 如果你不做你的研究,列表的性能就很差(这里)。性能提高了该区域的负载。

  • 如果我必须再做一次选择,我还是会去拿表格。虽然有时候有些事情看起来有缺陷/不好,但你通常可以通过某种方式找到一个干净的解决方案,同时花大部分时间实际开发应用程序。(有时你还会发现一些事情让你皱眉,为什么有些事情没有实现,比如边际资产只有在微软收购Xamarin之后才实现)

  • 如果您最终需要嵌套列表,请确保查看嵌入的本机控件,以获得最大的性能-这对于我正在工作的产品是必不可少的。看到这个


根据Xamarin.Forms主页:

Xamarin.Forms is best for:

1
2
3
Apps that require little platform-specific functionality
Apps where code sharing is more important than custom UI
Developers comfortable with XAML

Xamarin.iOS & Xamarin.Android are best for:

1
2
3
Apps with interactions that require native behavior
Apps that use many platform-specific APIs
Apps where custom UI is more important than code sharing


乔吉斯的回答是正确的,但既然你在这里增加了更多的限制,我的想法就在这里。

我会分析当前的应用程序。可以共享的业务逻辑有多少代码?用户界面是如何定制的,它应该看起来更本土化还是更相同?将来它将如何改变?如果您计划在UI中进行大量更改,并且平台看起来应该类似,那么切换到表单可能更容易。

还要考虑您是否计划为Windows Phone开发?如果是的话,您就可以为第三个平台节省很多时间。

毕竟有一件事我也会记住。在xamarin.forms中开发并不意味着不能开发本机的。它只是一个附加的框架。在最坏的情况下,你仍然可以在本地做任何事情。


我个人使用xamarin.ios&xamarin.android和mvmcross,这样我可以在最大限度地重用代码的同时,完全控制每个平台上的本机UI。


来自Xamarin网站(谁比他们更了解?):

xamarin.forms最适合:数据录入应用程序概念的原型和证明需要很少平台特定功能的应用程序代码共享比自定义用户界面更重要的应用程序

[https://developer.xamarin.com/guides/xamarin-forms/]

在运行时使用xamarin.forms,每个页面及其控件都映射到特定于平台的本机用户界面元素。使用本机xamarin.android和xamarin.ios应用程序可以利用平台特定的硬件加速,并针对本机性能进行编译。这不能用在运行时解释代码的解决方案来实现。

"Xamarin.iOS - The best way to build native iOS apps."

  • Ship native app bundles on the App Store. Our Ahead-of-Time (AOT) compiler compiles Xamarin.iOS apps directly to native ARM assembly
    code, meaning your app is a native platform binary.
  • Access any iOS API. We bring 100% of Apple’s iOS SDK to C#, enhancing Objective-C APIs with stronger types and .NET naming
    conventions so you feel right at home.
  • Call existing Objective-C code from C#. Use your existing Objective-C code, frameworks, and custom controls in your Xamarin app
    using our automatic binding generator.
  • Build WatchKit apps. Use Xamarin Studio or Visual Studio to build new Watch Apps, edit Watch user interfaces in the iOS Designer, and
    debug Watch apps in the iOS Simulator.
  • Stay up-to-date with Apple. We released same-day support for iOS 5, iOS 6, iOS 7, and iOS 8 so your apps can take advantage of the
    latest iOS features as soon as possible.

[https://www.xamarin.com/platform]

"Xamarin.Android - The best way to build native Android apps."

  • Ship native Android packages. Xamarin.Android uses just-in-time compilation for sophisticated runtime optimization of your app’s
    performance, meaning your app is a native Android APK.
  • Access any Android API, including new form factors. We bring 100% of Google’s Android APIs to C#, enhancing Java APIs with async support
    and .NET naming conventions so you feel right at home.
  • Call existing Java code from C#. Use your existing Java code, frameworks, and custom controls in your Xamarin app using our
    automatic binding generator.
  • Build Android Wear apps. With access to 100% API support for Android Wear, create full-featured applications capable of running on
    Android Wear devices. Stay up-to-date with Android. Xamarin stays
    up-to-date with the most current APIs from Google, so you can always
    use the latest features in your apps.

[https://www.xamarin.com/platform]