我最近开始使用跨平台的Xamarin.Forms工具包来构建移动应用程序,但是我很难为它实现某种自动更新机制。
更具体地说,我的应用程序具有一些XML文件以及存储在资产文件夹中的图像,所有图像都打包在apk文件中,并发布到Google Play。
我想要的是编辑和更新这些xml和资产,而不在Play商店中发布新版本的APK 。但我也知道,一旦打包成apk,除非用户通过商店手动下载和更新应用,否则这些内容将无法更改。
因此,我目前采用这样的漫游方式:
问题在于我的这种绕行太笨拙且难以实施。有什么想法可以为我提供更清洁或更合适的解决方案吗?谢谢您,如果我误解了更新移动应用程序的任何基本逻辑,因为我对移动编程有点陌生。
答案 0 :(得分:1)
您的逻辑是正确的...如果您正在APK的外部的“版本”资产,则需要跟踪本地资产与基于服务器的资产的“版本” |基于远程的资产并在远程资产较新时下载/缓存新资产...
您可以使用APK扩展(* .obb)文件将“资产”与.apk捆绑包分开捆绑。但是,每当您需要更改.obb
(即使它是基于补丁的.obb
)时,应用程序版本也必须更改,因此您必须上载具有新版本的.apk
即使商店中的其他任何东西都没有改变。
新的.aab
格式(替换为.apk
)使您可以修改应用程序的各个组件,从而使用户获得安装内容与新更改之间的差异的真实差异。导致更新大小很小。与.obb一样,该应用的版本也需要更改,因此必须上载新的.aab
。
注意:Xamarin当前不支持.aab
捆绑包的直接构建(就像Android Studio一样),但是它们可以通过MSBuild工件“手工制作”。
对于像您这样的情况,我个人只使用单个版本的.zip
,其中包含可以在应用程序级别版本之间进行动态更改的所有文件,因此仅跟踪该单个文件(下载后解压缩到本地应用程序缓存中) )。服务器上的版本文件(或仅文件哈希)包含zip文件的最新版本和URL,而zip文件本身包含匹配的版本文件。没有缓存的文件,下载并解压缩文件。检查应用程序更新后,将缓存中的版本文件与服务器版本进行比较,并在需要时下载/解压缩。 (注意:我什至不使用单独的“语义版本”,而是使用zip文件的SH1哈希)。