前段时间我发布了应用的测试版,并将其与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中,它表示此行为仅在草稿模式下发生,但我的应用未处于草稿模式。它已经发布作为测试版。
我非常感谢你的帮助。
答案 0 :(得分:2)
您必须上传这两个文件,因为这是正常的方式。
每次使用Google Play控制台上传APK时,您都可以选择将一个或两个扩展文件添加到APK。每个文件最大可达2GB,可以是您选择的任何格式,但我们建议您在下载过程中使用压缩文件来节省带宽。从概念上讲,每个扩展文件都扮演着不同的角色:
主扩展文件是应用程序所需的其他资源的主要扩展文件。 修补程序扩展文件是可选的,用于对主扩展文件进行小型更新。 虽然您可以以任何方式使用这两个扩展文件,但我们建议主扩展文件提供主要资产,并且应该很少更新;补丁扩展文件应该更小,并作为“补丁载体”,随每个主要版本或必要时更新。
但是,即使您的应用程序更新仅需要新的修补程序扩展文件,您仍然必须在清单中上载具有更新的versionCode的新APK。 (Play控制台不允许您将扩展文件上传到现有的APK。)
注意:补丁扩展文件在语义上与主扩展文件相同 - 您可以以任何方式使用每个文件。系统不使用修补程序扩展文件来为您的应用程序执行修补。您必须自己进行修补或能够区分这两个文件。
您可以在https://developer.android.com/google/play/expansion-files.html
找到更多详细信息