diff --git a/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/plugin/RNSourceSets.kt b/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/plugin/RNSourceSets.kt index b89d1ce8..fe10bce4 100644 --- a/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/plugin/RNSourceSets.kt +++ b/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/plugin/RNSourceSets.kt @@ -46,7 +46,13 @@ object RNSourceSets { private fun configureSourceSets() { project.extensions.getByType(LibraryExtension::class.java).libraryVariants.all { variant -> - val capitalizedVariantName = variant.name.capitalized() + val bundledAssetsVariantName = + Utils.getBundledAssetsVariantName( + variantName = variant.name, + buildTypeName = variant.buildType.name, + isDebuggable = variant.buildType.isDebuggable, + ) + val capitalizedBundledAssetsVariantName = bundledAssetsVariantName.capitalized() androidExtension.sourceSets.getByName("main") { sourceSet -> sourceSet.java.srcDirs("$moduleBuildDir/generated/autolinking/src/main/java") @@ -55,15 +61,16 @@ object RNSourceSets { androidExtension.sourceSets.getByName(variant.name) { sourceSet -> for (bundlePathSegment in listOf( // outputs for RN <= 0.81 - "createBundle${capitalizedVariantName}JsAndAssets", + "createBundle${capitalizedBundledAssetsVariantName}JsAndAssets", // outputs for RN >= 0.82 - "react/${variant.name}", + "react/$bundledAssetsVariantName", )) { sourceSet.assets.srcDirs("$appBuildDir/generated/assets/$bundlePathSegment") sourceSet.res.srcDirs("$appBuildDir/generated/res/$bundlePathSegment") } - val expoUpdatesResources = "create${capitalizedVariantName}UpdatesResources" + val expoUpdatesResources = + "create${capitalizedBundledAssetsVariantName}UpdatesResources" sourceSet.assets.srcDirs("$appBuildDir/generated/assets/$expoUpdatesResources") } } diff --git a/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/processors/VariantProcessor.kt b/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/processors/VariantProcessor.kt index 16e00b42..fc42b678 100644 --- a/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/processors/VariantProcessor.kt +++ b/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/processors/VariantProcessor.kt @@ -58,14 +58,24 @@ class VariantProcessor(private val variant: LibraryVariant) : BaseProject() { throw TaskNotFound("Can not find $preBuildTaskPath task") } - if (capitalizedVariantName.contains("Release")) { - val projectExt = project.extensions.getByType(Extension::class.java) - val appProject = project.rootProject.project(projectExt.appProjectName) - prepareTask.dependsOn("${appProject.path}:createBundle${capitalizedVariantName}JsAndAssets") + val bundledAssetsVariantName = + Utils.getBundledAssetsVariantName( + variantName = variant.name, + buildTypeName = variant.buildType.name, + isDebuggable = variant.buildType.isDebuggable, + ) + val capitalizedBundledAssetsVariantName = bundledAssetsVariantName.capitalized() - if (Utils.isExpoProject(project)) { - prepareTask.dependsOn("${appProject.path}:create${capitalizedVariantName}UpdatesResources") - } + val projectExt = project.extensions.getByType(Extension::class.java) + val appProject = project.rootProject.project(projectExt.appProjectName) + prepareTask.dependsOn( + "${appProject.path}:createBundle${capitalizedBundledAssetsVariantName}JsAndAssets", + ) + + if (Utils.isExpoProject(project)) { + prepareTask.dependsOn( + "${appProject.path}:create${capitalizedBundledAssetsVariantName}UpdatesResources", + ) } val bundleTask = variantTaskProvider.bundleTaskProvider(project, variant.name) diff --git a/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/utils/Utils.kt b/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/utils/Utils.kt index 3e0d6400..c3c8d2da 100644 --- a/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/utils/Utils.kt +++ b/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/utils/Utils.kt @@ -46,4 +46,25 @@ object Utils { fun isExpoProject(project: Project): Boolean { return project.findProject(EXPO_PROJECT_LOCATOR) != null } + + fun getBundledAssetsVariantName( + variantName: String, + buildTypeName: String, + isDebuggable: Boolean, + ): String { + if (!isDebuggable) { + return variantName + } + + if (variantName == buildTypeName) { + return "release" + } + + val capitalizedBuildTypeName = buildTypeName.capitalized() + return if (variantName.endsWith(capitalizedBuildTypeName)) { + "${variantName.removeSuffix(capitalizedBuildTypeName)}Release" + } else { + "release" + } + } }