Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Android build starts failing after updating to RN 0.58 #80

Closed
mars-lan opened this issue Jan 27, 2019 · 27 comments
Closed

Android build starts failing after updating to RN 0.58 #80

mars-lan opened this issue Jan 27, 2019 · 27 comments

Comments

@mars-lan
Copy link

Issue Description

Followed the instructions at https://github.com/react-native-community/jsc-android-buildscripts#how-to-use-it-with-my-react-native-app and was able to get it to build for RN 0.57. After updating to RN 0.58, react-native run-android starts failing with the following error

> Task :app:transformNativeLibsWithMergeJniLibsForDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformNativeLibsWithMergeJniLibsForDebug'.
> More than one file was found with OS independent path 'lib/x86_64/libjsc.so'

Version, config, any additional info

236355.1.1

@legion-zver
Copy link

+1

@experiment322
Copy link

The solution is in README.md.

In android/app/build.gradle add the following under android:

android {
    ...
+   packagingOptions {
+       pickFirst '**/libjsc.so'
+   }
}

@mars-lan
Copy link
Author

@experiment322 thanks for pointing that out. This fixed the build issue.

@rvolution
Copy link

Had the same issue in a clean project using react-native 0.58.3 and jsc 236355.1.1, the README suggest to add:

packagingOptions { pickFirst '**/libgnustl_shared.so' }

This didn't work for me, but the solution provided by @experiment322 did.

@jshearer
Copy link

@rvolution are you sure your app is actually using jsc 236355? I suspect it's not, and you just didn't notice. Do native Proxy objects work?

@rvolution
Copy link

@jshearer I don't use proxies directly in my app but i'm using MobX 5 and it's working fine.

This is the error that i got when attempting to compile:
More than one file was found with OS independent path 'lib/x86_64/libjsc.so'

It was resolved by adding:

packagingOptions {
    pickFirst '**/libjsc.so'
}

It seems that at some moment this was on the readme, but currently it provides a solution for a similar conflict with a different file armeabi-v7a/libgnustl_shared.so

This should be added to the readme to save others gradle noobs like me of the struggle :)

@shubham-raitka
Copy link

I have tried everything above mentioned, but it's still not working for me.
react-native: 0.58.3
jsc-android: 236355.1.1
and MobX 5

@janakg
Copy link

janakg commented Feb 10, 2019

any updates on this? Thanks.

@nonotest
Copy link

I had to use:

packagingOptions {
       pickFirst 'lib/x86/libc++_shared.so'
       pickFirst 'lib/x86_64/libjsc.so'
       pickFirst 'lib/arm64-v8a/libjsc.so'
       pickFirst 'lib/arm64-v8a/libc++_shared.so'
       pickFirst 'lib/x86_64/libc++_shared.so'
       pickFirst 'lib/armeabi-v7a/libc++_shared.so'
   }

if that helps

@GustavoHGS
Copy link

packagingOptions {
pickFirst 'lib/x86/libc++_shared.so'
pickFirst 'lib/x86_64/libjsc.so'
pickFirst 'lib/arm64-v8a/libjsc.so'
pickFirst 'lib/arm64-v8a/libc++_shared.so'
pickFirst 'lib/x86_64/libc++_shared.so'
pickFirst 'lib/armeabi-v7a/libc++_shared.so'
}

This worked for me, thx @nonotest :D

@migueldaipre
Copy link

I had to use:

packagingOptions {
       pickFirst 'lib/x86/libc++_shared.so'
       pickFirst 'lib/x86_64/libjsc.so'
       pickFirst 'lib/arm64-v8a/libjsc.so'
       pickFirst 'lib/arm64-v8a/libc++_shared.so'
       pickFirst 'lib/x86_64/libc++_shared.so'
       pickFirst 'lib/armeabi-v7a/libc++_shared.so'
   }

if that helps

Worked for me, thanks !!!

@sxqnicholas96
Copy link

sxqnicholas96 commented May 16, 2019

Hi the packagingOptions solution works when assembling debug builds with:

./gradlew assembleDebug

However it doesn't seem to work when assembling a test build with:

./gradlew assembleAndroidTest

Anybody here knows the subtleties between assembling a debug build and assembling a test build in gradle? Is there a workaround for this?

@donghoon-song
Copy link

I had to use:

packagingOptions {
       pickFirst 'lib/x86/libc++_shared.so'
       pickFirst 'lib/x86_64/libjsc.so'
       pickFirst 'lib/arm64-v8a/libjsc.so'
       pickFirst 'lib/arm64-v8a/libc++_shared.so'
       pickFirst 'lib/x86_64/libc++_shared.so'
       pickFirst 'lib/armeabi-v7a/libc++_shared.so'
   }

if that helps

This worked for me Thx!!!

@pradumanDa
Copy link

I had to use:

packagingOptions {
       pickFirst 'lib/x86/libc++_shared.so'
       pickFirst 'lib/x86_64/libjsc.so'
       pickFirst 'lib/arm64-v8a/libjsc.so'
       pickFirst 'lib/arm64-v8a/libc++_shared.so'
       pickFirst 'lib/x86_64/libc++_shared.so'
       pickFirst 'lib/armeabi-v7a/libc++_shared.so'
   }

if that helps

This worked for me. Thank you so much.

@herisusantuy
Copy link

packagingOptions {
pickFirst 'lib/x86/libc++_shared.so'
pickFirst 'lib/x86_64/libjsc.so'
pickFirst 'lib/arm64-v8a/libjsc.so'
pickFirst 'lib/arm64-v8a/libc++_shared.so'
pickFirst 'lib/x86_64/libc++_shared.so'
pickFirst 'lib/armeabi-v7a/libc++_shared.so'
}

I had to use:

packagingOptions {
       pickFirst 'lib/x86/libc++_shared.so'
       pickFirst 'lib/x86_64/libjsc.so'
       pickFirst 'lib/arm64-v8a/libjsc.so'
       pickFirst 'lib/arm64-v8a/libc++_shared.so'
       pickFirst 'lib/x86_64/libc++_shared.so'
       pickFirst 'lib/armeabi-v7a/libc++_shared.so'
   }

if that helps

It's worked for me

@shercoder
Copy link

This issue is closed but wanted to share what I discovered that you can also use pickFirsts = [...] instead of multiple pickFirst.

@edcrampin
Copy link

Hi the packagingOptions solution works when assembling debug builds with:

./gradlew assembleDebug

However it doesn't seem to work when assembling a test build with:

./gradlew assembleAndroidTest

Anybody here knows the subtleties between assembling a debug build and assembling a test build in gradle? Is there a workaround for this?

@sxqnicholas96 Did you find anything to fix assembleAndroidTest using this method?

@nileshpandey3
Copy link

I had to use:

packagingOptions {
       pickFirst 'lib/x86/libc++_shared.so'
       pickFirst 'lib/x86_64/libjsc.so'
       pickFirst 'lib/arm64-v8a/libjsc.so'
       pickFirst 'lib/arm64-v8a/libc++_shared.so'
       pickFirst 'lib/x86_64/libc++_shared.so'
       pickFirst 'lib/armeabi-v7a/libc++_shared.so'
   }

if that helps

This helped me too RN 0.60.5

@porquelaquiero
Copy link

I had to use:

packagingOptions {
       pickFirst 'lib/x86/libc++_shared.so'
       pickFirst 'lib/x86_64/libjsc.so'
       pickFirst 'lib/arm64-v8a/libjsc.so'
       pickFirst 'lib/arm64-v8a/libc++_shared.so'
       pickFirst 'lib/x86_64/libc++_shared.so'
       pickFirst 'lib/armeabi-v7a/libc++_shared.so'
   }

if that helps

great!!! thanks a lot. it helped me. RN 0.60.5

@JailsonSousa
Copy link

JailsonSousa commented Oct 11, 2019

I had to use:

packagingOptions {
       pickFirst 'lib/x86/libc++_shared.so'
       pickFirst 'lib/x86_64/libjsc.so'
       pickFirst 'lib/arm64-v8a/libjsc.so'
       pickFirst 'lib/arm64-v8a/libc++_shared.so'
       pickFirst 'lib/x86_64/libc++_shared.so'
       pickFirst 'lib/armeabi-v7a/libc++_shared.so'
   }

if that helps

It's worked for me. RN 0.61.2 .

@asielykey
Copy link

I had to use:

packagingOptions {
       pickFirst 'lib/x86/libc++_shared.so'
       pickFirst 'lib/x86_64/libjsc.so'
       pickFirst 'lib/arm64-v8a/libjsc.so'
       pickFirst 'lib/arm64-v8a/libc++_shared.so'
       pickFirst 'lib/x86_64/libc++_shared.so'
       pickFirst 'lib/armeabi-v7a/libc++_shared.so'
   }

if that helps

It's worked for me. RN 0.61.2 .

@issamabdelkrim
Copy link

add this to app/build.gradle
packagingOptions {
pickFirst 'lib/x86/libswscale.so'
pickFirst 'lib/x86/libavcodec.so'
pickFirst 'lib/x86/libavformat.so'
pickFirst 'lib/x86/libavutil.so'
pickFirst 'lib/x86_64/libavutil.so'
pickFirst 'lib/x86_64/libavcodec.so'
pickFirst 'lib/x86_64/libswscale.so'
pickFirst 'lib/x86_64/libavformat.so'
pickFirst 'lib/arm64-v8a/libavcodec.so'
pickFirst 'lib/arm64-v8a/libavformat.so'
pickFirst 'lib/arm64-v8a/libavutil.so'
pickFirst 'lib/arm64-v8a/libswscale.so'
pickFirst 'lib/armeabi-v7a/libavutil.so'
pickFirst 'lib/armeabi-v7a/libavformat.so'
pickFirst 'lib/armeabi-v7a/libavcodec.so'
pickFirst 'lib/armeabi-v7a/libswscale.so'

}

@aji1904
Copy link

aji1904 commented Dec 8, 2019

add this to app/build.gradle
packagingOptions {
pickFirst 'lib/x86/libswscale.so'
pickFirst 'lib/x86/libavcodec.so'
pickFirst 'lib/x86/libavformat.so'
pickFirst 'lib/x86/libavutil.so'
pickFirst 'lib/x86_64/libavutil.so'
pickFirst 'lib/x86_64/libavcodec.so'
pickFirst 'lib/x86_64/libswscale.so'
pickFirst 'lib/x86_64/libavformat.so'
pickFirst 'lib/arm64-v8a/libavcodec.so'
pickFirst 'lib/arm64-v8a/libavformat.so'
pickFirst 'lib/arm64-v8a/libavutil.so'
pickFirst 'lib/arm64-v8a/libswscale.so'
pickFirst 'lib/armeabi-v7a/libavutil.so'
pickFirst 'lib/armeabi-v7a/libavformat.so'
pickFirst 'lib/armeabi-v7a/libavcodec.so'
pickFirst 'lib/armeabi-v7a/libswscale.so'

}

work for me, thanks a lot

@venkatram090993
Copy link

add this to app/build.gradle
packagingOptions {
pickFirst 'lib/x86/libswscale.so'
pickFirst 'lib/x86/libavcodec.so'
pickFirst 'lib/x86/libavformat.so'
pickFirst 'lib/x86/libavutil.so'
pickFirst 'lib/x86_64/libavutil.so'
pickFirst 'lib/x86_64/libavcodec.so'
pickFirst 'lib/x86_64/libswscale.so'
pickFirst 'lib/x86_64/libavformat.so'
pickFirst 'lib/arm64-v8a/libavcodec.so'
pickFirst 'lib/arm64-v8a/libavformat.so'
pickFirst 'lib/arm64-v8a/libavutil.so'
pickFirst 'lib/arm64-v8a/libswscale.so'
pickFirst 'lib/armeabi-v7a/libavutil.so'
pickFirst 'lib/armeabi-v7a/libavformat.so'
pickFirst 'lib/armeabi-v7a/libavcodec.so'
pickFirst 'lib/armeabi-v7a/libswscale.so'

}

worked for me..... Thanks a lot

@Sohaib76
Copy link

Sohaib76 commented Aug 4, 2020

I had to use:

packagingOptions {
       pickFirst 'lib/x86/libc++_shared.so'
       pickFirst 'lib/x86_64/libjsc.so'
       pickFirst 'lib/arm64-v8a/libjsc.so'
       pickFirst 'lib/arm64-v8a/libc++_shared.so'
       pickFirst 'lib/x86_64/libc++_shared.so'
       pickFirst 'lib/armeabi-v7a/libc++_shared.so'
   }

if that helps

I was stuck , Thanks for your help
This method really worked

@marquinmpfs
Copy link

marquinmpfs commented Aug 7, 2020

It worked for me like this:

adb devices

then I run npx react-native run-android

@hungvu193
Copy link

I had to use:

packagingOptions {
       pickFirst 'lib/x86/libc++_shared.so'
       pickFirst 'lib/x86_64/libjsc.so'
       pickFirst 'lib/arm64-v8a/libjsc.so'
       pickFirst 'lib/arm64-v8a/libc++_shared.so'
       pickFirst 'lib/x86_64/libc++_shared.so'
       pickFirst 'lib/armeabi-v7a/libc++_shared.so'
   }

if that helps

It's worked for me. RN 0.61.2 .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests