【发布时间】:2016-11-10 06:38:11
【问题描述】:
是否存在技术限制,为什么 Xamarin 不支持在不发布到应用商店的情况下更新应用程序? React Native 或 Cordova 等 JavaScript 跨平台移动开发框架可以做到这一点。
【问题讨论】:
-
Xamarin 生成“本机”应用程序,与基于 Swift/Obj 的 iOS 应用程序或基于 Java 的 Android 应用程序相同。在混合应用中,您可以选择更新应用的 content,它们是 html/javascript/media/... 资源。如果您编写一个混合应用程序并提供一种机制来下载和缓存嵌入式浏览器的更新资源,您可以对任何“本机”应用程序(包括 Xamarin)执行完全相同的操作
-
React Native 也产生一个原生应用,它不是混合的。它只是碰巧使用 JS 而不是 C#。
-
React Native是一个原生 shell,它使用JavaScriptCore来执行JavaScript。您的程序逻辑在与 JavaScript 实例化的“本机”UI 组件(和框架)通信的 javascript 线程上运行。虽然可以直接比较 Xamarin 的 Mono VM 和 Android 的 Art/Dalvik VM 架构,但最终结果更倾向于混合风格的应用程序,而不是完全原生的应用程序(iOS Swift/ObjC 或 Android C/C++ NDK)。Xamarin.iOS编译为 LLVM 位码,但具有嵌入式 .NET/CIL VM,因此“原生”较少,但比 React Native 更“原生”...... -
Xamarin.Android是一只奇怪的鸟,因为它有两个 VM,一个 .NET/CIL VM 和一个通向 Android Java VM 的全桥。Xamarin.Android生成的最终应用程序是一个 Android NDK(基于 C)应用程序,其中包括 Mono VM 和基于 CIL 的程序集(AOT 或不)。所以它更能与 React Native 相媲美...... React Native 有真正完整的指南来描述它如何使用 JavaScript 是基于实现 60 fps、线程如何工作等等......最终它不是“原生的”,但我也不会称Xamarin.Android最终结果为原生,如果他们将来重新启用 AOT/LLVM,它将是更多原生
标签: xamarin xamarin.ios xamarin.android xamarin.forms