@callstack/react-native-brownfield 4.0.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/gradle-plugin/brownfield/config/detekt/detekt.yml +1 -1
  2. package/gradle-plugin/brownfield/gradle.properties +1 -1
  3. package/gradle-plugin/brownfield/gradlew +0 -0
  4. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/expo/utils/LocalMavenUtils.kt +2 -5
  5. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/plugin/ProjectConfigurations.kt +3 -5
  6. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/plugin/RNBrownfieldPlugin.kt +20 -26
  7. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/plugin/RNSourceSets.kt +23 -35
  8. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/processors/AssetTaskProcessor.kt +51 -16
  9. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/processors/ExplodeTaskProvider.kt +6 -7
  10. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/processors/JNILibsProcessor.kt +133 -108
  11. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/processors/ManifestTaskProcessor.kt +26 -62
  12. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/processors/MergeProcessor.kt +7 -29
  13. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/processors/ProguardProcessor.kt +9 -46
  14. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/processors/ResourceTaskProcessor.kt +49 -11
  15. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/processors/VariantHelper.kt +52 -47
  16. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/processors/VariantTaskProvider.kt +31 -63
  17. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/shared/BundleTaskProvider.kt +72 -27
  18. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/shared/Constants.kt +0 -1
  19. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/shared/ExplodeAarTask.kt +2 -20
  20. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/shared/Logging.kt +1 -1
  21. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/shared/MergeClassesTask.kt +70 -0
  22. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/shared/MergeLibraryManifestTask.kt +178 -0
  23. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/utils/AndroidArchiveLibrary.kt +0 -4
  24. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/utils/DirectoryManager.kt +0 -5
  25. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/utils/Extension.kt +8 -9
  26. package/gradle-plugin/brownfield/src/main/kotlin/com/callstack/react/brownfield/utils/Utils.kt +2 -34
  27. package/lib/commonjs/expo-config-plugin/android/utils/constants.js +1 -1
  28. package/lib/commonjs/expo-config-plugin/android/utils/formatHelpers.js +2 -0
  29. package/lib/commonjs/expo-config-plugin/android/utils/formatHelpers.js.map +1 -0
  30. package/lib/commonjs/expo-config-plugin/android/utils/gradleHelpers.js +1 -1
  31. package/lib/commonjs/expo-config-plugin/android/utils/gradleHelpers.js.map +1 -1
  32. package/lib/commonjs/expo-config-plugin/android/withAndroidModuleFiles.js +1 -1
  33. package/lib/commonjs/expo-config-plugin/android/withAndroidModuleFiles.js.map +1 -1
  34. package/lib/commonjs/expo-config-plugin/android/withBrownfieldAndroid.js +1 -1
  35. package/lib/commonjs/expo-config-plugin/android/withBrownfieldAndroid.js.map +1 -1
  36. package/lib/commonjs/expo-config-plugin/template/android/build.gradle.kts +6 -0
  37. package/lib/commonjs/scripts/brownfield.js +0 -0
  38. package/lib/module/expo-config-plugin/android/utils/constants.js +1 -1
  39. package/lib/module/expo-config-plugin/android/utils/formatHelpers.js +2 -0
  40. package/lib/module/expo-config-plugin/android/utils/formatHelpers.js.map +1 -0
  41. package/lib/module/expo-config-plugin/android/utils/gradleHelpers.js +1 -1
  42. package/lib/module/expo-config-plugin/android/utils/gradleHelpers.js.map +1 -1
  43. package/lib/module/expo-config-plugin/android/withAndroidModuleFiles.js +1 -1
  44. package/lib/module/expo-config-plugin/android/withAndroidModuleFiles.js.map +1 -1
  45. package/lib/module/expo-config-plugin/android/withBrownfieldAndroid.js +1 -1
  46. package/lib/module/expo-config-plugin/android/withBrownfieldAndroid.js.map +1 -1
  47. package/lib/module/expo-config-plugin/template/android/build.gradle.kts +6 -0
  48. package/lib/typescript/commonjs/src/expo-config-plugin/android/utils/constants.d.ts +2 -2
  49. package/lib/typescript/commonjs/src/expo-config-plugin/android/utils/formatHelpers.d.ts +2 -0
  50. package/lib/typescript/commonjs/src/expo-config-plugin/android/utils/formatHelpers.d.ts.map +1 -0
  51. package/lib/typescript/commonjs/src/expo-config-plugin/android/utils/gradleHelpers.d.ts +9 -1
  52. package/lib/typescript/commonjs/src/expo-config-plugin/android/utils/gradleHelpers.d.ts.map +1 -1
  53. package/lib/typescript/commonjs/src/expo-config-plugin/android/withAndroidModuleFiles.d.ts.map +1 -1
  54. package/lib/typescript/commonjs/src/expo-config-plugin/android/withBrownfieldAndroid.d.ts.map +1 -1
  55. package/lib/typescript/commonjs/src/expo-config-plugin/types/android/BrownfieldPluginAndroidConfig.d.ts +10 -0
  56. package/lib/typescript/commonjs/src/expo-config-plugin/types/android/BrownfieldPluginAndroidConfig.d.ts.map +1 -1
  57. package/lib/typescript/module/src/expo-config-plugin/android/utils/constants.d.ts +2 -2
  58. package/lib/typescript/module/src/expo-config-plugin/android/utils/formatHelpers.d.ts +2 -0
  59. package/lib/typescript/module/src/expo-config-plugin/android/utils/formatHelpers.d.ts.map +1 -0
  60. package/lib/typescript/module/src/expo-config-plugin/android/utils/gradleHelpers.d.ts +9 -1
  61. package/lib/typescript/module/src/expo-config-plugin/android/utils/gradleHelpers.d.ts.map +1 -1
  62. package/lib/typescript/module/src/expo-config-plugin/android/withAndroidModuleFiles.d.ts.map +1 -1
  63. package/lib/typescript/module/src/expo-config-plugin/android/withBrownfieldAndroid.d.ts.map +1 -1
  64. package/lib/typescript/module/src/expo-config-plugin/types/android/BrownfieldPluginAndroidConfig.d.ts +10 -0
  65. package/lib/typescript/module/src/expo-config-plugin/types/android/BrownfieldPluginAndroidConfig.d.ts.map +1 -1
  66. package/package.json +3 -3
  67. package/src/expo-config-plugin/android/utils/constants.ts +1 -1
  68. package/src/expo-config-plugin/android/utils/formatHelpers.ts +7 -0
  69. package/src/expo-config-plugin/android/utils/gradleHelpers.ts +114 -8
  70. package/src/expo-config-plugin/android/withAndroidModuleFiles.ts +20 -0
  71. package/src/expo-config-plugin/android/withBrownfieldAndroid.ts +20 -4
  72. package/src/expo-config-plugin/template/android/build.gradle.kts +6 -0
  73. package/src/expo-config-plugin/types/android/BrownfieldPluginAndroidConfig.ts +12 -0
  74. package/CHANGELOG.md +0 -300
@@ -844,7 +844,7 @@ style:
844
844
  ignoredCharacters: []
845
845
  ThrowsCount:
846
846
  active: true
847
- max: 2
847
+ max: 3
848
848
  excludeGuardClauses: false
849
849
  TrailingWhitespace:
850
850
  active: false
@@ -1,6 +1,6 @@
1
1
  PROJECT_ID=com.callstack.react.brownfield
2
2
  ARTIFACT_ID=brownfield-gradle-plugin
3
- VERSION=2.0.0-alpha05
3
+ VERSION=2.0.0-alpha08
4
4
  GROUP=com.callstack.react
5
5
  IMPLEMENTATION_CLASS=com.callstack.react.brownfield.plugin.RNBrownfieldPlugin
6
6
 
File without changes
@@ -1,6 +1,6 @@
1
1
  package com.callstack.react.brownfield.expo.utils
2
2
 
3
- import com.android.build.gradle.LibraryExtension
3
+ import com.android.build.api.dsl.LibraryExtension
4
4
  import org.gradle.api.Project
5
5
  import java.io.File
6
6
 
@@ -68,10 +68,7 @@ object LocalMavenUtils {
68
68
  BrownfieldPublishingInfo(
69
69
  groupId = groupId,
70
70
  artifactId = artifactId,
71
- version = (
72
- targetProjectAndroidLibExt.defaultConfig.versionName
73
- ?: targetProject.version.toString()
74
- ),
71
+ version = targetProject.version.toString(),
75
72
  )
76
73
  )
77
74
  }
@@ -1,7 +1,7 @@
1
1
  package com.callstack.react.brownfield.plugin
2
2
 
3
+ import com.android.build.api.dsl.LibraryExtension
3
4
  import com.android.build.api.variant.LibraryAndroidComponentsExtension
4
- import com.android.build.gradle.LibraryExtension
5
5
  import com.callstack.react.brownfield.shared.Logging
6
6
  import com.callstack.react.brownfield.utils.capitalized
7
7
  import org.gradle.api.Project
@@ -70,7 +70,6 @@ class ProjectConfigurations(private val project: Project) {
70
70
  val configuration = project.configurations.create(configName)
71
71
 
72
72
  configuration.extendsFrom(project.configurations.getByName("implementation"))
73
- configuration.isVisible = false
74
73
  configuration.isTransitive = false
75
74
 
76
75
  val androidComponents = project.extensions.getByType(LibraryAndroidComponentsExtension::class.java)
@@ -96,9 +95,8 @@ class ProjectConfigurations(private val project: Project) {
96
95
  from: AttributeContainer,
97
96
  into: AttributeContainer,
98
97
  ) {
99
- val value: T? = from.getAttribute(key)
100
- if (value != null) {
101
- into.attribute(key, value)
98
+ from.getAttribute(key)?.let {
99
+ into.attribute(key, it)
102
100
  }
103
101
  }
104
102
 
@@ -1,7 +1,7 @@
1
1
  package com.callstack.react.brownfield.plugin
2
2
 
3
- import com.android.build.gradle.LibraryExtension
4
- import com.android.build.gradle.api.LibraryVariant
3
+ import com.android.build.api.variant.LibraryAndroidComponentsExtension
4
+ import com.android.build.api.variant.LibraryVariant
5
5
  import com.callstack.react.brownfield.artifacts.ArtifactsResolver
6
6
  import com.callstack.react.brownfield.expo.ExpoPublishingHelper
7
7
  import com.callstack.react.brownfield.expo.utils.ExpoGradleProjectProjection
@@ -11,6 +11,7 @@ import com.callstack.react.brownfield.processors.JNILibsProcessor
11
11
  import com.callstack.react.brownfield.processors.ManifestTaskProcessor
12
12
  import com.callstack.react.brownfield.processors.ProguardProcessor
13
13
  import com.callstack.react.brownfield.processors.ResourceTaskProcessor
14
+ import com.callstack.react.brownfield.processors.VariantHelper
14
15
  import com.callstack.react.brownfield.processors.VariantPackagesProperty
15
16
  import com.callstack.react.brownfield.processors.VariantTaskProvider
16
17
  import com.callstack.react.brownfield.shared.BaseProject
@@ -21,6 +22,7 @@ import com.callstack.react.brownfield.utils.AndroidArchiveLibrary
21
22
  import com.callstack.react.brownfield.utils.DirectoryManager
22
23
  import com.callstack.react.brownfield.utils.Extension
23
24
  import com.callstack.react.brownfield.utils.Utils
25
+ import com.callstack.react.brownfield.utils.capitalized
24
26
  import org.gradle.api.Plugin
25
27
  import org.gradle.api.Project
26
28
  import org.gradle.api.ProjectConfigurationException
@@ -65,10 +67,8 @@ class RNBrownfieldPlugin : Plugin<Project> {
65
67
 
66
68
  val variantTaskProvider = VariantTaskProvider(project)
67
69
 
68
- /**
69
- * Configure Tasks
70
- */
71
- project.extensions.getByType(LibraryExtension::class.java).libraryVariants.all { variant ->
70
+ val androidComponents = project.extensions.getByType(LibraryAndroidComponentsExtension::class.java)
71
+ androidComponents.onVariants { variant ->
72
72
  configureTasks(variant, artifacts, variantTaskProvider)
73
73
  }
74
74
  }
@@ -124,48 +124,42 @@ class RNBrownfieldPlugin : Plugin<Project> {
124
124
  variantTaskProvider: VariantTaskProvider,
125
125
  ) {
126
126
  val variantName = variant.name
127
- val capitalizedVariantName = variantName.replaceFirstChar(Char::titlecase)
127
+ val capitalizedVariantName = variantName.capitalized()
128
128
 
129
129
  /** ======= EXPLODE AAR =========*/
130
130
  val explodeTask = ExplodeTaskProvider.getTask(variant, project, artifacts)
131
131
 
132
132
  /** ======= Pre<Variant>Build =========*/
133
133
  variantTaskProvider.preBuildTaskByVariant(
134
- variantName,
135
- variant.buildType.name,
136
- variant.buildType.isDebuggable,
134
+ variant,
137
135
  explodeTask,
138
136
  )
139
137
 
140
138
  val aarLibraries = getAarLibraries(artifacts, variantName)
141
139
 
140
+ ManifestTaskProcessor.process(project, variant, aarLibraries)
141
+ ResourceTaskProcessor.process(project, variant, aarLibraries, explodeTask)
142
+ AssetTaskProcessor.process(project, variant, aarLibraries, explodeTask)
143
+
144
+ /** ======= MERGE CLASSES =========*/
145
+ val mergeClassesTask = variantTaskProvider.mergeClasses(aarLibraries, explodeTask, variantName)
146
+ VariantHelper.getAsmTransformTask(project, capitalizedVariantName).configureEach {
147
+ it.dependsOn(mergeClassesTask)
148
+ }
149
+
142
150
  /**
143
151
  * Flat IDs to be put into the variant property, required for RClass Transformer
144
152
  */
145
153
  val packageIDs = aarLibraries.map { it.getPackageName() }
146
154
  VariantPackagesProperty.getVariantPackagesProperty().put(variantName, packageIDs)
147
155
 
148
- /** ======= MANIFEST MERGER =========*/
149
- ManifestTaskProcessor.process(variant, project, aarLibraries)
150
-
151
- /** ======= GENERATE RESOURCES =========*/
152
- ResourceTaskProcessor.process(variant, project, aarLibraries)
153
-
154
- /** ======= GENERATE ASSETS ========= */
155
- AssetTaskProcessor.process(variant, project, aarLibraries)
156
-
157
156
  /** ===== jniLibsProcessor ===== */
158
157
  val jniLibsProcessor = JNILibsProcessor(project)
159
- jniLibsProcessor.processJniLibs(aarLibraries, variantName)
158
+ jniLibsProcessor.processJniLibs(aarLibraries, variant)
160
159
 
161
160
  /** ===== proguardProcessor ===== */
162
161
  val proguardProcessor = ProguardProcessor(project)
163
162
  val proguardRules = aarLibraries.map { it.getProguardRules() }
164
- proguardProcessor.processConsumerFiles(proguardRules, capitalizedVariantName)
165
- proguardProcessor.processGeneratedFiles(proguardRules, capitalizedVariantName)
166
-
167
- /** ===== processDataBinding ===== */
168
- val bundleTask = variantTaskProvider.bundleTaskProvider(project, variantName)
169
- variantTaskProvider.processDataBinding(bundleTask, aarLibraries, variantName)
163
+ proguardProcessor.processFiles(proguardRules, variantName.capitalized(), explodeTask)
170
164
  }
171
165
  }
@@ -1,8 +1,9 @@
1
1
  package com.callstack.react.brownfield.plugin
2
2
 
3
+ import com.android.build.api.dsl.LibraryExtension
3
4
  import com.android.build.api.variant.LibraryAndroidComponentsExtension
4
- import com.android.build.gradle.LibraryExtension
5
5
  import com.callstack.react.brownfield.exceptions.NameSpaceNotFound
6
+ import com.callstack.react.brownfield.processors.VariantHelper
6
7
  import com.callstack.react.brownfield.utils.Extension
7
8
  import com.callstack.react.brownfield.utils.Utils
8
9
  import com.callstack.react.brownfield.utils.capitalized
@@ -42,14 +43,14 @@ object RNSourceSets {
42
43
  // Move the non-variant-specific configuration out of the loop
43
44
  androidExtension.sourceSets.named("main") { sourceSet ->
44
45
  // This path is not variant-specific, so it's added once here.
45
- sourceSet.java.srcDir("${getModuleBuildDir()}/generated/autolinking/src/main/java")
46
+ sourceSet.java.directories.add("${getModuleBuildDir()}/generated/autolinking/src/main/java")
46
47
  }
47
48
 
48
- // 2. Use the onVariants block to configure each variant
49
+ // 2. Use the onVariants block to wire RN bundle outputs via the Variant Sources API
49
50
  componentsExtension.onVariants { variant ->
50
51
  val variantName = variant.name
51
52
  val bundledAssetsVariantName =
52
- Utils.getBundledAssetsVariantName(
53
+ VariantHelper.getBundledAssetsVariantName(
53
54
  variantName = variantName,
54
55
  buildTypeName = variant.buildType,
55
56
  isDebuggable = variant.debuggable,
@@ -57,37 +58,24 @@ object RNSourceSets {
57
58
  val capitalizedBundledAssetsVariantName = bundledAssetsVariantName.capitalized()
58
59
  val appProject = getAppProject()
59
60
 
60
- // 3. Lazily configure the 'variant-specific' source set using .named()
61
- androidExtension.sourceSets.named(variantName) { sourceSet ->
62
- val bundlePathSegments =
63
- listOf(
64
- // outputs for RN <= 0.81
65
- "createBundle${capitalizedBundledAssetsVariantName}JsAndAssets",
66
- // outputs for RN >= 0.82
67
- "react/$bundledAssetsVariantName",
68
- )
69
- val updateResourcesPathSegment = Utils.getExpoUpdatesResourcesTaskName(variant.name)
70
-
71
- val appBuildDir = getAppBuildDir()
72
- sourceSet.assets.srcDirs(bundlePathSegments.map { "$appBuildDir/generated/assets/$it" })
73
- sourceSet.res.srcDirs(bundlePathSegments.map { "$appBuildDir/generated/res/$it" })
74
- if (extension.useStrippedSoFiles) {
75
- val capitalizedVariantName = variantName.capitalized()
76
- val libsDir = project.layout.projectDirectory.dir("libs$capitalizedVariantName")
77
- val copyTaskName = "copy${capitalizedVariantName}LibSources"
78
- sourceSet.jniLibs.srcDir(
79
- project.files(libsDir).builtBy(copyTaskName),
80
- )
81
- }
82
- if (Utils.hasExpoUpdates(appProject, variant.name)) {
83
- val updateResourcesTask = appProject.tasks.named(updateResourcesPathSegment)
84
- sourceSet.assets.srcDir(
85
- project.files("$appBuildDir/generated/assets/$updateResourcesPathSegment").builtBy(updateResourcesTask),
86
- )
87
- sourceSet.res.srcDir(
88
- project.files("$appBuildDir/generated/res/$updateResourcesPathSegment").builtBy(updateResourcesTask),
89
- )
90
- }
61
+ val bundlePathSegments =
62
+ listOf(
63
+ // outputs for RN <= 0.81
64
+ "createBundle${capitalizedBundledAssetsVariantName}JsAndAssets",
65
+ // outputs for RN >= 0.82
66
+ "react/$bundledAssetsVariantName",
67
+ )
68
+
69
+ val appBuildDir = getAppBuildDir()
70
+ bundlePathSegments.forEach { segment ->
71
+ variant.sources.assets?.addStaticSourceDirectory("$appBuildDir/generated/assets/$segment")
72
+ variant.sources.res?.addStaticSourceDirectory("$appBuildDir/generated/res/$segment")
73
+ }
74
+
75
+ if (Utils.hasExpoUpdates(appProject, variantName)) {
76
+ val updateResourcesPathSegment = VariantHelper.getExpoUpdatesResourcesTaskName(variant.name)
77
+ variant.sources.assets?.addStaticSourceDirectory("$appBuildDir/generated/assets/$updateResourcesPathSegment")
78
+ variant.sources.res?.addStaticSourceDirectory("$appBuildDir/generated/res/$updateResourcesPathSegment")
91
79
  }
92
80
  }
93
81
  }
@@ -1,29 +1,64 @@
1
1
  package com.callstack.react.brownfield.processors
2
2
 
3
- import com.android.build.gradle.LibraryExtension
4
- import com.android.build.gradle.api.LibraryVariant
3
+ import com.android.build.api.variant.LibraryVariant
4
+ import com.callstack.react.brownfield.shared.ExplodeAarTask
5
5
  import com.callstack.react.brownfield.utils.AndroidArchiveLibrary
6
+ import com.callstack.react.brownfield.utils.capitalized
7
+ import org.gradle.api.DefaultTask
6
8
  import org.gradle.api.Project
9
+ import org.gradle.api.file.ConfigurableFileCollection
10
+ import org.gradle.api.file.DirectoryProperty
11
+ import org.gradle.api.tasks.CacheableTask
12
+ import org.gradle.api.tasks.InputFiles
13
+ import org.gradle.api.tasks.OutputDirectory
14
+ import org.gradle.api.tasks.PathSensitive
15
+ import org.gradle.api.tasks.PathSensitivity
16
+ import org.gradle.api.tasks.TaskAction
17
+ import org.gradle.api.tasks.TaskProvider
18
+
19
+ @CacheableTask
20
+ abstract class CopyExplodedAssetsTask : DefaultTask() {
21
+ @get:InputFiles
22
+ @get:PathSensitive(PathSensitivity.RELATIVE)
23
+ abstract val inputAssetDirs: ConfigurableFileCollection
24
+
25
+ @get:OutputDirectory
26
+ abstract val outputDirectory: DirectoryProperty
27
+
28
+ @TaskAction
29
+ fun run() {
30
+ val out = outputDirectory.get().asFile
31
+ out.deleteRecursively()
32
+ out.mkdirs()
33
+ inputAssetDirs.forEach { assetDir ->
34
+ if (assetDir.exists()) {
35
+ assetDir.copyRecursively(out, overwrite = true)
36
+ }
37
+ }
38
+ }
39
+ }
7
40
 
8
41
  object AssetTaskProcessor {
9
42
  fun process(
10
- variant: LibraryVariant,
11
43
  project: Project,
44
+ variant: LibraryVariant,
12
45
  aarLibraries: List<AndroidArchiveLibrary>,
46
+ explodeTask: TaskProvider<ExplodeAarTask>,
13
47
  ) {
14
- val assetsTask = variant.mergeAssetsProvider.get()
15
-
16
- val androidExtension = project.extensions.getByName("android") as LibraryExtension
17
- assetsTask.doFirst {
18
- val filteredSourceSets =
19
- androidExtension.sourceSets.filter { it.name == variant.name }
20
-
21
- filteredSourceSets.forEach { sourceSet ->
22
- val filteredAarLibs = aarLibraries.filter { it.getAssetsDir().exists() }
23
- if (!filteredAarLibs.isEmpty()) {
24
- sourceSet.assets.srcDirs(filteredAarLibs.map { it.getAssetsDir() })
25
- }
48
+ val capitalized = variant.name.capitalized()
49
+ val assetDirs = aarLibraries.map { it.getAssetsDir() }
50
+ val copyAssetsTask =
51
+ project.tasks.register(
52
+ "copyExplodedAssetsFor$capitalized",
53
+ CopyExplodedAssetsTask::class.java,
54
+ ) { task ->
55
+ task.inputAssetDirs.setFrom(assetDirs)
56
+ task.dependsOn(explodeTask)
26
57
  }
27
- }
58
+
59
+ variant.sources.assets?.addGeneratedSourceDirectory(
60
+ copyAssetsTask,
61
+ CopyExplodedAssetsTask::outputDirectory,
62
+ )
28
63
  }
29
64
  }
@@ -1,9 +1,10 @@
1
1
  package com.callstack.react.brownfield.processors
2
2
 
3
- import com.android.build.gradle.api.LibraryVariant
3
+ import com.android.build.api.variant.LibraryVariant
4
4
  import com.callstack.react.brownfield.shared.BundleTaskProvider
5
5
  import com.callstack.react.brownfield.shared.ExplodeAarTask
6
6
  import com.callstack.react.brownfield.shared.UnresolvedArtifactInfo
7
+ import com.callstack.react.brownfield.utils.Extension
7
8
  import com.callstack.react.brownfield.utils.capitalized
8
9
  import org.gradle.api.Project
9
10
  import org.gradle.api.Task
@@ -20,25 +21,23 @@ object ExplodeTaskProvider {
20
21
  val variantTaskProvider = VariantTaskProvider(project)
21
22
  val bundleProvider = BundleTaskProvider(variantTaskProvider)
22
23
  val capitalizedVariantName = variant.name.capitalized()
24
+ val projectExt = project.extensions.getByType(Extension::class.java)
23
25
 
24
26
  return project.tasks.register(
25
27
  "explode${capitalizedVariantName}Aar",
26
28
  ExplodeAarTask::class.java,
27
29
  ) { task ->
28
30
  task.variantName.set(variant.name)
29
- task.minifyEnabled.set(variant.buildType.isMinifyEnabled)
30
31
 
31
32
  val finalArtifacts = mutableListOf<UnresolvedArtifactInfo>()
32
33
  artifacts.forEach { art ->
33
34
  var artifactPath = art.file
34
35
  if (art.isExpoPublishDependency != true) {
35
- val defaultTaskName = "bundle${capitalizedVariantName}Aar"
36
36
  val dependencyProject = project.project(":${art.moduleName}")
37
- val bundleTaskProvider = bundleProvider.getBundleTask(dependencyProject, variant)
38
- val taskName = bundleTaskProvider?.name ?: defaultTaskName
39
-
37
+ val bundleTaskProvider = bundleProvider.getBundleTask(dependencyProject, variant, projectExt.missingDimensionStrategies)
38
+ val taskName = bundleTaskProvider.name
40
39
  dependencyProject.tasks.findByName(taskName)?.let { task.dependsOn(it) }
41
- artifactPath = createArtifactFile(bundleTaskProvider?.get() as Task).absolutePath
40
+ artifactPath = createArtifactFile(bundleTaskProvider.get()).absolutePath
42
41
  }
43
42
 
44
43
  finalArtifacts.add(