From 65cc04f8148b7e7b2ddd470bfe6479145f069b2a Mon Sep 17 00:00:00 2001 From: Hur Ali Date: Tue, 16 Jun 2026 14:20:07 +0500 Subject: [PATCH 1/4] chore: upgrade gradle and use optimize proguard --- apps/basic-example/android/app/build.gradle | 2 +- .../android/gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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/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 From 72eba771ab8269e3d34b8dc79554a0ad7da91dd6 Mon Sep 17 00:00:00 2001 From: Hur Ali Date: Tue, 16 Jun 2026 14:20:43 +0500 Subject: [PATCH 2/4] chore: enable optouts --- apps/basic-example/android/gradle.properties | 5 +++++ 1 file changed, 5 insertions(+) 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 From 200d7191e4922902ce84743226b25eb4bc84697f Mon Sep 17 00:00:00 2001 From: Hur Ali Date: Tue, 16 Jun 2026 14:21:25 +0500 Subject: [PATCH 3/4] feat: adopt AGP9 with backward compat --- .../android/build.gradle | 27 ++++++++++++++----- .../gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/packages/react-native-gesture-handler/android/build.gradle b/packages/react-native-gesture-handler/android/build.gradle index 3f5f514cc1..ca83f204c3 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 == "false") ? false : 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 From 2e50c594ef4d6f11d6a11d80e26efe8bc3597ebc Mon Sep 17 00:00:00 2001 From: Hur Ali Date: Tue, 16 Jun 2026 15:09:59 +0500 Subject: [PATCH 4/4] fix: pr review --- packages/react-native-gesture-handler/android/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native-gesture-handler/android/build.gradle b/packages/react-native-gesture-handler/android/build.gradle index ca83f204c3..226a0713d8 100644 --- a/packages/react-native-gesture-handler/android/build.gradle +++ b/packages/react-native-gesture-handler/android/build.gradle @@ -68,7 +68,7 @@ def shouldEnableAgpFallback() { } def propertyVal = providers.gradleProperty("android.builtInKotlin").orNull - def isBuiltInKotlinEnabled = (propertyVal == "false") ? false : true + def isBuiltInKotlinEnabled = propertyVal != null ? propertyVal.toBoolean() : true return !isBuiltInKotlinEnabled }