Google Playでは50MBを越えるAPKを置けない件対応手段

 Android 版 AIRNovel のお話です。

 けっこう技術的な話で、ActionScript 3.0 まわりに詳しい人向けの話です。
 ご注意下さい。


★動機
Expansion Filesについて(1) - obb作成編 - キノコの自省録

 Google Playでは50MBを越えるAPKをアップロードできません
 ただし、APKに付随する拡張ファイル(Expansion Files)を、本体のAPKとは別の拡張ファイルを2種類各2GB=4GBまでアップロードすることができます
 どうしても50MBに収まりきらないときは、この方法を取ることを検討します。
 もし、何らかの形で50MBに収まるなら、頑張って収めた方がいいです。
結構面倒くさいです。


★解決手段
 ラマダン・ソフトのアブドゥッラさんから、対応手段としてアイディアを頂きましたので情報共有していきたいと思います。
 ※私自身は動作未確認です。

1.こちらの AIRNovel.as を使用する。
(変更点は以下のイメージです)



1-a.(以下の変更も必要かも)
 1.プロジェクトフォルダの build.xml をコピーなどでバックアップし、
 2.UTF-8が開けるテキストエディタで開き、
 3.29行目付近の
<arg line="-define+=AN_CFG::ERR_MAIL,${ErrMail}”/>
 の下辺りにでも
<arg line="-define+=AN_CFG::ANDROID,${ErrMail}"/>
 を追加。(ERR_MAIL → ANDROID)

2.次のANE(というライブラリの一種)をダウンロードして、使います。
 APK Expansion Files for Air
 ドネーションウェアっぽいです。

3.setSearchPathの中に、次の変更を。

var dir:File = null;
dir = (xl_path[i].substr(0, 3) == "app")
? new File(xl_path[i])
: fWkPath.resolvePath(xl_path[i]);

if (! dir.exists && osName == "AND") dir = File.desktopDirectory.resolvePath(MainThread.extensionFilesDir+xl_path[i]);
if (! dir.exists) throw("[xmlCfg.search.path] 存在しないパス【"+ dir.url +"】です");

if (! dir.isDirectory) throw("[xmlCfg.search.path] パス【"+ dir.url +"】はディレクトリではありません");


 以下の制限があるようです。 
Expansion Filesについて(1) - obb作成編 - キノコの自省録

obb形式では、ルートディレクトリに512個以上のファイルを配置することはできません。
これは、obbがFAT16であるためです。
ルートのファイルが512を越えると、例外が発生してobbファイルの作成が止まります。
サブディレクトリなら65535個まで置けるので、
ファイル数が多い場合は、サブディレクトリを作成して、そこに配置しましょう。
当然、アプリケーション側にとっても参照するディレクトリが変更になることに注意してください。


Expansion Filesについて(2) - obb利用編 - キノコの自省録
Expansion Filesについて(3) - obbダウンロード編 - キノコの自省録
 ……と云うことは、

4.AIRNovel 側で(obbファイルの時だけでも)階層ディレクトリ内のファイルをサポートするような処理を ActionScript で書く

 必要があると云うことですね……。
 やっぱり apk 一つが一番手軽ですね。
スポンサーサイト
プロフィール

ふぁみべぇ

Author:ふぁみべぇ
 →@famibee
 →メアド(四角を@に)

カテゴリ
リンク
検索フォーム
最新記事
月別アーカイブ