
最近githubで☆を集めているandroid-best-practiceがあります。その名の通りandroidのベストプラクティスをまとめた文書なのですが、まだまだandroid初心者な僕にとっては非常に参考になります。
ただ、参考になるのはいいのですが、僕の頭ではいちいち覚えていられないという悲しい現状に直面しています。
いい加減何度も見なおすのは面倒なので、(全てではありませんが)簡単にandroid-best-practiceに沿う方法を作りました。
僕は開発にAndroid Studioを使用しているので、Android Studioで対応します。
Android Studioのテンプレート改造
Android Studioの仕組みとしてテンプレートというものがあります。
何か物を作るときのベースとなるものを切り出しているわけですね。
この仕組を利用してandroid-best-practiceに沿ったプロジェクトを作れないかと考えました。
置き場所はMacだと/Applications/Android Studio.app/Contents/plugins/android/lib/templates/あたりです。
テンプレート概要
テンプレートの中で一番直感的なのはactivities以下です。
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Android Studioを使用している方々にとっては見慣れているものが並んでいるのではないでしょうか?
そう、Activityのウィザードで選べるものがここで定義されているわけですね。
これらの中身はここでは詳しく触れませんが、ここやここが参考になるかもしれません。
中身を見ていくと、プロジェクトやモジュールに設定される内容がここには無いことに気づきます。
このディレクトに指定されているテンプレートの役割はあくまで「Activityを作った時に必要となる内容」であって、「プロジェクトやモジュールを作った時に必要となる内容」では無いようです。
プロジェクトやモジュールを作った時に参照されるのはgradle-projects以下です。
1 2 3 4 5 6 7 | |
いかにもそれっぽいテンプレートが並んでいますね。
特にNewAndroidMoudleとNewAndroidProjectが気になります。
NewAndroidProjectはプロジェクト作製時、つまりgradleのトップディレクトリ直下のファイルに対するテンプレートのようです。
android-best-practiceの内容はそれぞれのモジュールに対して行うものが主なので、NewAndroidProjectは今回は対象ではありません。
ではNewAndroidModuleはどうでしょうか。
NewAndroidProject/root/build.gradle.ftlあたりを見ると、テンプレートのsyntaxで見づらいですが、見慣れた記述が見えるはずです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | |
どうやらモジュール生成に対する挙動をカスタマイズしたければ、ここらあたりを弄ればいけそうですね。
改造
android-best-practiceの中で、自動化できそうなところから拾っていきます
具体的な内容は気が向いたら解説しようと思います。
Gradle Configuration
デフォルトのroot/build.gradle.ftlに記述を加え、パスワードのサンプルを書いたroot/gradle.propertiesを作成し、recipe.xml.ftl`で挙動を設定する
Libraries
recipe.xml.ftlにdependencyを追加。
バージョンは今後変化することも考えglobals.xml.ftlに切り出し。
Java Package Architecture
recipe.xml.ftlにパッケージのディレクトリを作るmkdirを追加。
Test frameworks
recipe.xml.ftlのdependencyではbuild.gradleのandroidTestCompileは追加できないため、直接root/build.gradle.ftlに記述。
今回は以上です。
実行結果

狙いどおりパッケージの中にandroid-best-practiceに沿ったディレクトリ構造(Java Package Architecture)、build.gradleの中にsigningConfigs(Gradle Configuration)とcompile(Libraries)、androidTestCompile(Test frameworks)が追加されていますね!
android-best-practiceにはまだリソース管理の考え方等色々ありますが、これだけでも環境統一という意味で開発環境の改善に繋げられるのではないでしょうか。