diff --git a/.changeset/plenty-camels-pay.md b/.changeset/plenty-camels-pay.md new file mode 100644 index 00000000..fbd3464e --- /dev/null +++ b/.changeset/plenty-camels-pay.md @@ -0,0 +1,5 @@ +--- +'@callstack/react-native-brownfield': patch +--- + +fix: duplicated JNI libs on cold publish diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5501e984..35d7cca9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,6 +26,7 @@ jobs: expo56: ${{ steps.filter.outputs.expo56 }} androidapp: ${{ steps.filter.outputs.androidapp }} appleapp: ${{ steps.filter.outputs.appleapp }} + gradle-plugins: ${{ steps.filter.outputs.gradle-plugins }} ci: ${{ steps.filter.outputs.ci }} steps: - name: Checkout @@ -52,6 +53,8 @@ jobs: appleapp: - 'apps/AppleApp/**' - 'apps/brownfield-example-shared-tests/**' + gradle-plugins: + - 'gradle-plugins/**' ci: - '.github/**' @@ -139,6 +142,7 @@ jobs: needs.filter.outputs.expo56 == 'true' || needs.filter.outputs.androidapp == 'true' || needs.filter.outputs.packages == 'true' || + needs.filter.outputs.gradle-plugins == 'true' || needs.filter.outputs.ci == 'true' ) && (needs.build-lint.result == 'success' || needs.build-lint.result == 'skipped') @@ -169,6 +173,7 @@ jobs: needs.filter.outputs.rnapp == 'true' || needs.filter.outputs.androidapp == 'true' || needs.filter.outputs.packages == 'true' || + needs.filter.outputs.gradle-plugins == 'true' || needs.filter.outputs.ci == 'true' ) && (needs.build-lint.result == 'success' || needs.build-lint.result == 'skipped') diff --git a/apps/RNApp/android/build.gradle b/apps/RNApp/android/build.gradle index 1ba70d46..7d85a3eb 100644 --- a/apps/RNApp/android/build.gradle +++ b/apps/RNApp/android/build.gradle @@ -16,7 +16,7 @@ buildscript { classpath("com.android.tools.build:gradle") classpath("com.facebook.react:react-native-gradle-plugin") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") - classpath("com.callstack.react:brownfield-gradle-plugin:2.0.0-alpha04-SNAPSHOT") + classpath("com.callstack.react:brownfield-gradle-plugin:2.0.0-alpha05-SNAPSHOT") } } diff --git a/apps/scripts/prepare-android-build-gradle-for-ci.ts b/apps/scripts/prepare-android-build-gradle-for-ci.ts index d3b70199..577b13b7 100644 --- a/apps/scripts/prepare-android-build-gradle-for-ci.ts +++ b/apps/scripts/prepare-android-build-gradle-for-ci.ts @@ -9,7 +9,7 @@ if (!projectDirName) { const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); -const SNAPSHOT_VERSION = '2.0.0-alpha04-SNAPSHOT'; +const SNAPSHOT_VERSION = '2.0.0-alpha05-SNAPSHOT'; const targetPath = path.resolve( __dirname, '..', diff --git a/gradle-plugins/react/brownfield/gradle.properties b/gradle-plugins/react/brownfield/gradle.properties index 547ff8a5..93e5319e 100644 --- a/gradle-plugins/react/brownfield/gradle.properties +++ b/gradle-plugins/react/brownfield/gradle.properties @@ -1,6 +1,6 @@ PROJECT_ID=com.callstack.react.brownfield ARTIFACT_ID=brownfield-gradle-plugin -VERSION=2.0.0-alpha04 +VERSION=2.0.0-alpha05 GROUP=com.callstack.react IMPLEMENTATION_CLASS=com.callstack.react.brownfield.plugin.RNBrownfieldPlugin 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 02b1d059..fb2bf446 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 @@ -71,7 +71,14 @@ object RNSourceSets { val appBuildDir = getAppBuildDir() sourceSet.assets.srcDirs(bundlePathSegments.map { "$appBuildDir/generated/assets/$it" }) sourceSet.res.srcDirs(bundlePathSegments.map { "$appBuildDir/generated/res/$it" }) - sourceSet.jniLibs.srcDirs("libs${variantName.capitalized()}") + if (extension.useStrippedSoFiles) { + val capitalizedVariantName = variantName.capitalized() + val libsDir = project.layout.projectDirectory.dir("libs$capitalizedVariantName") + val copyTaskName = "copy${capitalizedVariantName}LibSources" + sourceSet.jniLibs.srcDir( + project.files(libsDir).builtBy(copyTaskName), + ) + } if (Utils.hasExpoUpdates(appProject, variant.name)) { val updateResourcesTask = appProject.tasks.named(updateResourcesPathSegment) sourceSet.assets.srcDir( diff --git a/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/processors/JNILibsProcessor.kt b/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/processors/JNILibsProcessor.kt index a8bdc50d..7ec7d3c2 100644 --- a/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/processors/JNILibsProcessor.kt +++ b/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/processors/JNILibsProcessor.kt @@ -25,11 +25,9 @@ class JNILibsProcessor(val project: Project) { } val androidExtension = project.extensions.getByName("android") as LibraryExtension - val copyTask = copySoLibsTask(variantName) + copySoLibsTask(variantName) mergeJniLibsTask.configure { - it.dependsOn(copyTask) - it.doFirst { val projectExt = project.extensions.getByType(Extension::class.java) val existingJNILibs = diff --git a/packages/react-native-brownfield/src/expo-config-plugin/android/__tests__/gradleHelpers.test.ts b/packages/react-native-brownfield/src/expo-config-plugin/android/__tests__/gradleHelpers.test.ts index c06e968d..f11ac0bb 100644 --- a/packages/react-native-brownfield/src/expo-config-plugin/android/__tests__/gradleHelpers.test.ts +++ b/packages/react-native-brownfield/src/expo-config-plugin/android/__tests__/gradleHelpers.test.ts @@ -16,7 +16,7 @@ describe('gradleHelpers', () => { }`; expect(modifyRootBuildGradle(contents)).toContain( - 'classpath("com.callstack.react:brownfield-gradle-plugin:2.0.0-alpha04")' + 'classpath("com.callstack.react:brownfield-gradle-plugin:2.0.0-alpha05")' ); }); diff --git a/packages/react-native-brownfield/src/expo-config-plugin/android/utils/constants.ts b/packages/react-native-brownfield/src/expo-config-plugin/android/utils/constants.ts index 4571fff3..37bdc5fd 100644 --- a/packages/react-native-brownfield/src/expo-config-plugin/android/utils/constants.ts +++ b/packages/react-native-brownfield/src/expo-config-plugin/android/utils/constants.ts @@ -1,2 +1,2 @@ -export const BROWNFIELD_PLUGIN_VERSION = '2.0.0-alpha04'; +export const BROWNFIELD_PLUGIN_VERSION = '2.0.0-alpha05'; export const brownfieldGradlePluginDependency = `classpath("com.callstack.react:brownfield-gradle-plugin:${BROWNFIELD_PLUGIN_VERSION}")`; diff --git a/scripts/__tests__/generate-brownfield-gradle-plugin-release-notes.test.ts b/scripts/__tests__/generate-brownfield-gradle-plugin-release-notes.test.ts index 620fd8c2..8effb8c6 100644 --- a/scripts/__tests__/generate-brownfield-gradle-plugin-release-notes.test.ts +++ b/scripts/__tests__/generate-brownfield-gradle-plugin-release-notes.test.ts @@ -25,14 +25,14 @@ test('supports prerelease versions when finding the previous plugin tag', () => const previousTag = findPreviousPluginTag( [ 'brownfield-gradle-plugin/v2.0.0-alpha01', - 'brownfield-gradle-plugin/v2.0.0-alpha04', + 'brownfield-gradle-plugin/v2.0.0-alpha05', 'brownfield-gradle-plugin/v2.0.0-beta01', 'brownfield-gradle-plugin/v2.0.0', ], '2.0.0-beta01' ); - assert.equal(previousTag, 'brownfield-gradle-plugin/v2.0.0-alpha04'); + assert.equal(previousTag, 'brownfield-gradle-plugin/v2.0.0-alpha05'); }); test('treats a stable release as newer than its prereleases', () => {