Skip to content

Commit c34ef58

Browse files
nickfujitafacebook-github-bot
authored andcommitted
Fix: Android react.gradle VmCleanup when packaging as library (#33179)
Summary: When packaging a react app as an android library with the enableVmCleanup flag not set to false, an error occurs since the "package${targetName}" task can not be found. This PR adds a simple null check, similar to what is being done for the sTask and mTask just below it to prevent the error. ## Changelog <!-- Help reviewers and the release process by writing your own changelog entry. For an example, see: https://github.com/facebook/react-native/wiki/Changelog --> [Android] [Fixed] - Fixes android build error when compiling as library Pull Request resolved: #33179 Test Plan: Compile project as library (com.android.library), and should not trigger and error with these changes. Would also like to have this fix cherry-pick'd to release 0.67 after merging. Reviewed By: ShikaSD Differential Revision: D34475934 Pulled By: cortinico fbshipit-source-id: ce6ce43960c4b388c4b1da49a9a6e21fd3bf8e16
1 parent ece1dd4 commit c34ef58

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

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

+4-4
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ internal fun Project.configureReactTasks(variant: BaseVariant, config: ReactExte
126126
// Android configuration
127127
variant.registerGeneratedResFolders(generatedResFolders)
128128

129-
val packageTask =
129+
val packageTask: TaskProvider<out Task>? =
130130
when (variant) {
131131
is ApplicationVariant -> variant.packageApplicationProvider
132132
is LibraryVariant -> variant.packageLibraryProvider
@@ -154,11 +154,11 @@ internal fun Project.configureReactTasks(variant: BaseVariant, config: ReactExte
154154
it.enabled = bundleEnabled
155155
}
156156

157-
packageTask.dependsOn(currentCopyResTask)
157+
packageTask?.dependsOn(currentCopyResTask)
158158
preBundleTask.dependsOn(currentCopyResTask)
159159
}
160160

161-
packageTask.configure {
161+
packageTask?.configure {
162162
if (config.enableVmCleanup.get()) {
163163
val libDir = "$buildDir/intermediates/transforms/"
164164
val targetVariant = ".*/transforms/[^/]*/${variant.name}/.*".toRegex()
@@ -207,7 +207,7 @@ internal fun Project.configureReactTasks(variant: BaseVariant, config: ReactExte
207207
// from Android plugin 4.1+.
208208
// This ensures to copy the bundle file before mergeResources task starts
209209
mergeResourcesTask.dependsOn(currentAssetsCopyTask)
210-
packageTask.dependsOn(currentAssetsCopyTask)
210+
packageTask?.dependsOn(currentAssetsCopyTask)
211211
preBundleTask.dependsOn(currentAssetsCopyTask)
212212
}
213213

react.gradle

+4-2
Original file line numberDiff line numberDiff line change
@@ -395,8 +395,10 @@ afterEvaluate {
395395

396396
if (enableVmCleanup) {
397397
def task = tasks.findByName("package${targetName}")
398-
def transformsLibDir = "$buildDir/intermediates/transforms/"
399-
task.doFirst { vmSelectionAction(transformsLibDir) }
398+
if (task != null) {
399+
def transformsLibDir = "$buildDir/intermediates/transforms/"
400+
task.doFirst { vmSelectionAction(transformsLibDir) }
401+
}
400402

401403
def sTask = tasks.findByName("strip${targetName}DebugSymbols")
402404
if (sTask != null) {

0 commit comments

Comments
 (0)