Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Gradle Plugin for Multi Module

Kuu
October 23, 2020

Gradle Plugin for Multi Module

Kuu

October 23, 2020
Tweet

More Decks by Kuu

Other Decks in Programming

Transcript

  1. Android アプリ開発の最近の流行 • Android Studio 4.1 ? • Jetpack Compose

    ? • Kotlin 1.4 ? • Material Component 1.2 ? • Android 5? Multi Module!! 複数 Module での開発へ移行すること Android -> Module iOS -> Framework
  2. Multi Module の Pros/Cons Pros • High Cohesion and Low

    Couplingな開発を促進・強制できる • 変更された Module だけCompile するので開発速度が早くなる! (20分待たなくても! ◦ https://developer.android.com/studio/build/optimize-your-build#create_libraries Cons • Single Module 開発と異なり諸々考える必要が出てくる ◦ Test Coverage (Jacoco) ◦ DI(Dagger, Koin...), Resource, Navigation, Dynamic Feature Module… • 各モジュールの管理(Library References, Build Config, Build Variant...) 引用元 https://droidkaigi.github.io/codelab-2020/en/index.html#0 高凝集で低結合
  3. Multi Module 戦略は実際に採用されてるの? • 1-9個のモジュールが60% • 10 - 20 個が

    30% 10個以上で構成されてるアプリが 40% https://emmav.me/posts/2019-mar-1-android-modularisation/ 実は、2019年3月時点での調査結果
  4. よくある管理方法 Maven Repository 内にあるArtifact を指定す る文字列を直接各Module の build.gradle(.kts)に記入している。 直接文字列を記入する代わりに BuildSrc

    Module 内の定数を利用してArtifact を指定している https://github.com/DroidKaigi/conference-app-2020/blob/master/feature/floormap/build.gradle
  5. Gradle Plugin で各モジュールを管理しよう Library Reference だけじゃなくて、その他の宣言も共通管理したいよね。 .Gradle/.gradle.kts ファイルを直接読み込めばいいのでは Gradle Plugin

    を作成し、Apply するだけで使えるようにしたらより便利なのでは。 • Plugin にこれ系の宣言をおまとめできる • なるべく手作業減らしたい。
  6. Internalで使うためだけのプラグインを作成 //TODO ソースコードのURLを貼る You can check the official Document!! •

    https://docs.gradle.org/nightly/userguide/designing_gradle_plugins.html • BaseExtension - Android Plugin 3.4.0-dev DSL Reference • https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html#getExtensions--
  7. 実際に使ってみて学んだこと ※比較的小規模 Application/Library で処理を分岐することができる Firebase Distribution 等は Application Module だけで使いたいよね

    Library Reference は あえて 定数ではなく文字列を置いて管理した方が良さそう ライブラリにアップデートがあることに気づきやすい