正确的方法来实现使用Xamarin.Forms构建的Android应用程序的自动更新

问题描述 投票:0回答:1

我最近开始使用跨平台的Xamarin.Forms工具包构建我的移动应用程序,我很难尝试为它实现某种自动更新机制。

更具体地说,我的应用程序有一些XML文件以及存储在assets文件夹中的图像,所有这些都打包在apk文件中,发布到Google Play。

我想要的是编辑和更新这些xml和资产,而无需在Play商店中发布新版本的apk。但我也知道,一旦打包到apk,除非用户通过商店手动下载和更新应用程序,否则无法更改。

所以我现在像这样走动:

  1. 我将所有想要在我的服务器上更新的XML文件或图像等内容放入API,以指定其版本以及提供可下载的项目。
  2. 在我的应用程序中,我有一个代表当前资产版本的值。当应用程序启动时,它将有一个后台进程调用服务器的API并检查此版本值是否与服务器上的版本值匹配。
  3. 然后,如果版本不匹配,它将自动从服务器下载内容并存储在用户设备的内部存储中。
  4. 然后有一个方法make app使用来自内部存储的新资产或图像来替换其当前存储。

问题是我的这种走动太笨拙而且难以实施。任何想法可以帮助我更清洁或更合适的解决方案?谢谢,如果我误解了更新移动应用程序的任何基本逻辑,我感到很抱歉,因为我对移动编程有点新意。

c# android xamarin xamarin.forms auto-update
1个回答
1
投票

您的逻辑是正确的......如果您在APK之外“版本化”资产,则需要跟踪本地资产的“版本”与服务器|基于远程的资产,并在远程资产时下载/缓存新资产更新......

您可以使用APK扩展(* .obb)文件捆绑与.apk捆绑包分开的“资产”。但是,只要你需要更改.obb(即使它是基于补丁的.obb),应用程序版本也必须更改,因此你必须将带有新版本的.apk上传到商店,即使其中没​​有其他内容已经改变。

re:APK Expansion Files

新的.aab格式(.apk替换)允许您修改应用程序的各个组件,因此用户可以获得已安装内容与新更改之间差异的真实增量,从而导致更新大小非常小。再次像.obb一样,应用程序的版本需要更改,因此必须上传新的.aab

注意:Xamarin目前不支持直接构建.aab包(如Android Studio一样),但它们可以从MSBuild工件中“手工制作”。

re:Android App Bundles

就像你这样的场景而言,我只使用一个版本化的.zip,其中包含可以在应用程序级别版本之间动态更改的所有文件,因此只跟踪该单个文件(下载时解压缩到本地应用程序缓存)。服务器上的版本文件(或文件哈希)包含zip文件的最新版本和URL,zip文件本身包含匹配的版本文件。没有缓存文件,下载并解压缩文件。在应用程序更新检查时,将缓存中的版本文件与服务器版本进行比较,并根据需要下载/解压缩。 (注意:我甚至不使用单独的“语义版本”,我只使用zip文件的SH1哈希)。

© www.soinside.com 2019 - 2024. All rights reserved.