2017-10-18 134 views
9

前段时间,我发布了我的应用的测试版,并将其与APK扩展文件关联起来。然后,我想更新我的APK,而不触及文件,并做了以下操作:在测试版和发布版本中处理APK扩展文件

我的应用程序的版本代码是7,提供程序也有此值。提供者看起来像我的清单如下:

<provider 
    android:name=".expansion.MyApezProvider" 
    android:authorities="com.bla.blabla" 
    android:exported="false" 
    android:multiprocess="true" 
> 
    <meta-data 
     android:name="mainVersion" 
     android:value="7"> 
    </meta-data> 
</provider> 

这里是我的下载活动的一个片段:

private static final XAPKFile[] xAPKS = {new XAPKFile(true, // true signifies a main file 
     7, // the version of the APK that the file was uploaded 
     383989643L // the length of the file in bytes 
)}; 

我只增加清单中的版本代码值7〜8。因为我不想触摸扩展文件。因此,提供商和下载程序活动中的值仍然为7.

我已经上传了新的APK文件,但没有再次选择上传的APK扩展文件。但是这不起作用。用户更新到新版本后,应用程序中的视频文件不再可用。

因此,我再次上传了APK文件,然后重新上传APK扩展文件,并且工作正常。但这很奇怪,因为用户必须为每一次更新下载扩展。

我的问题是:当我将新apk上传到Google Play控制台时,是否必须始终选择存储的apk扩展文件或重新上传它? APK扩展文件的行为在beta和relased版本中有所不同吗?

在以下帖子Updating an APK in Google Play without changing the expansion file它说,这种行为只发生在草稿模式,但我的应用程序不是草稿模式。它是已发布作为测试版。

我会非常感谢您的帮助。

回答

2

您必须上传两个文件,因为这是正常的方式。

每次使用Google Play控制台上传APK时,都可以选择将一个或两个扩展文件添加到APK中。每个文件可以达到2GB,并且可以是您选择的任何格式,但我们建议您在下载过程中使用压缩文件来节省带宽。从概念上讲,每个扩展文件扮演不同的角色:

主扩展文件是您的应用程序所需的其他资源的主扩展文件。 补丁扩展文件是可选的,用于主扩展文件的小型更新。 虽然您可以以任何方式使用这两个扩展文件,但我们建议主扩展文件提供主资源,并且应该很少更新;补丁扩展文件应该更小,并作为“修补程序载体”,随每个主要版本或必要时更新。

但是,即使您的应用程序更新只需要一个新的补丁扩展文件,您仍然必须在清单中上载带有更新的versionCode的新APK。 (Play控制台不允许您将扩展文件上传到现有的APK。)

注意:补丁扩展文件在语义上与主扩展文件相同 - 您可以使用任何您想要的方式使用每个文件。系统不使用修补程序扩展文件为您的应用程序修补。您必须自己修补或者能够区分这两个文件。

您可以在这里找到更多详细信息https://developer.android.com/google/play/expansion-files.html

+0

谢谢你的回答。我正在理解主要和补丁扩展文件的conecpt,我只需要主文件。我的主扩展文件永远不会改变,问题是:如果我只更新apk,我是否每次都必须使用新版本号上传它?所以我将不得不在我的清单和下载器活动中增加提供者的值以匹配版本代码。因此用户必须下载每个更新的大文件。我不认为这是正确的方法。 –