事象の水平線

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

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

PageTop
Apk Expansion を使い、zipの中身をcontentProvider経由でgoogleのライブラリの『\sdk\extras\google\market_apk_expansion\zip_file』で使うと、StrictModeで
 A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
java.lang.Throwable: Explicit termination method 'close' not called
at dalvik.system.CloseGuard.open(CloseGuard.java:184)
at java.io.RandomAccessFile.(RandomAccessFile.java:128)
at com.android.vending.expansion.zipfile.ZipResourceFile.addPatchFile(ZipResourceFile.java:275)
at com.android.vending.expansion.zipfile.ZipResourceFile.(ZipResourceFile.java:189)
at com.android.vending.expansion.zipfile.APKExpansionSupport.getResourceZipFile(APKExpansionSupport.java:67)
at com.android.vending.expansion.zipfile.APKExpansionSupport.getAPKExpansionZipFile(APKExpansionSupport.java:77)
at com.android.vending.expansion.zipfile.APEZProvider.initIfNecessary(APEZProvider.java:154)
at com.android.vending.expansion.zipfile.APEZProvider.openAssetFile(APEZProvider.java:175)
at android.content.ContentProvider.openTypedAssetFile(ContentProvider.java:1458)
at android.content.ContentProvider.openTypedAssetFile(ContentProvider.java:1524)
at android.content.ContentProvider$Transport.openTypedAssetFile(ContentProvider.java:355)
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1089)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:929)
at android.content.ContentResolver.openInputStream(ContentResolver.java:654)

とか言われる。

で、結論
zip_fileのZipResourceFileクラスの以下のメソッドで
RandomAccessFileがcloseされていないのが原因
   void addPatchFile(String zipFileName) throws IOException
{
File file = new File(zipFileName);
RandomAccessFile f = new RandomAccessFile(file, "r");
long fileLength = f.length();
~~~~~

ので、
    void addPatchFile(String zipFileName) throws IOException
{
RandomAccessFile f = null;
try{
File file = new File(zipFileName);
f = new RandomAccessFile(file, "r");

~~~~~~~~~~~~~~~~~
}finally{
try{ f.close(); }catch(Exception e){ }
}

}

よくあるように閉じるようにして、終了。

APK Expansion - APKExpansionSupport.getAPKExpansionFiles の bug
といい、なんか罠多すぎるよ。
スポンサーサイト

PageTop

コメント

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

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