diff --git a/apps/basic-example/android/app/build.gradle b/apps/basic-example/android/app/build.gradle index 55f355a603..9403ff43ee 100644 --- a/apps/basic-example/android/app/build.gradle +++ b/apps/basic-example/android/app/build.gradle @@ -117,7 +117,7 @@ android { // see https://reactnative.dev/docs/signed-apk-android. signingConfig signingConfigs.debug minifyEnabled enableProguardInReleaseBuilds - proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" } } } diff --git a/apps/basic-example/android/gradle.properties b/apps/basic-example/android/gradle.properties index 9afe61598f..ef26ec3275 100644 --- a/apps/basic-example/android/gradle.properties +++ b/apps/basic-example/android/gradle.properties @@ -42,3 +42,8 @@ hermesEnabled=true # This allows your app to draw behind system bars for an immersive UI. # Note: Only works with ReactActivity and should not be used with custom Activity. edgeToEdgeEnabled=false + +# Opt out of built-in kotlin and new DSL behavior that ships with AGP 9. +# Starting from AGP 10.x these opt outs will be removed. +android.builtInKotlin=false +android.newDsl=false diff --git a/apps/basic-example/android/gradle/wrapper/gradle-wrapper.properties b/apps/basic-example/android/gradle/wrapper/gradle-wrapper.properties index 37f78a6af8..c61a118f7d 100644 --- a/apps/basic-example/android/gradle/wrapper/gradle-wrapper.properties +++ b/apps/basic-example/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/packages/react-native-gesture-handler/android/build.gradle b/packages/react-native-gesture-handler/android/build.gradle index 3f5f514cc1..226a0713d8 100644 --- a/packages/react-native-gesture-handler/android/build.gradle +++ b/packages/react-native-gesture-handler/android/build.gradle @@ -60,7 +60,22 @@ if (isNewArchitectureEnabled()) { } apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' + +def shouldEnableAgpFallback() { + def agpMajorVersion = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')[0].toInteger() + if (agpMajorVersion <= 8) { + return true + } + + def propertyVal = providers.gradleProperty("android.builtInKotlin").orNull + def isBuiltInKotlinEnabled = propertyVal != null ? propertyVal.toBoolean() : true + + return !isBuiltInKotlinEnabled +} + +if (shouldEnableAgpFallback()) { + apply plugin: 'kotlin-android' +} if (project == rootProject) { apply from: "spotless.gradle" @@ -183,17 +198,17 @@ android { } sourceSets.main { - java { + kotlin { if (shouldUseCommonInterfaceFromReanimated()) { - srcDirs += 'reanimated/src/main/java' + directories.add('reanimated/src/main/java') } else { - srcDirs += 'noreanimated/src/main/java' + directories.add('noreanimated/src/main/java') } if (shouldUseCommonInterfaceFromRNSVG()) { - srcDirs += 'svg/src/main/java' + directories.add('svg/src/main/java') } else { - srcDirs += 'nosvg/src/main/java' + directories.add('nosvg/src/main/java') } } } diff --git a/packages/react-native-gesture-handler/android/gradle/wrapper/gradle-wrapper.properties b/packages/react-native-gesture-handler/android/gradle/wrapper/gradle-wrapper.properties index 260504c0cb..221c4f9822 100644 --- a/packages/react-native-gesture-handler/android/gradle/wrapper/gradle-wrapper.properties +++ b/packages/react-native-gesture-handler/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists