Slide 1

Slide 1 text

5 Meetup 2 023 . 0 4 . 20 mkeeda

Slide 2

Slide 2 text

About me • mkeeda (޲Ҫా Ұฏ) • Twitter: @mr_mkeeda • Github: @mkeeda • Android Engineer at Cybozu, Inc • ޷͖ͳؖࠃυϥϚ:
 βɾάϩʔϦʔʙً͔͖͠෮़ʙ 2

Slide 3

Slide 3 text

3 Gradle

Slide 4

Slide 4 text

4 Guide to Android app modularization | Android Developers https://developer.android.com/topic/modularization

Slide 5

Slide 5 text

5 sample-app feature-a feature-b build.gradle build.gradle plugins { id 'com.android.library' id 'org.jetbrains.kotlin.android' } android { compileSdk 33 defaultConfig { minSdk 26 targetSdk 33 // ... } compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } } dependencies { //... } build.gradle API level JDK version app build.gradle

Slide 6

Slide 6 text

Convention Plugins Gradle Plugin system Binary plugin interface Plugin plugins { id ‘…’ } Script plugin Script apply from: ‘other.gradle’ 6

Slide 7

Slide 7 text

buildSrc Plugin 7 sample-app feature-a feature-b build.gradle build.gradle buildSrc src/main/kotlin MyPlugin.kt Plugin Plugin classpath 


Slide 8

Slide 8 text

buildSrc buildSrc buildSrc buildSrc 8

Slide 9

Slide 9 text

sample-app project Composite build (Included build) 9 :app other project :shared includeBuild(‘shared’) shared.jar sample-app.apk gradle :shared:jar gradle :app:assemble shared.jar :shared:jar

Slide 10

Slide 10 text

buildSrc Composite build 10 sample-app build.gradle build.gradle build-logic ( ) src/main/kotlin MyPlugin.kt feature-a feature-b sample-app feature-a feature-b build.gradle build.gradle buildSrc src/main/kotlin MyPlugin.kt

Slide 11

Slide 11 text

Gradle 8 . 0 buildSrc Gradle 8 . 0 buildSrc Composite build buildSrc Some changes to make buildSrc more like an included build 
 https://github.com/gradle/gradle/pull/ 22 5 40 buildSrc https://github.com/gradle/gradle/issues/ 6045 #issuecomment- 7177527 60 11

Slide 12

Slide 12 text

Convention Plugin + Composite build buildSrc Plugin buildSrc 12

Slide 13

Slide 13 text

Sharing Build Logic between Subprojects 
 https://docs.gradle.org/current/userguide/sharing_build_logic_between_subprojects.html Using Gradle Plugins 
 https://docs.gradle.org/current/userguide/plugins.html Structuring Large Projects 
 https://docs.gradle.org/current/userguide/structuring_software_products.html Herding Elephants | Square Corner Blog 
 https://developer.squareup.com/blog/herding-elephants/ Composing builds 
 https://docs.gradle.org/current/userguide/composite_builds.html 13