「拡張ファイル」の obb 統合を開発しています。デバイス(4.1)のSDカードに.obbファイルをコピーしてローカルで動作させましたが、4.2デバイスでは動作しなくなりました。
1) 4.1 タブレット: 正常に動作しています。タブレットでadbコマンドを使用して拡張パックファイルをプッシュしたところ、ファイルを見つけて読み取ることができました:
adb push main.1.mypackage.obb /sdcard/Android/obb/mypackage/
shell@android:/sdcard/Android/obb/mypackage/ $ ls -al
-rw-rw-r-- root sdcard_rw 20314171 2013-08-05 18:01 main.1.mypackage.obb
2) 4.2 : 上記と同じ手順で、ファイルが「表示」されず、メイン アクティビティの exists() メソッドと canRead() メソッドの両方が false を返します。
adb push main.1.mypackage.obb /sdcard/Android/obb/mypackage/
shell@android:/sdcard/Android/obb/mypackage/ $ ls -al
-rw-rw-r-- root sdcard_rw 20314171 2013-08-05 18:54 main.1.mypackage.obb
解決策 : そこから、「Android File Transfer」アプリを使用して調査したところ、ツールから obb フォルダーが空であることがわかりました…データをプッシュしたフォルダーとは異なります…
アプリ「Android File Transfer」を使用して .obb をアップロードしたところ、動作しています...しかし、その場合、ファイルがどこに保存されているかわかりません (SD カードではなく、私は推測しますか??)
皆さん、.obb ファイルにアクセスするために 4.2 で何を変更する必要がありますか? 前もって感謝します
追加情報:
a) Environment.getExternalStorageDirectory で "file.exists() + " canRead=" + file.canRead()" を使用して、ファイルの存在を確認する基本的なテストを行いました。
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()
+ "/Android/obb/packagename/main.1.packagename.obb");
b) 手順はスクリプト化されているため、問題が手動のミスに起因するものではありません (すべてをトリプル チェックします)。
編集
c) 要約すると:
4.2 で「adb push」を使用すると、「通常の」データに対して機能します。画像を含むフォルダーを /sdcard/myfolder/ に配置すると、機能しますが、/sdcard/android/ の下には機能しません。
Android ファイル転送では、ルートに「Android/obb」フォルダーが表示され、その場合、.obb ファイルはコードから表示されますが、次のようになります。
- 「Android File Transfer App」から /sdcard にあることを確認できません。気になるのは、「adb shell ls /sdcard/Android/obb」を実行すると、フォルダーが空であることが表示されることです…</li>
- 4.1 と 4.2 で同じスクリプトを使用することはできません。プロダクション プロシージャを検証し、それを開発で使用して、軽量の apk で多くの時間を節約できます (ビルドと展開の時間を節約できます)…</li>
内部で使用されるソリューション
4.1未満の場合
adb push main.1.mypackage.obb /sdcard/Android/obb/mypackage/
>= 4.2 の場合
adb push main.1.mypackage.obb /mnt/shell/emulated/obb/mypackage/