- 投稿日:2019-02-15T02:00:49+09:00
【Android】dependenciesをIDE補完で記述する
はじめに
Androidアプリのdependenciesを下記のように記述していないでしょうか?
build.gradle... dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support.constraint:constraint-layout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' }このように記述すると、バージョン変更時に一つずつ編集しなければならなかったり、そもそも可読性が低いように感じます。
そこで、buildSrcでこれらを保持する方法が良さそうだったのでメモしておきます。参考:
Kotlin + buildSrc for Better Gradle Dependency Managementやり方
1. buildSrcフォルダを作成
モジュールと同じようにプロジェクトルートに
buildSrc
という名前のフォルダを作成します。
2. build.gradle.ktsを作成
作成した
buildSrc
フォルダにbuild.gradle.kts
という名前のkotlin-scriptファイルを作成します。
この段階ではまだ何も記述しなくていいです。
3. Sync Gradle !
sync gradle
しましょう。buildSrc
内に以下のようなファイルが生成されれば成功です。
4. dslを記述
build.gradle.kts
に以下を記述してsync gradle
しましょう。build.gradle.ktsplugins { `kotlin-dsl` }5. Dependencyを保持するオブジェクトクラスを作成
buildSrc
内にsrc/main/java/Dependencies.ktを作成します。
一旦今のDependencyを全て保持させておきたいので、下記のようにします。Dependencies.ktobject Dependencies { object Version { val kotlin = "1.2.71" val support = "28.0.0" val constraint = "1.1.3" val runner = "1.0.2" val espresso = "3.0.2" } val kotlinLib = "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${Version.kotlin}" val appCompat = "com.android.support:appcompat-v7:${Version.support}" val constraintLayout = "com.android.support.constraint:constraint-layout:${Version.constraint}" val junit = "junit:junit:4.12" val testRunner = "com.android.support.test:runner:${Version.runner}" val espressoCore = "com.android.support.test.espresso:espresso-core:${Version.espresso}" }6. 実際に使う
これで使えるようになりました! 実際に
build.gradle
に適用しましょう!build.gradle... dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation Dependencies.kotlinLib implementation Dependencies.appCompat implementation Dependencies.constraintLayout testImplementation Dependencies.junit androidTestImplementation Dependencies.testRunner androidTestImplementation Dependencies.espressoCore }以前と比べて何を読み込んでいるか分かりやすくなり、IDE補完が効くので編集もしやすくなったかと思います。
サンプル
今回のプロジェクトをGitHubに上げたので、よければ参考にしてください。
https://github.com/TaigaNatto/BuildSorceSample