[Tips] Android (というかJava)でZipファイルを扱う時の注意点

昨夜、というか今日の未明にもFBで愚痴っていたんですが、AndroidでZipファイルを扱おうとしてかなり大きく嵌ったので、メモ的に注意点をまとめておきます。

とりあえず、Zipファイルを扱う方法というだけであれば、「Android Zip ファイル」などをキーにすれば
http://techbooster.jpn.org/andriod/application/3816/
http://techbooster.org/android/application/15261/
あたりが見つかり、これに従ってやっていたのですが、NullExceptionが発生してどうにもうまくいかない。
本家本元( http://developer.android.com/reference/java/util/zip/ZipEntry.html )にも行ってみたんですが、これもいまいちよくわからず途方に暮れてました。

で、今作っているアプリは解凍の方だけだったんですが、ふと、まさか日本語関係か、と思い当り、探してみたところ、まぁでるわでるわ。
http://okwave.jp/qa/q1030820.html
http://moyolab.blog57.fc2.com/blog-entry-23.html
http://www.ne.jp/asahi/hishidama/home/tech/java/zip.html

で、いざ、じゃぁ apache の Ant に含まれている org.apache.tools.zip を使ってやろうとしたところ、importがエラーになってコンパイルが通らない。
でこれもまたほうぼういろいろ調べた結果、ばっちりの現象を発見。
http://okwave.jp/qa/q7684327.html
プロジェクトの設定からビルドバスにAnt系を追加して、何とかなりました。

ということで、AndroidでZipファイル(特に日本語のファイル名が入るZipファイル)を扱う場合の注意点をまとめると
基本として、 EXTERNAL_STORAGE 関係のパーミッションが必要(必要に応じてREAD/WRITE)
日本語ファイルが操作対象に含まれる場合にはAndroidで標準で使われる java.util.zip 系ではエラーになり失敗する。(これ、もしかしたら、英語圏で作られたZip操作系のアプリって、Androidではまともに動かない、なんていうケースも多々あるんじゃないかな?)
Ant内に含まれているApacheのライブラリを使うには、プロジェクトの設定から、ビルドパスにAnt系のjarファイルを指定してやる。(標準なら、Eclipseフォルダの下の\plugins\org.apache.ant_XXXXX\lib 配下にある。XXXXはバージョン番号)
という事のようです。

具体的なソースコードのサンプルは、上のリンク先などを参考にしてください。


【2013.04.22 1:00追記】
実は、上の内容で対応したが、その後、実行時に何度やってもExceptionエラーが発生。
よくよく確認すると class Not Found というエラーになっている模様。
いくら試してもうまくいかないので日本Androidの会にヘルプを求めたところ、「ADTの仕様変更により、プロジェクトの設定からビルドパスを指定するのではなく、プロジェクトフォルダの下の libs フォルダ内に、対象となるjarファイルを追加して対応するようになった」と教えてもらいました。
ということで、上に書いたポイント3つ目は
ant.jarファイルを、\\workspace\プロジェクト名\libs\ の配下にコピーする。(ant.jarファイルは、標準なら、Eclipseフォルダの下の\plugins\org.apache.ant_XXXXX\lib 配下にある。XXXXはバージョン番号)
となります。




============================気になる情報

ドコモ、2画面スマートフォン「MEDIAS W N-05E」で利用できるアプリ開発コンテスト開催、募集期間5月6日まで
http://gpad.tv/develop/ntt-docomo-mediasw-n05e-app-contest/

究極の手書き入力タブレット enchant MOONが価格決定!4/23から予約開始
http://weekly.ascii.jp/elem/000/000/139/139364/

■[メモ]西日本新聞が月2500円の学割価格導入 経済電子版「qBiz」も無料
http://d.hatena.ne.jp/edgefirst/20130407/1365291779

グーグルグラスの開発者向けモデルが出荷開始されました
http://www.gizmodo.jp/2013/04/google_glass_8.html





アプリを作ろう! Android入門~ゼロから学ぶアプリの作成から公開まで
日経BP社
WINGSプロジェクト

amazon.co.jpで買う
Amazonアソシエイト by アプリを作ろう!  Android入門~ゼロから学ぶアプリの作成から公開まで の詳しい情報を見る / ウェブリブログ商品ポータル



本格アプリを作ろう! Androidプログラミングレシピ
インプレスジャパン
Dave Smith

amazon.co.jpで買う
Amazonアソシエイト by 本格アプリを作ろう! Androidプログラミングレシピ の詳しい情報を見る / ウェブリブログ商品ポータル


この記事へのコメント

この記事へのトラックバック

テーマ別記事