各类跨平台开发对比

其实之前看到Google Inbox中Android先行,70%的代码使用j2objc的时候,就有对比过这块,昨天微软将Xamarin Studio 更名为Visual Studio for Mac让我重新提起笔,整理之前这块的思路。

Xamarin的现状

  • 已有140w的开发者
  • 基于Mono: 开源的,基于.NET Framework(2001年第一次发布)的跨平台平台
  • Xamarin在被微软收购之前是闭源商业的产品
  • 使用C#为所有移动平台创建应用
  • natively compiled: 高性能的app
  • 在.Net层使用native libraries来跨平台开发

Xamarin天然的缺陷

  • Xamarin Studio免费,但Visual Studio Xamarin专业版付费
  • 一些Android/iOS的新的sdk与feature,由于需要等待Xamarin的支持,所以很难在短时间内就使用上
  • 无法使用Android与iOS的开源库,只能使用平台提供的以及.Net的一些开源库
  • 脱离官方支持如Google对Android Studio等的支持、iOS对Xcode等的支持
  • 脱离大的社区(如iOS、Android)进入一个小众社区,问题解决等更加困难

Xamarin的一些优势

  • 很多大公司在用: Trello, Slack、GitHub
  • 只用C#语言,基于.Net framework创建所有平台的app
  • 由于跨平台各类逻辑复用,基于prebuid app快速开启新App的开发: prebuilt
  • 支持Mac(Xamarin IDE)与Windows(Visual Studio)开发
  • 允许不同平台定制自己的UI与交互(基于Xamarin.Forms统一开发,也可以基于Xamarin.iOS与Xamarin.Android分开开发)

各类方案对比

技术栈:

  • Xamarin: 只需要学习C#,一份代码,一个架构.Net framework + native libraries
  • Native: 不同的平台不同的栈
  • Hybrid: 只需要学习一种平台开发(JS、H5,CSS)
  • J2Obj: 以Android为主,iOS为辅

代码复用:

  • Xamarin: 除了UI部分,基于Xamarin.Forms最多96%的的代码复用
  • Native: 无代码复用
  • Hybrid: 100%代码复用
  • J2Obj: 除了UI部分,大部分都可以通过Android先行然后转换到iOS使用

UI/UX

  • Xamarin: 支持不同平台不同UI/UX(基于Xamarin.Android与Xamarin.iOS)
  • Native/J2Obj: 不同平台不同
  • Hybrid: 都用相同的

性能

  • Xamarin: 好,接近Native,不断在提高让其尽量接近native app的性能, 提供了完整的测试与追踪工具用于应用性能测试: Xamarin Test Cloud 与 Xamarin Test Recorder工具用来运行UI自动测速与性能问题挖掘
  • Native/J2Obj: 非常好,平台支持
  • Hybrid: 差,基于网页的

硬件支持

  • Xamarin: 使用平台特殊的API并且支持连接native library
  • Native/J2Obj: Native工具完全支持系统的各类功能
  • Hybrid: 可以通过一些第三方的API与插件来支持调用一些硬件但是稳定性无法保证

发布周期

  • Xamarin: 开发周期变短但是市场发布依然需要新包
  • Native/J2Obj: 市场发布需要新包
  • Hybrid: 随时可以部署新特性

社区与支持

  • Xamarin/Hybrid: 小众社区、非官方支持、新SDK更新延后
  • Native: 大众社区、官方支持
  • J2Obj: Android同Native,但是iOS有些社区开源库需要自行转换适配

Jacksgong wechat
欢迎关注Jacks Blog公众号,第一时间接收原创技术沉淀干货。