事象の水平線

個人的ブックマーク代わりなメモ書きブログ。 地球は丸いよ。↓このへん。

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PageTop
APK Expansion でうまく動かないと思ったら、googleのソースにバグがあったのでメモ。

APK Expansion に関するwhat? how? は以下参照
Expansion Filesについて(1) - obb作成編 - キノコの自省録
Expansion Filesについて(2) - obb利用編 - キノコの自省録
Expansion Filesについて(3) - obbダウンロード編 - キノコの自省録
[android] APK Expansion Files | Drowsy Dog's Diary
[android] APK Expansion Files(2) | Drowsy Dog's Diary
Androidの拡張ファイルから動画を再生する | Kludge factory
APK Expansion Files – チラシの裏

jobb を使って作ったobbはマウントできない環境があるとかないとか。
で、無圧縮zipがいけるぽいのでやってみた。

で、LibraryとしてReferする以下のコードがbugっぽい。

public class APKExpansionSupport {
// The shared path to all app expansion files
private final static String EXP_PATH = "/Android/obb/";

static String[] getAPKExpansionFiles(Context ctx, int mainVersion, int patchVersion) {
String packageName = ctx.getPackageName();
Vector ret = new Vector();
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
// Build the full path to the app's expansion files
File root = Environment.getExternalStorageDirectory();
File expPath = new File(root.toString() + EXP_PATH + packageName);

// Check that expansion file path exists
if (expPath.exists()) {
if ( mainVersion > 0 ) {
String strMainPath = expPath + File.separator + "main." + mainVersion + "." + packageName + ".obb";
File main = new File(strMainPath);
if ( main.isFile() ) {
ret.add(strMainPath);
}
}
if ( patchVersion > 0 ) {
String strPatchPath = expPath + File.separator + "patch." + mainVersion + "." + packageName + ".obb";
File main = new File(strPatchPath);
if ( main.isFile() ) {
ret.add(strPatchPath);
}
}
}
}
String[] retArray = new String[ret.size()];
ret.toArray(retArray);
return retArray;
}
これ、コードをコピペして書き換え忘れちゃいました。じゃないんでしょーか。
patch がわのFile main は名前だけの問題なんで実質関係ないですが。

これによって、バージョン違いのpatchからデータが取り出せず。という状況になりました。
で、赤文字のint mainVersion を patchVersion へ書き換えて動いたわけですが。
ちなみに、mainとpatchと両方ともzipファイルで無いとzipファイルじゃないよとか言って落ちます。

ちなみにちなみに、Accessing expansion patch files bug (and solution)なんてのが2014年に書かれているけど。直ってないんですね。いまだにEclipseでやってるんで、AndroidStudioだとSDK直ってるとかないですよね?
スポンサーサイト

PageTop

コメント

 ※
 ※
管理者にだけ表示を許可する
  ※ 必須項目です

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。