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