めーぷるのおもちゃばこ

- アイドルになりたいエンジニア女子の制作日記 -

【Unity】Androidのビルドデータを分割する

はじめに

AndroidのアプリをGoogle Play Storeに上げる時、100MBの制限があります。
それ以上のサイズになる場合、APKとOBBという二つのデータに分けることで解決できます。
そのやりかたを書いておきます。
  


   

Unityでビルド時にデータを分ける方法

Player Settingsの Publishing Settingsの中にあるSplit Application Binaryにチェックを入れるだけでいけます。

f:id:maplesyrup-cs6:20200611145844p:plain
Split Application Binaryにチェック
  
   
これで書き出すとデータが.apkと.obbの二つあるのが確認できます。
OBBの方は、(書き出し名).main.obbにとなっています。
f:id:maplesyrup-cs6:20200611150649p:plain
分けられている

   

データの分割について

データの分割のされ方は以下の通りです。Unityドキュメントより抜粋。

APK - 実行ファイル (Java とネイティブ)、プラグイン、スクリプト、最初のシーン (インデックス 0) のデータから構成されます。
   
OBB - 上記以外のすべて。残りのシーンすべて、リソース、ストリーミングアセットを含みます。

APKに最初のシーンを含むので、最初のシーンで100Mを超えるような内容にしてしまうと(たとえば100Mを超える動画を使用するなど)結局100M超えのAPKが出来上がってしまうのでGoogle Play Storeの100M制限に引っかかってしまいます。

   

手動でインストールする

Unityからの場合、Build and Runでこれらのデータを自動的に端末のそれぞれ必要な場所にインストールしてくれます。

が、手動で入れようとした場合少しややこしいです。
APK

$ adb install -r App.apk

でインストールできます。
  
OBBはファイルの名前や配置する場所が決まっていて、以下のように配置する必要があります。

$ adb push App.main.obb /storage/emulated/0/Android/obb/ (Package Name)/main.(Bundle Version Code).(Package Name).obb

ここにある(Package Name)や(Bundle Version Code)はUnityのPlayer SettingsのOther Settingsの中にあるものです。確認して入れましょう。
  
   

パーミッション

AndroidでOBBファイルを読み込むときに、READ_EXTERNAL_STORAGEのパーミッションがないと読み込みができない場合があるみたいです。
UnityではSplit Application Binaryにチェックを入れた時点でその権限を自動で追加してくれるので、あまり気にしなくても良いですが、一応。


GooglePlayStoreにアップロードする

Google Play Storeにアップロードするときは、OBBは拡張ファイルとしてアップロードします。
まずAPKをドラッグアンドドロップでアップロードしたあと、アップしたAPKのところに「+」マークがあります。

f:id:maplesyrup-cs6:20200611131450p:plain
Google Play Storeでのアップロード方法

  
「+マーク」を押すと、拡張ファイルを選択できるウィンドウがでてくるので、そこからOBBを選択します。

f:id:maplesyrup-cs6:20200611132546p:plain
ここからOBBをアップロード

  
アップしたOBBファイルはアップしたAPKの詳細で確認できます。

f:id:maplesyrup-cs6:20200611133600p:plain
OBBファイルの確認


  
ここで注意なのですが、Unityは必ずアプリのビルド番号を用いてOBBファイルを開こうとするみたいです。なので、Google Play Storeで新しいリリースを生成する時に、過去のOBBファイルを選択してしまうとアクセスできなくなります。気をつけましょう。