realm / realm-js

Realm is a mobile database: an alternative to SQLite & key-value stores
https://realm.io
Apache License 2.0
5.81k stars 577 forks source link

Build Failure Due to Duplicate libreactnative.so File in Realm and React-Android #6918

Closed Jean-Diniz closed 2 weeks ago

Jean-Diniz commented 3 weeks ago

How frequently does the bug occur?

Always

Description

When building the app with Gradle, the build process fails due to a duplicate libreactnative.so file. I expected the app to build and install without issues, but instead, the build fails with an error indicating that there are two instances of libreactnative.so, one from the realm library and another from react-android. This conflict prevents the app from installing.

Stacktrace & log output

Execution failed for task ':app:mergeDebugNativeLibs'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.MergeNativeLibsTask$MergeNativeLibsTaskWorkAction 
> 2 files found with path 'lib/arm64-v8a/libreactnative.so' from inputs: 
-/home/foobar/project/node_modules/realm/binding/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/arm64-v8a/libreactnative.so 
- /home/foobar/.gradle/caches/8.10.2/transforms/095f498f1545b2a557a515b33db49b37/transformed/jetified-react-android-0.76.1-debug/jni/arm64-v8a/libreactnative.so

Can you reproduce the bug?

Always

Reproduction Steps

{
  "name": "foobar",
  "version": "0.0.0",
  "private": true,
  "packageManager": "yarn@3.6.4",
  "engines": {
    "node": "18.17.0"
  },
  "scripts": {
    "android": "APP_ENV=development react-native run-android",
  },
  "dependencies": {
    "react": "18.3.1",
    "react-native": "0.76.1",
    "realm": "12.13.2",
  },
  "devDependencies": {
    "@babel/core": "7.25.2",
    "@babel/preset-env": "7.25.3",
    "@babel/preset-typescript": "7.18.6",
    "@babel/runtime": "7.25.0",
    "@react-native-community/cli": "15.0.0",
    "@react-native-community/cli-platform-android": "15.0.0",
    "@react-native-community/cli-platform-ios": "15.0.0",
    "@react-native/babel-preset": "0.76.1",
    "@react-native/eslint-config": "0.76.1",
    "@react-native/metro-config": "0.76.1",
    "@react-native/typescript-config": "0.76.1",
  }
}

Version

12.13.2

What services are you using?

Local Database only

Are you using encryption?

No

Platform OS and version(s)

Android 12

Build environment

OS: [Ubuntu 22.04] Node.js: 18.17.0 React Native: 0.76.1 Gradle: 8.10.2 Java 17.0.7-zulu

Cocoapods version

No response

sync-by-unito[bot] commented 3 weeks ago

➤ PM Bot commented:

Jira ticket: RJS-2916

mtalhadev commented 3 weeks ago

For temporary fixing it, you can do this:

./node_modules/realm/binding/android/build.gradle

Add this one line in the excludes array. packagingOptions { excludes = [ "META-INF", "META-INF/", "/libc++_shared.so", "/libfbjni.so", "/libjsi.so", "/libreactnativejni.so", "/libturbomodulejsijni.so", "**/libreactnative.so", //Add this line ] }

joergjaeckel commented 2 weeks ago

For whatever reason I also had to change "/libjsi.so" to "**/libjsi.so".

edritech93 commented 2 weeks ago

still issue "react-native": "0.76.1", "realm": "12.13.2",

kraenhansen commented 2 weeks ago

@edritech93 right. The PR is merged, however this is yet to be released.

kraenhansen commented 1 week ago

The fix for this has been released as v12.14.0. Please help us take it for a spin 🙏