diff --git a/apps/common-app/package.json b/apps/common-app/package.json index 5602e8b8752a..53ddb50d4e64 100644 --- a/apps/common-app/package.json +++ b/apps/common-app/package.json @@ -35,7 +35,7 @@ "fuse.js": "patch:fuse.js@npm%3A7.1.0#~/.yarn/patches/fuse.js-npm-7.1.0-5dcae892a6.patch", "react": "19.2.3", "react-dom": "19.2.3", - "react-native-gesture-handler": "2.30.0", + "react-native-gesture-handler": "2.32.0", "react-native-mmkv": "4.3.0", "react-native-nitro-modules": "patch:react-native-nitro-modules@npm%3A0.35.2#~/.yarn/patches/react-native-nitro-modules-npm-0.35.2-717188fdb0.patch", "react-native-reanimated": "workspace:*", diff --git a/apps/fabric-example/android/app/build.gradle b/apps/fabric-example/android/app/build.gradle index 9c538acb30ff..38c0efe3650e 100644 --- a/apps/fabric-example/android/app/build.gradle +++ b/apps/fabric-example/android/app/build.gradle @@ -102,7 +102,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/fabric-example/android/gradle.properties b/apps/fabric-example/android/gradle.properties index 2af1072bc63c..b93b8cfc6660 100644 --- a/apps/fabric-example/android/gradle.properties +++ b/apps/fabric-example/android/gradle.properties @@ -52,3 +52,8 @@ enableWorkletsProfiling=true # https://docs.gradle.org/current/userguide/configuration_cache.html org.gradle.configuration-cache=true org.gradle.configuration-cache.problems=fail + +# 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 \ No newline at end of file diff --git a/apps/fabric-example/android/gradle/wrapper/gradle-wrapper.properties b/apps/fabric-example/android/gradle/wrapper/gradle-wrapper.properties index 37f78a6af837..c61a118f7ddb 100644 --- a/apps/fabric-example/android/gradle/wrapper/gradle-wrapper.properties +++ b/apps/fabric-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/docs/docs-reanimated/package.json b/docs/docs-reanimated/package.json index 544f8d11e479..35f20da8bd2b 100644 --- a/docs/docs-reanimated/package.json +++ b/docs/docs-reanimated/package.json @@ -57,7 +57,7 @@ "react-colorful": "5.6.1", "react-dom": "19.1.1", "react-native": "0.83.0", - "react-native-gesture-handler": "2.28.0", + "react-native-gesture-handler": "2.32.0", "react-native-reanimated": "4.4.1", "react-native-svg": "15.15.4", "react-native-web": "0.21.2", diff --git a/docs/docs-worklets/package.json b/docs/docs-worklets/package.json index aaa6ddbd36e7..feb91218ebec 100644 --- a/docs/docs-worklets/package.json +++ b/docs/docs-worklets/package.json @@ -58,7 +58,7 @@ "react-colorful": "5.6.1", "react-dom": "19.1.1", "react-native": "0.83.0", - "react-native-gesture-handler": "2.28.0", + "react-native-gesture-handler": "2.32.0", "react-native-reanimated": "4.4.1", "react-native-svg": "15.15.4", "react-native-web": "0.21.2", diff --git a/packages/react-native-reanimated/android/build.gradle.kts b/packages/react-native-reanimated/android/build.gradle.kts index 7c57979bc648..6bdf6f1c838b 100644 --- a/packages/react-native-reanimated/android/build.gradle.kts +++ b/packages/react-native-reanimated/android/build.gradle.kts @@ -1,6 +1,8 @@ import groovy.json.JsonSlurper +import com.android.Version import org.apache.tools.ant.taskdefs.condition.Os import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import java.util.Properties import javax.inject.Inject @@ -8,7 +10,6 @@ plugins { id("com.android.library") id("maven-publish") id("com.diffplug.spotless") version "8.4.0" - id("org.jetbrains.kotlin.android") } fun safeExtGet(prop: String, fallback: Any?): Any? = @@ -105,6 +106,20 @@ if (project != rootProject) { apply(plugin = "com.facebook.react") } +fun shouldEnableAgpFallback(): Boolean { + val agpMajorVersion = Version.ANDROID_GRADLE_PLUGIN_VERSION.substringBefore('.').toIntOrNull() ?: Int.MAX_VALUE + if (agpMajorVersion <= 8) { + return true + } + + val isBuiltInKotlinEnabled = providers.gradleProperty("android.builtInKotlin").orNull?.toBooleanStrictOrNull() ?: true + return !isBuiltInKotlinEnabled +} + +if (shouldEnableAgpFallback()) { + apply(plugin = "org.jetbrains.kotlin.android") +} + val packageDir: File = project.projectDir.parentFile val reactNativeRootDir: File = resolveReactNativeDirectory() val REACT_NATIVE_VERSION: String = getReactNativeVersion() @@ -237,8 +252,8 @@ android { } } -if (project != rootProject) { - kotlin { +if (project != rootProject && shouldEnableAgpFallback()) { + tasks.withType().configureEach { compilerOptions { jvmTarget = JvmTarget.fromTarget("17") } diff --git a/packages/react-native-reanimated/android/gradle/wrapper/gradle-wrapper.properties b/packages/react-native-reanimated/android/gradle/wrapper/gradle-wrapper.properties index 2f2958b923a0..221c4f98228a 100644 --- a/packages/react-native-reanimated/android/gradle/wrapper/gradle-wrapper.properties +++ b/packages/react-native-reanimated/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ 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 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/packages/react-native-reanimated/android/settings.gradle.kts b/packages/react-native-reanimated/android/settings.gradle.kts index 5c3025008052..ff4731e1807a 100644 --- a/packages/react-native-reanimated/android/settings.gradle.kts +++ b/packages/react-native-reanimated/android/settings.gradle.kts @@ -6,7 +6,7 @@ pluginManagement { resolutionStrategy { eachPlugin { if (requested.id.id.startsWith("com.android")) { - useModule("com.android.tools.build:gradle:8.13.1") + useModule("com.android.tools.build:gradle:9.2.1") } if (requested.id.id == "com.diffplug.spotless") { useModule("com.diffplug.spotless:spotless-plugin-gradle:8.1.0") diff --git a/packages/react-native-worklets/android/build.gradle.kts b/packages/react-native-worklets/android/build.gradle.kts index 2e01292a6956..2317c712e7bd 100644 --- a/packages/react-native-worklets/android/build.gradle.kts +++ b/packages/react-native-worklets/android/build.gradle.kts @@ -1,6 +1,8 @@ import groovy.json.JsonSlurper +import com.android.Version import org.apache.tools.ant.taskdefs.condition.Os import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import java.util.Properties import javax.inject.Inject @@ -8,7 +10,6 @@ plugins { id("com.android.library") id("maven-publish") id("com.diffplug.spotless") version "8.1.0" - id("org.jetbrains.kotlin.android") } fun safeExtGet(prop: String, fallback: Any?): Any? = @@ -116,6 +117,20 @@ if (project != rootProject) { apply(plugin = "com.facebook.react") } +fun shouldEnableAgpFallback(): Boolean { + val agpMajorVersion = Version.ANDROID_GRADLE_PLUGIN_VERSION.substringBefore('.').toIntOrNull() ?: Int.MAX_VALUE + if (agpMajorVersion <= 8) { + return true + } + + val isBuiltInKotlinEnabled = providers.gradleProperty("android.builtInKotlin").orNull?.toBooleanStrictOrNull() ?: true + return !isBuiltInKotlinEnabled +} + +if (shouldEnableAgpFallback()) { + apply(plugin = "org.jetbrains.kotlin.android") +} + val featureFlags = getStaticFeatureFlags() val packageDir: File = project.projectDir.parentFile @@ -267,11 +282,11 @@ android { sourceSets { getByName("main") { - java { + kotlin { if (FETCH_PREVIEW_ENABLED) { - srcDir("src/networking") + directories.add("src/networking") } else { - srcDir("src/no-networking") + directories.add("src/no-networking") } } } @@ -282,8 +297,8 @@ android { } } -if (project != rootProject) { - kotlin { +if (project != rootProject && shouldEnableAgpFallback()) { + tasks.withType().configureEach { compilerOptions { jvmTarget = JvmTarget.fromTarget("17") } diff --git a/packages/react-native-worklets/android/gradle/wrapper/gradle-wrapper.properties b/packages/react-native-worklets/android/gradle/wrapper/gradle-wrapper.properties index 2f2958b923a0..221c4f98228a 100644 --- a/packages/react-native-worklets/android/gradle/wrapper/gradle-wrapper.properties +++ b/packages/react-native-worklets/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ 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 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/packages/react-native-worklets/android/settings.gradle.kts b/packages/react-native-worklets/android/settings.gradle.kts index 921de2a69214..c58b72057257 100644 --- a/packages/react-native-worklets/android/settings.gradle.kts +++ b/packages/react-native-worklets/android/settings.gradle.kts @@ -6,7 +6,7 @@ pluginManagement { resolutionStrategy { eachPlugin { if (requested.id.id.startsWith("com.android")) { - useModule("com.android.tools.build:gradle:8.13.1") + useModule("com.android.tools.build:gradle:9.2.1") } if (requested.id.id == "com.diffplug.spotless") { useModule("com.diffplug.spotless:spotless-plugin-gradle:8.1.0") diff --git a/yarn.lock b/yarn.lock index aca439c23c10..9b2b76f03914 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9645,7 +9645,7 @@ __metadata: languageName: node linkType: hard -"@types/react-test-renderer@npm:19.1.0": +"@types/react-test-renderer@npm:19.1.0, @types/react-test-renderer@npm:^19.1.0": version: 19.1.0 resolution: "@types/react-test-renderer@npm:19.1.0" dependencies: @@ -13901,7 +13901,7 @@ __metadata: react: "npm:19.2.3" react-dom: "npm:19.2.3" react-native: "npm:0.85.2" - react-native-gesture-handler: "npm:2.30.0" + react-native-gesture-handler: "npm:2.32.0" react-native-mmkv: "npm:4.3.0" react-native-nitro-modules: "patch:react-native-nitro-modules@npm%3A0.35.2#~/.yarn/patches/react-native-nitro-modules-npm-0.35.2-717188fdb0.patch" react-native-reanimated: "workspace:*" @@ -15652,7 +15652,7 @@ __metadata: react-colorful: "npm:5.6.1" react-dom: "npm:19.1.1" react-native: "npm:0.83.0" - react-native-gesture-handler: "npm:2.28.0" + react-native-gesture-handler: "npm:2.32.0" react-native-reanimated: "npm:4.4.1" react-native-svg: "npm:15.15.4" react-native-web: "npm:0.21.2" @@ -15717,7 +15717,7 @@ __metadata: react-colorful: "npm:5.6.1" react-dom: "npm:19.1.1" react-native: "npm:0.83.0" - react-native-gesture-handler: "npm:2.28.0" + react-native-gesture-handler: "npm:2.32.0" react-native-reanimated: "npm:4.4.1" react-native-svg: "npm:15.15.4" react-native-web: "npm:0.21.2" @@ -27951,31 +27951,18 @@ __metadata: languageName: node linkType: hard -"react-native-gesture-handler@npm:2.28.0": - version: 2.28.0 - resolution: "react-native-gesture-handler@npm:2.28.0" - dependencies: - "@egjs/hammerjs": "npm:^2.0.17" - hoist-non-react-statics: "npm:^3.3.0" - invariant: "npm:^2.2.4" - peerDependencies: - react: "*" - react-native: "*" - checksum: 10/856a9cb50b467e5e21cdd50930be68fee20f1c8ea13caa3cabb0bebd1345d0a847cd7b761a39b2d42b986b9d8e82e9419ccaf481b17373233c7ece7fed08dc70 - languageName: node - linkType: hard - -"react-native-gesture-handler@npm:2.30.0": - version: 2.30.0 - resolution: "react-native-gesture-handler@npm:2.30.0" +"react-native-gesture-handler@npm:2.32.0": + version: 2.32.0 + resolution: "react-native-gesture-handler@npm:2.32.0" dependencies: "@egjs/hammerjs": "npm:^2.0.17" + "@types/react-test-renderer": "npm:^19.1.0" hoist-non-react-statics: "npm:^3.3.0" invariant: "npm:^2.2.4" peerDependencies: react: "*" react-native: "*" - checksum: 10/242b1eb29202bc9fc7bf0271c3da102559adc9f2810441465b6d78c1a8ed8f65bdd91335957c841a4716f796be3e7b87d1d55629d6803ea12e1be832d89c946c + checksum: 10/b43d350fd281ed9f75a469873a1eb74ae7cfa3d3e15dc7e57b11c0da5702a107b2824e1a9115386d9812e1179e86ccb952d6617cecbdbb26097d7c186088210f languageName: node linkType: hard