2012年4月4日水曜日

APK Expansion Filesのサンプルを動かしてみた


超久々にブログを更新。
APK Expansion FilesというAndroidの機能をちょっと使ってみたので、そのときのメモ。


APK Expansion Filesとは


 APK Expansion Filesとは、50MBまでのAPKファイル以外に、2GBまでのファイルを二つまでGooglePlayからダウンロードしてくる仕組み。

GooglePlayの開発者コンソールで、APKの他に、2つの2GBまでのファイルを登録できる。
2つのファイルは、mainとpatchという種類で登録できる。


ファイル名


 この2つのファイルは、アップロードするファイル名に関係なく以下のファイル名でダウンロードされる。

[main|patch].<expansion-version>.<package-name>.obb

main or patch
 GooglePlayの開発者コンソールで選択したタイプ。

<expansion-version>
 APKのバージョン。マニフェストファイルのandroid:versionCode。

<package-name>
 JAVAスタイルのパッケージ名。


ダウンロードパス


ダウンロードされるパスは以下の場所、

<shared-storage>/Android/obb/<package-name>/

<shared-storage>
 getExternalStorageDirectory()で取得できる、外部ストレージのパス。

<package-name>
 getPackageName()で取得できる、パッケージ名。



obbファイルがダウンロードされるタイミング


GooglePlayからAPKと一緒にダウンロードされる場合と、APKファイルだけがダウンロードされる場合がある。
なので、アプリ起動時にobbファイルが正しくダウンロードされているか調べて、ダウンロードされていなければGooglePlayからダウンロードするコードをアプリに入れなければならない。(これが面倒。なんで必ずダウンロードしてくるようにならないんだろう?)


サンプル


このダウンロード処理のサンプルが用意されている。
SDK の下にインストールされる extras/google/market_apk_expansion/downloader_sample/ 


サウンプルを動かしたときのメモ

  • サンプルは、bbファイルがZIP形式のファイルであることが前提なので、テストするときはZIPファイルを用意すること。
  • サンプルは、なぜかCRCチェックが合わずにValidationエラーになる。
  • ファイルサイズと、バージョン番号を変え忘れないように。
  • 公開鍵の部分を書き換えないと、例外で落ちる。
  • テストは、GooglePlayの開発者コンソールで「保存」をすれば、「公開」しなくてもbbファイルのダウンロード可能。
  • 古いバージョンのbbファイルは、開発者コンソールで削除しない限りダウンロード可能。