处理测试版中的APK扩展文件和发布的版本

时间:2017-10-18 12:49:18

标签: android google-play apk-expansion-files

前段时间我发布了应用的测试版,并将其与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扩展文件的行为在测试版和版本中是不同的吗?

在以下帖子Updating an APK in Google Play without changing the expansion file中,它表示此行为仅在草稿模式下发生,但我的应用未处于草稿模式。它已经发布作为测试版。

我非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

您可以在https://developer.android.com/google/play/expansion-files.html

找到更多详细信息