Androidでボタンを追加するたびに、いつも同じようなことを書く。
ひどくめんどくさいし、覚えてないので腹立たしい。
そう思っていると「android annotationがある」という話を教えてもらった。
便利そうなものは使ってみよう!
と思ったが、なんだかわからないまま使うのも悪いので、このAnnotationのしくみを動かすサンプルぐらいやってみるか、と試すことにした。
参考にしたのは、こちら。
Javaのpackage名以外は、そのままやったのだが・・・できたJarを設定してもEclipseが「unable to load annotation processor factory」みたいなことを言う。
パスがおかしいのか? package名がまずいのか? どこか書き間違えたか?
いろいろ見たのだが、わからん。
他のサイトも見たが、わからん。
2時間くらい悩んで、AndroidAnnotationsのJarを見てみることにした。
えー、classファイルを置くの??
みんな説明に「srcの下にMETA-INFを作って・・・」って書いてるから、JARにするときも*.javaファイルをやるものとばかり思ってたよ・・・。
classにすると、あっさりできた。
悔しいので、初心者なりに説明を(設定の)。
まず、Annotation Processorというやつは、Androidのプロジェクトとは一緒にできない。
新たに普通のJavaのプロジェクトを作ってやる。
Androidでは、それで作ったJARファイルだけを参照させることになる。
実装の仕方は、よくわからん。
他の人参照。
プロジェクトの構成は、特にこだわらないようだが、srcの下にMETA-INFを作成し、その下にservicesを作成し、その下に「javax.annotation.processing.Processor」という名前のテキストファイルを作る。
テキストファイルをエディタか何かで開いて、自作したProcessorのclass名をフルで書く。
私だと「com.blogpost.hiro99ma.anno.SampleAnnoProcessor」だった。
「extern」というフォルダは、JARの出力先として私が勝手に決めただけだ。
JARファイルを作る。
プロジェクト名で右クリックし「Export...」を選択。
JARにまとめたいファイルを決める。
.classpathと.projectはいらんだろう。
自分で作っていた「extern」もいらん。
下のチェックは「class files and resources」。
JARファイルの出力先や名前も適当に決める。
JARファイルができた。
では、Annotationを追加する方。
プロジェクト名で右クリックし「Properties」を選択。
「Java Compiler > Annotation Processing」で、いろいろ有効にする。
生成場所は「gen」らしい。
Factory Pathに、さっきのJARを追加する。
私は「Add External JARs..」で追加したが、追加できればいいらしい。
ビルドパスも通すらしい。classがあるからか?
ないと、importするときに見つからんと言われるようだ。
同じようにLibrariesに「Add External JARs...」で追加した。
このくらいやると、使えるみたいだ。
私がAnnotationを調べ始めた理由を忘れてしまったが、まあいいや。
AndroidAnotationの導入は
返信削除https://github.com/excilys/androidannotations/wiki/Eclipse-Project-Configuration
を参考にやったほうがいいです!
僕も使ってますが、こんなに難しくなく導入出来ましたYO
しかさんもアノテーターなんですね!
削除悪い癖なのかもしれませんが、何がどうなるのかある程度わからないと、怖くて使えないのです・・・。
なので、まずは自分でAnnotationを作れるようになろう、が目標だったんだと思います(たぶん)。
私のイメージだと、JavaのAnnotationは、C/C++の#defineと#pragmaをあわせて強力にして言語仕様に織り込んだ、というような感じで受けとっています。
が、この記事を書いていた頃は、#defineと同じようなものだろう、と思っていました。
なので「自分でAnnotationを作って、ボタン押しのイベントハンドラを自動生成するやつだけ作ろう」と思っていたのでした。
そして・・・以外と難しそうだし・・・他にやることもあることに気付いて、保留、となりました。
Annotationって便利そうなのですが、皆さん自作はあまりやらないものなのですかね?