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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

3回答

4421閲覧

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

kobaya_c

総合スコア30

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2015/11/11 09:20

編集2015/11/12 06:52

とある理由により、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を超えるとエラーとして弾くというキャップを設けていたと記憶しています。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

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

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

[Expansion Filesについて(1) - obb作成編](http://d.hatena.ne.jp/kinokorori/touch/20130710/1373467687)

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 10:56

編集2015/11/11 13:15
pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kobaya_c

2015/11/11 11:51

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

2015/11/12 07:02 編集

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

2015/11/12 07:12

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

2015/11/12 07:15

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

0

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

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

投稿2015/11/11 09:34

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kobaya_c

2015/11/11 10:07

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

0

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

投稿2015/12/04 02:29

kobaya_c

総合スコア30

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kobaya_c

2015/12/04 02:40

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問