Configure how R8 runs

The settings plugin lets you create execution profiles for the R8 tool, letting you configure how R8 runs so it doesn't slow down your build. Depending on the environment, you can use profiles to run R8 in a separate JVM process and set JVM arguments, such as maximum heap size.

Declare an execution profile

Apply the settings plugin, and then add the android block to the settings.gradle file. In this block, you can define different profiles and then set a default, as shown in the following example:

Kotlin

android{
execution{
profiles{
create("server"){
r8{
runInSeparateProcess=true
jvmOptions+=listOf("-Xms2048m","-Xmx8192m","-XX:+HeapDumpOnOutOfMemoryError")
}
}
create("local"){
r8{
runInSeparateProcess=true
jvmOptions+=listOf("-Xms256m","-Xmx2048m","-XX:+HeapDumpOnOutOfMemoryError")
}
}
defaultProfile="server"
}
}
}

Groovy

android{
execution{
profiles{
register("server"){
r8{
runInSeparateProcess=true
jvmOptions+=["-Xms2048m","-Xmx8192m","-XX:+HeapDumpOnOutOfMemoryError"]
}
}
register("local"){
r8{
runInSeparateProcess=true
jvmOptions+=["-Xms256m","-Xmx2048m","-XX:+HeapDumpOnOutOfMemoryError"]
}
}
defaultProfile="server"
}
}
}

Override the default profile

To override the current default execution profile, add the following property to the gradle.properties file.

android.settings.executionProfile=example-profile

Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Last updated 2026年01月23日 UTC.