作る度に毎度似たようなことをしていてめんどくさい。しかも忘れていたりするのでテンプレート化したいんですが、Android Studioを更新するときにはテンプレートを消さないといけないとかあるらしくてそれはそれでだるいので、とりあえず将来の自分のためにメモとして残しておく。
ここでは、Konohanaという名前のライブラリを作ろうとしています。
名前の由来は、此花区です。かわいい。
全部のログはここにあります。
github.com
New Project
まずは、サンプルアプリを作ります。
File -> New Project を選択
- Application NameにKonohanaExampleをつける
- package nameを
com.github.hisaichi5518.konohana.example
に変更する
- Project Location を
Konohana
にする
そのあとは自分がmin sdkなどを指定してFinishを押す。
ビルド出来るようになるので、とりあえずビルドして安心感を得る。
Git
プロジェクト生成が終われば、Gitをアレしてソレする。
git init
curl https://www.gitignore.io/api/vim%2Candroid%2Candroidstudio > .gitignore
git add .
git commit -m "first commit"
gitignoreを自分で頑張るのは不毛なので gitignore.io に任せる。僕が利用するVim, Android, Android Studio を指定してある。
Githubにリポジトリ作るとかは良きタイミングで。
app -> example
- app を右クリックして、Refactor -> Rename を選択
- example にする
- git commit
File -> New Module -> Android Library を選択
- library name は
Konohana
- module name を
library
- package nameは
com.github.hisaichi5518.konohana
- min sdkはよしなにする
- git commit
annotation library (Java Library)を追加する
Android libraryの中にannotationを入れてもいいような気がしますが、後述するProcessor library(Java library)がAndroid libraryに依存するのが許せなかったので分けます。
File -> New Module -> Java Library を選択
- Library name は
annotation
- package name は
com.github.hisaichi5518.konohana.annotation
- class name は つくる予定のアノテーション名をいれます。 今回の場合は
Key
- git commit
annotations
としているライブラリがいくつかありましたが、他は単数形でこれだけ複数形にするのが気になったのでやめました。なにか複数形にするべき理由があるのかもしれない。
File -> New Module -> Java Library を選択
- Library nameは
processor
- package name は
com.github.hisaichi5518.konohana.processor
- class name は
KonohanaProcessor
- git commit
processorのみJava8を指定する。
- processor/build.gradle で
JavaVersion.VERSION_1_8
を指定する
- git commit
https://github.com/hisaichi5518/annotation-processor-example/commit/6ac6d78b59bda4befa5b6dde13e07f2d73dce236
追加したModuleを利用する
以下のように変更し、git commit する。
https://github.com/hisaichi5518/annotation-processor-example/commit/92ce2654b48da75d94f518ea21bd180e87c6a6b4
library/build.gradle
以下を追加する
compile project(':annotation')
example/build.gradle
以下を追加する
annotationProcessor project(':processor')
compile project(':library')
以下を追加する
compile project(':annotation')
Android Studio 3.0だと不要だと思う。
以下のコミットのように追加する。
https://github.com/hisaichi5518/annotation-processor-example/commit/bcfd9c8a9021e90ffa6b8dd86cfb16be27c10d4e
必要なライブラリを追加と削除
以下のコミットのように追加していく。
https://github.com/hisaichi5518/annotation-processor-example/commit/12d377943af8d35a68be1e52a8210083a0558960
また様々な箇所でバージョンを指定する必要があり、揃える必要があるライブラリ(例えばサポートライブラリ)は、バージョンを変数にいれる。
https://github.com/hisaichi5518/annotation-processor-example/commit/5b0ae810915aa3f4a36f803b0dfc498f5dd48b0d
ライブラリは、最新版を利用したほうがいいので、以下のURLを確認
最後に library/build.gradleにある appcompat-v7
は不要であることもあるので、不要なら消す。
KonohanaProcessor を変更していく。
https://github.com/hisaichi5518/annotation-processor-example/commit/b59b76ce3989396ab71b29139cf08fcab6e5adc5
Annotationをつくる
自動生成されるのはclassなのでAnnotationにする。
あとexampleで利用するコード書いておく。
@Target(ElementType.FIELD)
public @interface Key {
}
public class MainActivity extends AppCompatActivity {
@Key
String name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Rebuild Projectを実行
Build -> Rebuild Project
おわり
なんかもっとスマートなやり方があったら知りたい。
github.com