【问题标题】:Xamarin - Updating The App Without App StoreXamarin - 在没有 App Store 的情况下更新应用程序
【发布时间】: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


【解决方案1】:

从某种意义上说,您是在将苹果与橙子进行比较。说到原生开发,Xamarin 是一个允许您通过 Wrappers 进行原生开发的框架:https://developer.xamarin.com/guides/cross-platform/getting_started/introduction_to_mobile_development/#How_Does_Xamarin_Work

因此,您将执行与推送原生 Android/iOS 应用程序更新相同的工作流程(恭敬地使用 Java/Obj-C 编程)。

而在 React/Cordova 等框架的另一边,它们具有通过从服务器端服务拉取 inject 内容的机制。在执行此操作的第三方 cordova 项目中对此进行了非常清楚的解释:

https://github.com/markmarijnissen/cordova-app-loader

但是,如果您创建了一个没有连接到服务器端服务的 local Cordova 应用程序并且您需要更新它,您很可能必须遵循上传新的 .ipa / @987654326 的相同过程@ 使用新的资产/代码/等,因为它将是一个打包的独立应用程序。

【讨论】:

  • React Native 也产生了一个原生应用程序,它不是混合的。它只是碰巧使用 JS 而不是 C#。
  • 当然。但这直接属于通过应用商店推送更新而不是将内容推送到服务器端服务的同一类别。就像前面提到的 @SushiHangover 一样,从技术上讲,您可以在任何框架中执行此操作,因为 WebView 控件对于它们所使用的内容来说是非常动态的。
  • 但是你可以做我之前提到的 Cordova 插件可以在React 或几乎任何框架中做的同样的事情。归根结底,我们可能会根据业务需求选择一个选项而不是另一个选项。 (即立即向用户获取应用更新或拥有原生体验)
【解决方案2】:

那是因为所有代码都在 js 文件中,可以在 ARM 二进制文件的替代部分下载。 Xamarin 的代码是二进制文件。此外,如果您的代码在 App Store 中,您应该通过商店进行更新。这不是 Xamarin 的限制(因为您也无法使用本机 obj-c 应用程序执行此操作),而更多的是 js 应用程序的“专业人士”。

附带说明,如果您使用企业部署而不是 App Store,您可以随时更新(因为您完全控制部署机制)。

【讨论】:

    猜你喜欢
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    • 2016-02-11
    • 1970-01-01
    相关资源
    最近更新 更多