12

ここのガイドに従って、Android で拡張パック ファイル (OBB) をテストしようとしています: http://developer.android.com/google/play/expansion-files.html

Nexus 4 でアプリをテストする必要がある段階です。

jobb で .obb ファイルを生成し、デバイスの次の場所に adb-push しました。

/mnt/shell/emulated/0/Android/obb/my.package/main.1.my.package.obb

アプリを実行すると、ファイルが見つかりません。

方法:

Helpers.doesFileExist(context, fileName, xf.mFileSize, false)

私のファイルに対して false を返します。

デバッグしたところ、次のファイルを探していることがわかりました。

/storage/emulated/0/Android/obb/my.package/main.1.my.package.obb

具体的には、これは次によって返されるパスです。

Helpers.generateSaveFileName(c, fileName)

Environment.getExternalStorageDirectory() によって返された /storage/emulated/0 は、adb シェルでデバイスを参照すると存在しません。

しかし、それは実行時にアプリ内で実行され、含まれているものも確認しました。/mnt/shell/emulated/0 で見つけたものとほぼ同じものが含まれており、空の Android/obb ディレクトリが含まれています。

obb ファイルを配置したパス /mnt/shell/emulated/0/Android/obb/my.package/main.1.my.package.obb を見つけた方法:

$ adb shell
$ ls -ld sdcard
lrwxrwxrwx root     root              2013-10-16 17:34 sdcard -> /storage/emulated/legacy
$ ls -ld /storage/emulated/legacy
lrwxrwxrwx root     root              2013-10-16 17:34 legacy -> /mnt/shell/emulated/0

その中には、すでに空の Android/obb ディレクトリが見つかりました。

問題は、実行時にobbファイルを正しい位置に配置するには、obbファイルをどこに配置する必要があるかということです。

私はそこで言われたすべてをしました:

  • 公開鍵を取得するためにマーケットでドラフト アプリケーションを作成しました

  • 20 バイトのランダムな配列を生成しました (salt)

  • 統合された play_licensing/library および play_apk_expansion/download_library

  • 私のサービス/受信者を書きました

  • ドキュメントが言うように、ヘルパーなどを使用してチェックを行いました。

すべてうまくいくと思いますが、まだ Play ストアでリリースすることはできません! ローカルでテストする必要があり、この開発の初期段階ではかなり頻繁に obb ファイルを変更する必要があります。

3D とデバイス カメラを使用しているため、エミュレーターでテストできません。

4

2 に答える 2

21

Android 4.2 以降、マルチ ユーザー サポートが追加されました。

Android が実際のファイルシステムの周りにサンドボックス レイヤーとして機能する各ユーザー用にエミュレートされたディスクをマウントすることをサポートするには、これにより、Android はユーザー間のファイル共有または個人ファイルのいずれかを適切に処理できます。

簡単に言えば:

/storage/emulated

エミュレートされたファイルシステムです。

adb シェルからそのディレクトリに入ると、

/storage/emulated/obb

ディレクトリ。何らかの理由で表示されない場合があります (これが発生した場合の対処方法については、以下を参照してください)。

/Android/obb にはありませんが、アプリ パッケージ /obb ファイルを配置する適切なディレクトリです。

そのディレクトリが表示されない場合は、次を調べてみてください。

/mnt/shell/emulated/obb

そこにファイルを置くことができるはずです。

実行時に正しく取得され、

/storage/emulated/0/Android/obb/my.package/main.1.my.package.obb

道。

Androidのドキュメントでこれを説明する必要があると思います。

(書いているうちに解き方がわかったので自問自答します。)

于 2013-10-18T15:51:28.283 に答える
2

私にとって正しい場所は次のとおりです:mnt/sdcard/Android/obb/nameofyourpackage/

"/mnt/shell" ではありません

于 2015-01-14T14:30:36.437 に答える