org.gradle.parallel=true
org.gradle.configureondemand=false
org.gradle.caching=true

# Enable filesystem watching
org.gradle.vfs.watch=true

# Disable cache-fix version warning
systemProp.org.gradle.android.cache-fix.ignoreVersionCheck=true

# Enable experimental configuration caching
org.gradle.configuration-cache=true
org.gradle.configuration-cache-problems=warn

# Enable Kotlin incremental compilation
kotlin.incremental=true

# Kotlin code style
kotlin.code.style=official

# Enable incremental annotation processor for KAPT
kapt.incremental.apt=true

# Turn off AP discovery in compile path to enable compile avoidance
kapt.include.compile.classpath=false

# Force disable testOnly flag in manifest
android.injected.testOnly=false

# New incremental compilation for Kotlin
kotlin.incremental.useClasspathSnapshot=true
kotlin.build.report.output=file

# Use R8 instead of ProGuard for code shrinking.
android.enableR8.fullMode=false

# Enable AndroidX
android.useAndroidX=true

# Enable non-transitive R class namespacing where each library only contains
# references to the resources it declares instead of declarations plus all
# transitive dependency references.
android.nonTransitiveRClass=true

# Only keep the single relevant constructor for types mentioned in XML files
# instead of using a parameter wildcard which keeps them all.
android.useMinimalKeepRules=true

# Default Android build features
android.defaults.buildfeatures.buildconfig=false
android.defaults.buildfeatures.aidl=false
android.defaults.buildfeatures.renderscript=false
android.defaults.buildfeatures.resvalues=false
android.defaults.buildfeatures.shaders=false

# Experimental features
android.disableEarlyManifestParsing=true
android.enablePartialRIncrementalBuilds=true
android.experimental.testOptions.uninstallIncompatibleApks=true
android.enableBuildConfigAsBytecode=true
android.experimental.enableNewResourceShrinker.preciseShrinking=true

# Disable warnings about unsupported features, we know what we're doing
android.suppressUnsupportedOptionWarnings=android.disableEarlyManifestParsing,android.enablePartialRIncrementalBuilds,android.experimental.testOptions.uninstallIncompatibleApks,android.enableBuildConfigAsBytecode,android.experimental.enableNewResourceShrinker.preciseShrinking,android.suppressUnsupportedOptionWarnings

# Add opens for KAPT
# https://youtrack.jetbrains.com/issue/KT-45545#focus=Comments-27-4862682.0-0
org.gradle.jvmargs=-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 \
  --add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \
  --add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED \
  --add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED \
  --add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED \
  --add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED  \
  --add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED \
  --add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED \
  --add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED \
  --add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED \
  --add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED

kotlin.daemon.jvmargs=-Dfile.encoding=UTF-8 \
  --add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \
  --add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED \
  --add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED \
  --add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED \
  --add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED  \
  --add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED \
  --add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED \
  --add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED \
  --add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED \
  --add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
