Skip to content

Commit d570917

Browse files
committed
Fix AGP 9.1 build failures
- ReactPlugin.kt: Replace deprecated srcDir() with directories.add() - AgpConfiguratorUtils.kt: Remove deprecated LibraryExtension import, use libraryVariants API - NdkConfiguratorUtils.kt: Remove prefab buildFeatures (removed in AGP 9.0+) Fixes: build_android (Kotlin -Werror), build_fantom_runner (AGP 9.1 API)
1 parent abbf8ae commit d570917

3 files changed

Lines changed: 20 additions & 22 deletions

File tree

packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactPlugin.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,12 +234,12 @@ class ReactPlugin : Plugin<Project> {
234234
if (isLibrary) {
235235
project.extensions.getByType(LibraryAndroidComponentsExtension::class.java).finalizeDsl { ext
236236
->
237-
ext.sourceSets.getByName("main").java.srcDir(generatedSrcDir.get().dir("java").asFile)
237+
ext.sourceSets.getByName("main").java.directories.add(generatedSrcDir.get().dir("java"))
238238
}
239239
} else {
240240
project.extensions.getByType(ApplicationAndroidComponentsExtension::class.java).finalizeDsl {
241241
ext ->
242-
ext.sourceSets.getByName("main").java.srcDir(generatedSrcDir.get().dir("java").asFile)
242+
ext.sourceSets.getByName("main").java.directories.add(generatedSrcDir.get().dir("java"))
243243
}
244244
}
245245

packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/utils/AgpConfiguratorUtils.kt

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ package com.facebook.react.utils
99

1010
import com.android.build.api.variant.ApplicationAndroidComponentsExtension
1111
import com.android.build.api.variant.LibraryAndroidComponentsExtension
12-
import com.android.build.gradle.LibraryExtension
1312
import com.facebook.react.ReactExtension
1413
import com.facebook.react.utils.ProjectUtils.isEdgeToEdgeEnabled
1514
import com.facebook.react.utils.ProjectUtils.isHermesEnabled
@@ -114,22 +113,25 @@ internal object AgpConfiguratorUtils {
114113
fun configureNamespaceForLibraries(appProject: Project) {
115114
appProject.rootProject.allprojects { subproject ->
116115
subproject.pluginManager.withPlugin("com.android.library") {
117-
subproject.extensions
116+
val components = subproject.extensions
118117
.getByType(LibraryAndroidComponentsExtension::class.java)
119-
.finalizeDsl { ext ->
120-
if (ext.namespace == null) {
121-
val android = subproject.extensions.getByType(LibraryExtension::class.java)
122-
val manifestFile = android.sourceSets.getByName("main").manifest.srcFile
123-
124-
manifestFile
125-
.takeIf { it.exists() }
126-
?.let { file ->
127-
getPackageNameFromManifest(file)?.let { packageName ->
128-
ext.namespace = packageName
129-
}
130-
}
131-
}
132-
}
118+
119+
components.libraryVariants.all { variant ->
120+
if (components.namespace == null) {
121+
val manifestFile = variant.sourceSets
122+
?.getByName("main")
123+
?.manifest
124+
?.srcFile
125+
126+
manifestFile
127+
?.takeIf { it.exists() }
128+
?.let { file ->
129+
getPackageNameFromManifest(file)?.let { packageName ->
130+
components.namespace = packageName
131+
}
132+
}
133+
}
134+
}
133135
}
134136
}
135137
}

packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/utils/NdkConfiguratorUtils.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,6 @@ internal object NdkConfiguratorUtils {
2020
project.pluginManager.withPlugin("com.android.application") {
2121
project.extensions.getByType(ApplicationAndroidComponentsExtension::class.java).finalizeDsl {
2222
ext ->
23-
// We enable prefab so users can consume .so/headers from ReactAndroid and hermes-engine
24-
// .aar
25-
ext.buildFeatures.prefab = true
26-
2723
// If the user has not provided a CmakeLists.txt path, let's provide
2824
// the default one from the framework
2925
if (ext.externalNativeBuild.cmake.path == null) {

0 commit comments

Comments
 (0)