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

Execution failed for task ':app:checkReleaseDuplicateClasses' for android #199

Open
vr7bd opened this issue Jul 28, 2024 · 10 comments
Open
Labels
bug Something isn't working

Comments

@vr7bd
Copy link

vr7bd commented Jul 28, 2024

Description

After upgrading to 6.2.0, I'm unable to build my project with this error

Execution failed for task ':app:checkReleaseDuplicateClasses'.

> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable

   > Duplicate class org.bouncycastle.LICENSE found in modules bcprov-jdk15on-1.70.jar -> jetified-bcprov-jdk15on-1.70 (org.bouncycastle:bcprov-jdk15on:1.70) and bcprov-jdk15to18-1.70.jar -> jetified-bcprov-jdk15to18-1.70 (org.bouncycastle:bcprov-jdk15to18:1.70)

I traced it and found out that this occurs if expo-updates is installed and react-native-tcp-socket is on version 6.2.0. It's because of the commit 054c789 where these dependencies are added

    // Bouncy Castle dependencies
    implementation 'org.bouncycastle:bcprov-jdk15on:1.70'
    implementation 'org.bouncycastle:bcpkix-jdk15on:1.70'

Steps to reproduce

Steps to reproduce the behavior:

  1. Create a new expo project and install expo updates
  2. Install the latest version of react-native-tcp-socket
  3. npx expo prebuild && npx expo run:android
@vr7bd vr7bd added the bug Something isn't working label Jul 28, 2024
@regulad
Copy link

regulad commented Aug 25, 2024

Go into your ./android/app/build.gradle and add this in the dependencies block. It will ignore the bad version of bouncycastle.

    implementation(project(':react-native-tcp-socket')) {
        exclude group: 'org.bouncycastle'
    }

@siarheipashkevich
Copy link

The same issue!

@regulad how to do your solution for Expo EAS builds?

@siarheipashkevich
Copy link

@vr7bd did you solve this issue?

@vr7bd
Copy link
Author

vr7bd commented Sep 8, 2024

@vr7bd did you solve this issue?

Not exactly. This works but as pointed out, for EAS builds, this is not a good solution. So I just downgraded to 6.0.1 (if I remember correctly), which is the version prior to the commit of the dependency

@ShaneZhengNZ
Copy link

ShaneZhengNZ commented Sep 10, 2024

This can be solved by a custom Expo config plugin. I have done this for my project. I can open source it.

@vr7bd @siarheipashkevich

@siarheipashkevich
Copy link

@ShaneZhengNZ please share it if it is possible

@ShaneZhengNZ
Copy link

@siarheipashkevich sure thing. I should have this done in the next a few days. I will pin you when the package is available to use.

@ShaneZhengNZ
Copy link

with-react-native-tcp-socket

@vr7bd @siarheipashkevich

@siarheipashkevich
Copy link

@ShaneZhengNZ thanks! How do you think is it possible to "patch" this package for avoiding this issue using https://www.npmjs.com/package/patch-package?

@ShaneZhengNZ
Copy link

ShaneZhengNZ commented Sep 12, 2024

I have used yarn patch (similar thing) for patching javascript code or native code before, but never done the build.gradle.
Worth a shot I guess?

-- Edit --
In fact, maybe not? The build.gradle file for this repo is possibly ok, but when we build our application, it conflicts with the other package's build.gradle? not sure. I am not an expert about gradle, so don't take my advice.

All I have done is implemented the suggested solution from regulad with Expo Config plugin.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants