Skip to content

Commit e9cc6cf

Browse files
committed
fix: remove cyclic dependency between tasks
1 parent 64bab28 commit e9cc6cf

2 files changed

Lines changed: 28 additions & 27 deletions

File tree

gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/plugin/RNSourceSets.kt

Lines changed: 7 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ object RNSourceSets {
9696
}
9797

9898
private fun configureTasks() {
99-
val projectName = project.name
10099
val appProjectName = appProject.name
101100

102101
project.tasks.register("copyAutolinkingSources", Copy::class.java) {
@@ -108,32 +107,13 @@ object RNSourceSets {
108107
patchRNEntryPoint(it, path)
109108
}
110109

111-
androidExtension.buildTypes.forEach { buildType ->
112-
val capitalisedBuildType = buildType.name.replaceFirstChar { it.titlecase() }
113-
val codegenTaskName = "generateCodegenSchemaFromJavaScript"
114-
val strippedNativeLibsPath = "$appBuildDir/intermediates/stripped_native_libs"
115-
val strippedDebugSymbolsPath = "strip${capitalisedBuildType}DebugSymbols/out/lib"
116-
117-
val copyLibTask =
118-
project.tasks.register("copy${capitalisedBuildType}LibSources", Copy::class.java) {
119-
it.dependsOn(":$appProjectName:$codegenTaskName")
120-
it.dependsOn(":$appProjectName:strip${capitalisedBuildType}DebugSymbols")
121-
it.dependsOn(":$projectName:$codegenTaskName")
122-
123-
it.from(
124-
"$strippedNativeLibsPath/${buildType.name}/$strippedDebugSymbolsPath",
125-
)
126-
it.into(project.rootProject.file("$projectName/libs$capitalisedBuildType"))
127-
it.include("**/libappmodules.so", "**/libreact_codegen_*.so")
128-
}
129-
130-
project.tasks.named("preBuild").configure {
131-
it.dependsOn("copyAutolinkingSources")
132-
it.dependsOn(copyLibTask)
133-
if (capitalisedBuildType == "Release") {
134-
it.dependsOn(":${appProject.name}:createBundleReleaseJsAndAssets")
135-
}
136-
}
110+
project.tasks.named("preBuild").configure {
111+
/**
112+
* As part of the build task, we need to make sure the auto-gen files are present.
113+
* This makes sure that AutoLinking and ReactNativeEntryPoint are generated.
114+
*/
115+
it.dependsOn("copyAutolinkingSources")
116+
it.dependsOn(":${appProject.name}:createBundleReleaseJsAndAssets")
137117
}
138118
}
139119
}

gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/processors/JNILibsProcessor.kt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import com.callstack.react.brownfield.shared.BaseProject
1717
import com.callstack.react.brownfield.shared.Logging
1818
import com.callstack.react.brownfield.utils.AndroidArchiveLibrary
1919
import org.gradle.api.Task
20+
import org.gradle.api.tasks.Copy
2021
import java.io.File
2122

2223
class JNILibsProcessor : BaseProject() {
@@ -34,8 +35,28 @@ class JNILibsProcessor : BaseProject() {
3435
}
3536

3637
val androidExtension = project.extensions.getByName("android") as LibraryExtension
38+
39+
val appBuild = project.project(":app").layout.buildDirectory.get()
40+
val strippedNativeLibsPath = "$appBuild/intermediates/stripped_native_libs"
41+
val strippedDebugSymbolsPath = "strip${upperCaseVariantName}DebugSymbols/out/lib"
42+
val codegenTaskName = "generateCodegenSchemaFromJavaScript"
43+
44+
val copyTaskName = "copy${upperCaseVariantName}LibSources"
45+
project.tasks.register(copyTaskName, Copy::class.java) { copyTask ->
46+
copyTask.dependsOn(":app:strip${upperCaseVariantName}DebugSymbols")
47+
copyTask.dependsOn(":${project.name}:$codegenTaskName")
48+
49+
copyTask.from(
50+
"$strippedNativeLibsPath/${variant.name}/$strippedDebugSymbolsPath",
51+
)
52+
53+
copyTask.into(project.rootProject.file("${project.name}/libs$upperCaseVariantName"))
54+
copyTask.include("**/libappmodules.so", "**/libreact_codegen_*.so")
55+
}
56+
3757
mergeJniLibsTask.configure {
3858
it.dependsOn(explodeTasks)
59+
it.dependsOn(copyTaskName)
3960

4061
it.doFirst {
4162
for (archiveLibrary in aarLibraries) {

0 commit comments

Comments
 (0)