繁体   English   中英

如果从 Google Play 商店下载 apk 和 obb,则无法在 android 10 设备上访问 obb 扩展文件

[英]Cannot reach obb expansion file on android 10 device if apk and obb is downloaded from Google Play store

我从很多地方寻找解决方案( 如果在 Android 10+ 中禁用旧的外部存储访问则以编程方式测试https://developer.android.com/google/play/expansion-files.html#Downloading等),但是不知道错误的确切原因。 如果仅在 android 10 设备的情况下从 Google Play 下载应用程序,则会出现以下错误:

Caused by: java.lang.IllegalArgumentException: Couldn't get OBB info for /storage/emulated/0/Android/obb/packageName/main.package_version.packageName.obb

该程序可以找到 obb 文件(即使在 android 10 设备上)

File mainFile = new File(Environment.getExternalStorageDirectory() + "/Android/obb/" + packageName + "/" + "main." + packageVersion + "." + packageName + ".obb")
mainFile.getAbsolutpath()

也获取文件路径。 但是,当存储管理器用于从 Google Play 商店下载的应用程序时

sm.mountObb(mainFile.getAbsolutePath(), null, mainObbStateChangeListener );

它无法访问 obb 扩展文件并以上述错误终止应用程序。

应用程序可从 Google Play 下载,但仅适用于 android 9 或以下设备。 如果我创建 apk 并将其安装在 android 10 设备上,该应用程序可以毫无问题地访问 obb 文件。 当从 Google Play 商店下载应用程序时,我想念什么才能在 android 10 设备上运行应用程序? 帮助将不胜感激。

更新:

我在 Android 10 设备上找到了错误的原因,但我仍然不知道答案:

如果 apk 版本代码(app gradle 中的版本代码)与 obb 文件名中的版本代码匹配(如果我理解的话应该是这样的( https://developer.android.com/google/play/expansion-files) ),然后在 obbbexpansionmanager 类中,该行

sm.mountObb(mainFile.getAbsolutePath(), null, mainObbStateChangeListener ); 

抛出这个错误:

Caused by: java.lang.IllegalArgumentException: Couldn't get OBB info for /storage/emulated/0/Android/obb/packageName/main.package_version.packageName.obb. 

如果我将下载的应用程序的 obb 文件更改为不同的版本代码(在 apk 的版本代码为 9 时使用版本代码 8、1、10 进行测试),则应用程序启动并且不会出现上述错误。 但是,除了 apk 的版本代码之外,我不能在 obb 文件的名称中使用不同的版本代码,以便能够从 Google Play 商店下载带有 obb 的 apk。 此外,除非匹配版本代码,否则无法从 obb 文件访问媒体文件。 如果设备在 Android 10 下,则应用程序在 apk 和 obb 扩展文件中使用相同的版本代码。

可以使用替代方法代替Environment.getExternalStorageDirectory() Context.getObbDir()它将返回用于运行应用程序的 OBB 目录的完整路径,即: /storage/emulated/0/Android/obb/packageName .

这可以替换代码部分Environment.getExternalStorageDirectory() + "/Android/obb/" + packageName 可以在此处找到此方法的更多详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM