Slide 1

Slide 1 text

Gradle Yoshihiro Wada / @e10dokup 2024/01/19 @ Shibuya.apk #46

Slide 2

Slide 2 text

{ “id”: “@e10dokup”, “name”: “Yoshihiro Wada”, “affiliations”: [ “CyberAgent Inc, / Ameba” ], “interested”: [ “camera”, “gadget”, “driving”, “motorsports” ] }

Slide 3

Slide 3 text

Android Gradle Gradle JVM 3

Slide 4

Slide 4 text

Android Gradle

Slide 5

Slide 5 text

Android Studio Gradle release debug Staging/Production APK/AAB Android Gradle Android Gradle Plugin AGP Android Gradle 5

Slide 6

Slide 6 text

Gradle JVM Groovy Gradle JVM Gradle Gradle Gradle JVM Gradle 6

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

Android --build-cache gradle.properties GRADLE_OPTS CI GRADLE_OPTS: ʢઃఆʙʙʣ Gradle 8

Slide 9

Slide 9 text

Gradle 9 Ҿ༻ݩɿhttps://docs.gradle.org/current/userguide/build_environment.html

Slide 10

Slide 10 text

CI GRADLE_OPTS CI gradle.properties GRADLE_OPTS JVM GRADLE_OPTS JVM_OPTS 10

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

Android Studio Android SDK AGP AGP 8 R AGP Android Studio 12

Slide 13

Slide 13 text

AndroidX •android.enableJetifier=false Build Analyzer Jeti fi er 13

Slide 14

Slide 14 text

R R •android.nonTransitiveRClass=true AGP 8.0.0 10~20% Android Studio [Refactor] > [Migrate to Non-Transitive R Classes … ] R 14

Slide 15

Slide 15 text

Con fi guration •org.gradle.configuration-cache=true •org.gradle.configuration-cache.problems=warn Con fi guration Build Analyzer Con fi guration Cache Con fi guration Cache 15

Slide 16

Slide 16 text

Gradle JVM •org.gradle.jvmargs=-XX:+UseParallelGC •org.gradle.jvmargs=-Xmx4096M Gradle JVM org.gradle.jvmargs 16

Slide 17

Slide 17 text

Gradle JVM

Slide 18

Slide 18 text

CI Common Android memory issues CI 1 OS 75% RAM 20GB 15GB PC Android Studio PC Android Studio RAM 16GB JVM 18

Slide 19

Slide 19 text

org.gradle.jvmargs 19 org.gradle.jvmargs=-Xmx6g -XX:MaxMetaspaceSize=1g -Dkotlin.daemon.jvm.options=-Xmx2g

Slide 20

Slide 20 text

-Xmx JVM Android Developers 4/6/8GB Gradle JVM -Xms org.gradle.jvmargs 20 org.gradle.jvmargs=-Xmx6g -XX:MaxMetaspaceSize=1g -Dkotlin.daemon.jvm.options=-Xmx2g

Slide 21

Slide 21 text

-XX:MaxMetaspaceSize Metaspace Gradle Gradle Plugin OOM 256m 384m Android org.gradle.jvmargs 21 org.gradle.jvmargs=-Xmx6g -XX:MaxMetaspaceSize=1g -Dkotlin.daemon.jvm.options=-Xmx2g

Slide 22

Slide 22 text

-Dkotlin.daemon.jvm.options Kotlin Daemon Kotlin Daemon Gradle org.gradle.jvmargs Gradle OOM org.gradle.jvmargs 22 org.gradle.jvmargs=-Xmx6g -XX:MaxMetaspaceSize=1g -Dkotlin.daemon.jvm.options=-Xmx2g

Slide 23

Slide 23 text

Kotlin 23 Kotlin Gradle Daemon kotlin.compiler.execution.strategy daemon default Kotlin Daemon in-process Gradle Daemon Gradle out-of-process Gradle

Slide 24

Slide 24 text

PC CI Gradle 2-3 GRADLE_OPTS gradle.properties Gradle Daemon RAM 20GB 4GB 24

Slide 25

Slide 25 text

https://developer.android.com/build/optimize-your-build Optimize your build speed Android Developers https://support.circleci.com/hc/en-us/articles/360021812453- Common-Android-memory-issues Common Android Memory Issues Circle CI https://qiita.com/irgaly/items/4c22d233caf8ec55512e Android: GitHub Actions Gradle build daemon disappeared unexpectedly Qiita References 25