作る度に毎度似たようなことをしていてめんどくさい。しかも忘れていたりするのでテンプレート化したいんですが、Android Studioを更新するときにはテンプレートを消さないといけないとかあるらしくてそれはそれでだるいので、とりあえず将来の自分のためにメモとして残しておく。
ここでは、Konohanaという名前のライブラリを作ろうとしています。 名前の由来は、此花区です。かわいい。
全部のログはここにあります。
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
Android Libraryを追加する
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
としているライブラリがいくつかありましたが、他は単数形でこれだけ複数形にするのが気になったのでやめました。なにか複数形にするべき理由があるのかもしれない。
processor library (Java Library) を追加する
File -> New Module -> Java Library を選択
- Library nameは
processor
- package name は
com.github.hisaichi5518.konohana.processor
- class name は
KonohanaProcessor
- git commit
Java 8を利用する
processorのみJava8を指定する。
- processor/build.gradle で
JavaVersion.VERSION_1_8
を指定する - git commit
追加したModuleを利用する
以下のように変更し、git commit する。
library/build.gradle
以下を追加する
compile project(':annotation')
example/build.gradle
以下を追加する
annotationProcessor project(':processor')
compile project(':library')
processor/build.gradle
以下を追加する
compile project(':annotation')
maven.google.com を利用する
Android Studio 3.0だと不要だと思う。 以下のコミットのように追加する。
必要なライブラリを追加と削除
以下のコミットのように追加していく。
また様々な箇所でバージョンを指定する必要があり、揃える必要があるライブラリ(例えばサポートライブラリ)は、バージョンを変数にいれる。
ライブラリは、最新版を利用したほうがいいので、以下のURLを確認
- Recent Support Library Revisions | Android Developers
- GitHub - square/javapoet: A Java API for generating .java source files.
- Maven Repository: com.google.auto.service » auto-service
- Maven Repository: com.google.auto » auto-common
最後に library/build.gradleにある appcompat-v7
は不要であることもあるので、不要なら消す。
Processorの準備
KonohanaProcessor を変更していく。
Annotationをつくる
自動生成されるのはclassなのでAnnotationにする。 あとexampleで利用するコード書いておく。
- https://github.com/hisaichi5518/annotation-processor-example/commit/13eef3ebc23c572f4a1e04799aa09d1689239b08
- https://github.com/hisaichi5518/annotation-processor-example/commit/86dd156ef4222a589666e2c0ed2b7a376f3ba8d1
@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