react-native-brownfield icon indicating copy to clipboard operation
react-native-brownfield copied to clipboard

Build Failure: Duplicate Resources Error During AAR Packaging with React Native Libraries

Open hidaeraldo opened this issue 6 months ago • 2 comments

I'm experiencing a build failure when trying to create an AAR file using the React Native Brownfield plugin. The build process fails with a "Duplicate resources" error during the packageDebugResources task.

Error Details: Execution failed for task ':rnbrownfieldLibrary:packageDebugResources'.

[color/red] */brownfield-test/react-native-brownfield/android/rnbrownfieldLibrary/build/intermediates/exploded-aar/rnbrownfield/react-native-video/unspecified/debug/res/values/values.xml [color/red] */brownfield-test/react-native-brownfield/android/rnbrownfieldLibrary/build/intermediates/exploded-aar/rnbrownfield/react-native-firebase_messaging/unspecified/debug/res/values/values.xml: Error: Duplicate resources

Environment:

  • React Native Brownfield Plugin: @callstack/react-native-brownfield@^1.2.0
  • React Native Version: 0.77.2
  • Android Compile SDK: 35
  • Min SDK: 24
  • Build Tool: Gradle with Kotlin DSL

Steps to Reproduce:

  1. Clone this example repo https://github.com/hidaeraldo/brownfield-test
  2. cd react-native-brownfield folder
  3. Install react-native-video and @react-native-firebase/messaging as dependencies
  4. Attempt to build the AAR file using ./gradlew publishToMavenLocal or similar command
  5. Build fails during the packageDebugResources task

Current Configuration: The issue occurs in the rnbrownfieldLibrary module with the following build.gradle.kts configuration:

plugins {
    id("com.android.library")
    id("org.jetbrains.kotlin.android")
    id("com.facebook.react")
    id("com.callstack.react.brownfield")
    `maven-publish`
}

react {
    autolinkLibrariesWithApp()
}

Dependencies Involved:

  • react-native-video: ^6.16.1
  • @react-native-firebase/messaging: ^21.4.1

Actual Behavior: Build fails with duplicate resources error, preventing the AAR from being generated.

Workaround Attempts:

  • Tried adding resource exclusions in the packaging block but the issue persists
  • The error occurs even with the default autolinking configuration

hidaeraldo avatar Aug 14 '25 12:08 hidaeraldo

Thanks for raising this. I will look into this over a few days 👍

hurali97 avatar Aug 21 '25 15:08 hurali97

packaging { jniLibs { if (!hermesEnabled) { excludes += "lib/x86/libjsctooling.so" excludes += "lib/x86_64/libjsctooling.so" excludes += "lib/armeabi-v7a/libjsctooling.so" excludes += "lib/arm64-v8a/libjsctooling.so" }

        // Pick first libworklets.so to resolve conflicts between
        // react-native-reanimated and react-native-worklets
        pickFirsts += "lib/armeabi-v7a/libworklets.so"
        pickFirsts += "lib/arm64-v8a/libworklets.so"
        pickFirsts += "lib/x86/libworklets.so"
        pickFirsts += "lib/x86_64/libworklets.so"
    }
}

in your build.gradle.kts add inside android then add below code as your library name publishing inside afterEvaluate { listOf("mergeReleaseJniLibFolders", "mergeDebugJniLibFolders").forEach { taskName -> tasks.named(taskName) { doFirst { // Remove duplicate libworklets.so from react-native-worklets to avoid conflicts // with react-native-reanimated which also provides the same library fileTree("$buildDir/intermediates/exploded-aar/Loyalty_Cobrand/react-native-worklets") { include("/jni//libworklets.so") }.forEach { file -> println("Removing duplicate libworklets.so: ${file.path}") file.delete() } } } } }

VigneshPandianB25 avatar Sep 20 '25 08:09 VigneshPandianB25