Slide 1

Slide 1 text

Performance tweaks for AS and Gradle 12 + 1 tips to make your life better

Slide 2

Slide 2 text

Samuel Dionne Transit Android development for 10 years Started on Eclipse AS + Gradle is still painful

Slide 3

Slide 3 text

7 Gradle tips 5 Android Studio tips

Slide 4

Slide 4 text

7 Gradle tips 5 Android Studio tips

Slide 5

Slide 5 text

1. Disable Plugins File > Settings > Plugins

Slide 6

Slide 6 text

2. Custom VM Options Help > Edit Custom VM Options

Slide 7

Slide 7 text

Here is the content of my studio64.vmoptions # custom Android Studio VM options, see https://developer.android.com/studio/intro/studio-config.html -Xms3g -Xmx3g -XX:NewRatio=3 -XX:ReservedCodeCacheSize=480m -XX:MetaspaceSize=512m -Xss16m -XX:+UseCompressedOops -Dfile.encoding=UTF -Dawt.useSystemAAFontSettings=on -Dsun.java2d.noddraw=false -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -server

Slide 8

Slide 8 text

3. No dynamic version in gradle dependencies

Slide 9

Slide 9 text

4. Experiment settings File > Settings > Experimental

Slide 10

Slide 10 text

5. Memory indicator File > Settings > Appearance

Slide 11

Slide 11 text

7 Gradle tips 5 Android Studio tips

Slide 12

Slide 12 text

1. Disable PNG Cruncher buildTypes.debug.crunchPngs

Slide 13

Slide 13 text

1. Disable PNG Cruncher File > Settings > Plugins Better Yet! Convert all images to WebP*

Slide 14

Slide 14 text

2. Disable Crashlytics Build Id ext.alwaysUpdateBuildId

Slide 15

Slide 15 text

2. Disable Crashlytics BuildId build.gradle Better Yet! Disable Crashlytics completely ext.enableCrashlytics

Slide 16

Slide 16 text

3. Enable daemon org.gradle.daemon

Slide 17

Slide 17 text

4. Parallel build org.gradle.parallel

Slide 18

Slide 18 text

5. Caching* org.gradle.caching

Slide 19

Slide 19 text

6. Memory params org.gradle.jvmargs

Slide 20

Slide 20 text

Here is the content of my gradle.properties android.enableJetifier=true android.useAndroidX=true org.gradle.jvmargs=-Xmx2560M -Dkotlin.daemon.jvm.options="-Xmx2560M" -Dfile.encoding=UTF-8 org.gradle.daemon=true org.gradle.parallel=true org.gradle.caching=true kapt.incremental.apt=true kapt.use.worker.api=true kapt.include.compile.classpath=false

Slide 21

Slide 21 text

7. Offline mode File > Settings > Build > Gradle

Slide 22

Slide 22 text

5 Android Studio tips 7 Gradle tips

Slide 23

Slide 23 text

5 Android Studio tips 7 Gradle tips Please make it even FASTER

Slide 24

Slide 24 text

5 Android Studio tips 7 Gradle tips 50k Mac Pro

Slide 25

Slide 25 text

5 Android Studio tips 7 Gradle tips Steal CPU and Memory 50k Mac Pro

Slide 26

Slide 26 text

5 Android Studio tips 7 Gradle tips 50k Mac Pro Steal CPU and Memory Rent a Big Server

Slide 27

Slide 27 text

1. Copy our local files to the server

Slide 28

Slide 28 text

1. Copy our local files to the server 2. Run gradle build on the server

Slide 29

Slide 29 text

1. Copy our local files to the server 7. Offline mode File > Settings > Build > Gradle 3. Copy the results files locally

Slide 30

Slide 30 text

Gradle plugin Mirakle github.com/Instamotor-Labs/mirakle

Slide 31

Slide 31 text

- 3x faster incremental build - 5x faster full build - Shared C++ cache - Shared Gradle build cache (coming soon) - 6 person team == lot of minutes saved

Slide 32

Slide 32 text

Thank you for listening Questions?