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

Unable to exclude from react native in android #32713

Closed
Satendra124 opened this issue Dec 6, 2021 · 4 comments
Closed

Unable to exclude from react native in android #32713

Satendra124 opened this issue Dec 6, 2021 · 4 comments
Labels
Platform: Android Android applications. Platform: Linux Building on Linux. Resolution: Answered When the issue is resolved with a simple answer Stale There has been a lack of activity on this issue and it may be closed soon.

Comments

@Satendra124
Copy link

Description

While normally using

implementation ("any.other.dependency"){
      exclude group:"com.repeat.dependency",module:"repeat"
    }

Works but when I do

implementation ("com.facebook.react:react-native:+"){
      exclude group:"com.facebook.yoga",module:"yoga"
    }
implementation ('com.facebook.yoga.android:yoga-layout:1.19.0')

it gives me this error

BUILD FAILED in 14s

error Failed to install the app. Make sure you have the Android development environment set up: https://facebook.github.io/react-native/docs/getting-started.html#android-development-environment. Run CLI with --verbose flag for more details.
Error: Command failed: ./gradlew app:installDebug -PreactNativeDevServerPort=8081
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:checkDebugDuplicateClasses'.
> 1 exception was raised by workers:
  java.lang.RuntimeException: java.lang.RuntimeException: Duplicate class com.facebook.proguard.annotations.DoNotStrip found in modules classes.jar (com.facebook.react:react-native:0.61.5) and proguard-annotations-1.19.0.jar (com.facebook.yoga:proguard-annotations:1.19.0)
  Duplicate class com.facebook.yoga.LayoutPassReason found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaAlign found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaBaselineFunction found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaConfig found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaConstants found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaDimension found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaDirection found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaDisplay found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaEdge found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaExperimentalFeature found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaFlexDirection found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaJustify found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaLayoutType found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaLogLevel found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaLogger found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaMeasureFunction found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaMeasureMode found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaMeasureOutput found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaNative found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaNode found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaNodeJNIBase found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaNodeJNIBase$1 found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaNodeJNIFinalizer found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaNodeType found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaOverflow found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaPositionType found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaPrintOptions found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaStyleInputs found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaUnit found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaValue found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaValue$1 found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)
  Duplicate class com.facebook.yoga.YogaWrap found in modules classes.jar (com.facebook.react:react-native:0.61.5) and classes.jar (com.facebook.yoga:yoga:1.19.0)

It is important to have this com.facebook.yoga.android:yoga-layout:1.19.0 since react native's yoga doesnt contain some classes which are present in normal yoga dependency.

Version

0.61.5

Output of react-native info

warn The following packages use deprecated "rnpm" config that will stop working from next release:

  • react-native-orientation: https://github.com/yamill/react-native-orientation#readme
    Please notify their maintainers about it. You can find more details at https://github.com/react-native-community/cli/blob/master/docs/configuration.md#migration-guide.
    info Fetching system and libraries information...
    (node:44401) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
    (Use node --trace-warnings ... to show where the warning was created)
    System:
    OS: Linux 5.4 Ubuntu 20.04.3 LTS (Focal Fossa)
    CPU: (8) x64 Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
    Memory: 285.34 MB / 11.60 GB
    Shell: 5.0.17 - /bin/bash
    Binaries:
    Node: 14.17.1 - ~/.nvm/versions/node/v14.17.1/bin/node
    Yarn: 1.22.17 - ~/.nvm/versions/node/v14.17.1/bin/yarn
    npm: 8.1.2 - ~/.nvm/versions/node/v14.17.1/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
    Android SDK:
    API Levels: 25, 27, 28, 29, 30, 31
    Build Tools: 28.0.3, 29.0.1, 29.0.2, 30.0.2, 30.0.3
    System Images: android-30 | Google APIs Intel x86 Atom
    npmPackages:
    react: 16.9.0 => 16.9.0
    react-native: 0.61.5 => 0.61.5

Steps to reproduce

  • Create a react native app.
  • Go to app level build.gradle file and add
    implementation ('com.facebook.yoga.android:yoga-layout:1.19.0')
    Then the duplicate error occurs
    Which wasn't resolved with
implementation ("com.facebook.react:react-native:+"){
      exclude group:"com.facebook.yoga",module:"yoga"
    }
implementation ('com.facebook.yoga.android:yoga-layout:1.19.0')

Snack, code example, screenshot, or link to a repository

No response

@react-native-bot react-native-bot added Platform: Android Android applications. Platform: Linux Building on Linux. labels Dec 6, 2021
@cortinico
Copy link
Contributor

java.lang.RuntimeException: java.lang.RuntimeException: Duplicate class com.facebook.proguard.annotations.DoNotStrip found in modules classes.jar (com.facebook.react:react-native:0.61.5) and proguard-annotations-1.19.0.jar (com.facebook.yoga:proguard-annotations:1.19.0)

That's the top level issue. You're having duplicated classes (specifically com.facebook.proguard.annotations.DoNotStrip).
I haven't looked deeply into this but something like this:

implementation ("com.facebook.react:react-native:+"){
    exclude group: "com.facebook.yoga",module:"yoga"
}
implementation ('com.facebook.yoga.android:yoga-layout:1.19.0')
    exclude group: "com.facebook.yoga",module:"proguard-annotations"
}

should help you exclude the transitive dependency.

@Satendra124
Copy link
Author

Thats the issue we are never able to exclude yoga module from react-native

implementation ("com.facebook.react:react-native:+"){
    exclude group: "com.facebook.yoga",module:"yoga"
}

This never works

@github-actions github-actions bot added Needs: Attention Issues where the author has responded to feedback. and removed Needs: Author Feedback labels Dec 30, 2021
@cortinico
Copy link
Contributor

Thats the issue we are never able to exclude yoga module from react-native

Gotcha. The problem is that react-native is not actually depending on com.facebook.yoga:yoga but on: com.facebook.yoga:proguard-annotations

So doing this should work for you:

implementation ("com.facebook.react:react-native:+"){
    exclude group: "com.facebook.yoga",module:"proguard-annotations"
}

@github-actions
Copy link

This issue is stale because it has been open 180 days with no activity. Remove stale label or comment or this will be closed in 7 days.

@github-actions github-actions bot added the Stale There has been a lack of activity on this issue and it may be closed soon. label Jun 29, 2022
@cortinico cortinico added Resolution: Answered When the issue is resolved with a simple answer and removed Needs: Attention Issues where the author has responded to feedback. labels Jun 29, 2022
@facebook facebook locked as resolved and limited conversation to collaborators Jun 30, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Platform: Android Android applications. Platform: Linux Building on Linux. Resolution: Answered When the issue is resolved with a simple answer Stale There has been a lack of activity on this issue and it may be closed soon.
Projects
None yet
Development

No branches or pull requests

3 participants