android - 在测试版和发布版中处理 APK 扩展文件

标签 android google-play apk-expansion-files

前段时间我发布了我的应用程序的测试版并将其与 APK 扩展文件相关联。然后我想在不修改文件的情况下更新我的 APK,并执行了以下操作:

我的应用程序的版本代码是 7,提供者也有这个值。提供商在我的 list 中看起来如下所示:

<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>

这是我的下载器 Activity 的 fragment :

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
)};

我只是将 list 中的版本代码值从 7 增加到 8。因为我不想触及扩展文件。因此,provider 和 Downloader Activity 中的值仍然是 7。

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

所以我再次上传了 APK 文件并重新上传了 APK 扩展文件并且成功了。但这很奇怪,因为用户必须为每次更新下载扩展。

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

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

非常感谢您的帮助。

最佳答案

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

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

主扩展文件是应用程序所需额外资源的主要扩展文件。 补丁扩展文件是可选的,用于对主扩展文件进行小的更新。 虽然您可以随心所欲地使用这两个扩展文件,但我们建议主扩展文件提供主要 Assets ,并且应该很少更新;补丁扩展文件应该更小,并作为“补丁载体”,随着每个主要版本或必要时进行更新。

然而,即使您的应用程序更新只需要一个新的补丁扩展文件,您仍然必须上传一个新的 APK,并在 list 中更新 versionCode。 (Play 管理中心不允许您将扩展文件上传到现有 APK。)

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

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

关于android - 在测试版和发布版中处理 APK 扩展文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46810586/

相关文章:

Android - 如何使用模拟器测试带有扩展文件的应用程序?

android - Xamarin WebViewClient onLoadResource/onPageFinished

java - 从资源中读取 XML 文件

java - AsyncTask 与嵌套类的数据通信

android - 存储可能在 Android 应用程序中更改的链接

android - 访问 obb 扩展文件中的文件

Android Studio 4.1 模拟器崩溃

android - 应用程序无法在内部/Alpha 测试中启动

android - 我怎样才能找到为什么 Android 市场在某些手机上过滤我的应用程序

android - 我们如何在 Android Q 中访问扩展文件?