質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.71%

巨大なサイズのOBBファイルの作り方

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,132

kobaya_c

score 17

とある理由により、4GB未満までのOBBを作成したいと考えています。

Android SDKに含まれているjobb.batを使用する手法をまず試したのですが、少なくともこちらの環境では512MB以上のOBBを作ろうとすると失敗してしまいます。

512MB制限問題を対応しているとされているもの

その上限をクリアできるとされる上記ページのものを使用してみたのですが、これでもどうやら2GB以上の物を作ることはできないようです。

より大容量のOBBを作成できる方法をご存知でしたら、ご紹介いただければ幸いです。
よろしくお願いいたします。



追記1:リンク先のツールを使用してみたところ、
Exception in thread "main" java.lang.IllegalArgumentException: Negative position
とあり、調べたところ、書き込みに使用しているRandomAccessfileクラスが2GBまでしか対応できないということが判明しました。2GB以上のシーク位置表現になるとマイナス値として取り扱ってしまうようです。

なお、公式のツールに関しては、情報元を失念してしまったのですが、処理中に完了したサイズ+これから取り扱うファイルサイズが512MBを超えるとエラーとして弾くというキャップを設けていたと記憶しています。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+1

自分はOBBの正確な仕様を知らないので、間違っていたらごめんなさい・・・

下記ページの説明が正しいならば、4GBのOBBファイルを作成することは原理的に不可能だと思います。

    Expansion Filesについて(1) - obb作成編
obb形式は、マウントやファイル取り出しは高速に行えますが、反面、未圧縮のため、ファイルサイズが大きくなります。また、FAT16で作成される形式のため、小さいファイルを大量に詰め込むと、obbファイルのサイズも実際よりかなり膨れ上がります。

   FAT FS フォーマットの実装についての覚え書き
2 GBytes までの記録が可能な FAT16

# OBBファイルの仕様の原本を確認すれば一番確実なのですが・・・今のところ見つけられていません。


《 追記:2015/11/11 22:20 》
(日本語翻訳プロジェクトはあるようですがバージョンが古いので…)
英語版なので細かい点まで把握出来ていませんが、Googleの正規の開発者向けドキュメントには、2GBのサイズ制限があると明記されていました。

  APK Expansion Files

Rules and Limitations
 I. Each expansion file can be no more than 2GB.
これは、coco_bauerさんが言及されているような、OBBファイルがどのファイルシステム上に存在するかによる制約ではなくて OBBというファイルシステム自体の制約 なので、ちょうど2GBしか容量のないHDDをどんなPCのに搭載してもHDDを自体の容量が変わらないのと同じです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/11/11 20:51

    調査いただきありがとうございます。
    FAT16形式の件ですが、これは内部のファイル管理形式のようで、OBBサイズ自体の上限そのものはcoco_bauer様がご指摘されたように、どちらかと言えばファイルシステムに依存するようです。
    実際に、2GB手前のOBBのマウントまで成功しています。
    ただ、中に入れるファイルは確かにその制約が生きているらしく、512MB以上のものを入れるとマウントに失敗してしまいました。気をつけたいと思います。
    OBBのの情報はこちらも乏しく……

    キャンセル

  • 2015/11/12 15:58 編集

    この回答に対するp-chanさんの追記を見ていますか?
    Google Playでは仕様として2GBまでしか受け付けないという記述ですよ。

    p-chanさんの示している参照先を見ると、
    「OBBというファイルシステム自体の制約」というより、"expansion file"として
    許容するのが2GB以下という記述に見えますので、
    OBBファイルだけでなく、zipファイルでも2GBまでの様ですが、
    Googleとして受け付けないと書いていることには違いません。

    キャンセル

  • 2015/11/12 16:12

    pi-chan様、追記ありがとうございます。
    eripong様、補足ありがとうございます。
    今回は実のところGoogle Playではなく別のAndroid系プラットフォーム向けのアプリケーションが対象で、その際、プラットフォーム側から『OBBは4GB×2まで許容』というお話があり、それを活かしたいということになっているため、現在のような問題となってしまっております。
    プラットフォーム側に詳細の問い合わせは行っているのですが、これも時間がかかってしまいそうで……

    キャンセル

  • 2015/11/12 16:15

    なるほど、そういうことなんですね。

    キャンセル

+1

大きなOOBを作ろうとしているファイルシステムは、FAT32ですか? (FAT32でフォーマットされたファイルシステムの中に作ろうとしていますか?)

FATだと、2GBというファイルサイズの上限があります。
それに引っかかっているのだとすると、FAT32でフォーマットしたファイルシステムを用意して、その中にOOBを作れば、2GBより大きなものもOKではないでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/11/11 19:07

    素早い対応ありがとうございます。
    開発上のファイルシステムはNTFSなので、そのシステム上限には引っかかっていないとは思います。
    作成処理開始数分後にエラーになってしまう形です。ツールに上限が定義されているのかもしれないのですが、Javaはいささか浅学なため、今の自力では対処が困難です。

    キャンセル

0

質問通りの解決ではありませんが、公式からの返答が届きました。 zipファイルをobb拡張子に変えて使え、とのことです。 Google Playの通常のAndroidアプリでもobb拡張子の実態はobbデータでなくても構わないということで、その点は今回の環境でも同条件であるようです。 お騒がせいたしました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/12/04 11:40

    お答えいただいた方から、好みによりpi-chan様をベストアンサーとさせていただきます。
    この情報が正規のobbフォーマットを使用される方の参考になると信じて……!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.71%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る