Android Studioでライブラリの作り方がわからない、と書いていたら、教えてくれた。
http://hiro99ma.blogspot.com/2014/09/androidandroid-studio_14.html?showComment=1410834685828#c2233468687230081908
ライブラリ単独のプロジェクトじゃなくて、モジュールとして追加するのね。
ライブラリが2つある・・・。
「Android Library」と「Java Library」だ。
こちらによると、リソースなどもまとめられるのがAndroid Libraryで、Android ARchiveってことでaarファイルができるらしい。
その中にjarも入るそうだ。
Android Studio で簡単に jar をつくる手順はないのかと
今作っているNFCライブラリはリソースを含んでないのでjarファイルでよさそうだ。
そう思ってJava Libraryを選んでみたのだが・・・なんか、なんかだめだ。
たぶん、Android用じゃないから、パスの設定なんかがされてないんだろう。
あまり深く考えるのはやめ、AARというやつでやってみよう。
NfcLib、というモジュールを追加した。
build.gradleの違いは、
apply plugin: 'com.android.application'
が、
apply plugin: 'com.android.library'
となってるくらいか。
resフォルダなども入っているので削除し、appで使っていたJavaファイルを移動させた。
AndroidManifest.xmlも削除したのだが、なんか「同期エラー」みたいなのが発生したので、形だけ残すことにした。
あと「File>Project Structure...」で、appがNfcLibに依存している設定を追加。
いるのかいらんのかわからん設定だが、依存しているのは確かだから、悪くはなかろう。
ここからがよくわからないのだが、ModuleのcleanやRebuildをやっていくと、勝手にNfcLib/build/outputs/aarの中にNfcLib.aarができていた。
cleanしたら、作り直しているみたいだが、まあいいや。
aarはzipらしいので解凍すると、classes.jarとAndroidManifest.xmlが入っていた。
>jar tvf classes.jar0 Tue Sep 16 12:59:28 JST 2014 META-INF/25 Tue Sep 16 12:59:28 JST 2014 META-INF/MANIFEST.MF0 Tue Sep 16 12:59:28 JST 2014 com/0 Tue Sep 16 12:59:28 JST 2014 com/blogpost/0 Tue Sep 16 12:59:28 JST 2014 com/blogpost/hiro99ma/0 Tue Sep 16 12:59:28 JST 2014 com/blogpost/hiro99ma/nfc/23770 Tue Sep 16 12:59:28 JST 2014 com/blogpost/hiro99ma/nfc/FelicaLite.class7324 Tue Sep 16 12:59:28 JST 2014 com/blogpost/hiro99ma/nfc/NfcFactory.class0 Tue Sep 16 12:59:28 JST 2014 hiro99ma/0 Tue Sep 16 12:59:28 JST 2014 hiro99ma/blogpost/0 Tue Sep 16 12:59:28 JST 2014 hiro99ma/blogpost/com/0 Tue Sep 16 12:59:28 JST 2014 hiro99ma/blogpost/com/lites_sample/748 Tue Sep 16 12:59:28 JST 2014 hiro99ma/blogpost/com/lites_sample/BuildConfig.class
いや、最後のBuildConfig.classなんて頼んでないんですが・・・。
アプリと一緒にしてるから入ってくるのか。
しかもこれ、最初にパッケージ名を付け間違えたときのパスじゃないか。。。
あと、ProGuardをかけるとエラーになった。
Error:Execution failed for task ':NfcLib:proguardRelease'.
> java.io.IOException: The output jar is empty. Did you specify the proper '-keep' options?
うーん、アプリの方に置いていたときは問題なかったのだが・・・。
seeds.txtもあるが、だめなのか。
proguard-rules.proの書き方がよろしくなかったようだ。
-keepattributes Exceptions-keep class com.blogpost.hiro99ma.nfc.**-keepclassmembers class com.blogpost.hiro99ma.nfc.FelicaLite {public *;}-keepclassmembers class com.blogpost.hiro99ma.nfc.NfcFactory {public *;}
こんな感じにした。
-keepだけだとだめで、-keepclassmembersだけでもだめで、両方設定すると名前が残った。
あと、throwsが消えてしまったので、Exceptionsも追加した。
と、こんなに苦労してProGuardかけたけど、jadで見るとそれなりにわかるもんだな。
まあ、資料見ながら作っただけの実装なので、そんなに隠すまでもないか、とは思うが、「できることはやった」という気分になれるし、サイズも小さくなるから、いいのだ!
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。