software-mansion / react-native-gesture-handler

Declarative API exposing platform native touch and gesture system to React Native.
https://docs.swmansion.com/react-native-gesture-handler/
MIT License
6.03k stars 971 forks source link

Android Build Failing #2503

Closed itajenglish closed 1 year ago

itajenglish commented 1 year ago

Description

Android build failing with the following error log on Expo 47/React Native 0.70.x and Expo 48/React Native 0.71.x. Any guidance on this issue would be helpful. Thank you!

Task :app:mergeProjectDexDebug FAILED
ERROR:/Users/tajenglish/Projects/ListedB/mobile/android/app/build/intermediates/mixed_scope_dex_archive/debug/out/76f2b991f37f4cbb3614df917e35fd43c0d342acafa43d136730d29b3cefad52_4.jar: D8: Type devmenu.com.swmansion.common.GestureHandlerStateManager is defined multiple times: /Users/tajenglish/Projects/ListedB/mobile/android/app/build/intermediates/mixed_scope_dex_archive/debug/out/76f2b991f37f4cbb3614df917e35fd43c0d342acafa43d136730d29b3cefad52_4.jar:classes.dex, /Users/tajenglish/Projects/ListedB/mobile/android/app/build/intermediates/mixed_scope_dex_archive/debug/out/d59a620f9c447a48419f1e63b425aa82fcb495ff529780e5d386b13ae963d243_4.jar:classes.dex
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
Type devmenu.com.swmansion.common.GestureHandlerStateManager is defined multiple times: /Users/tajenglish/Projects/ListedB/mobile/android/app/build/intermediates/mixed_scope_dex_archive/debug/out/76f2b991f37f4cbb3614df917e35fd43c0d342acafa43d136730d29b3cefad52_4.jar:classes.dex, /Users/tajenglish/Projects/ListedB/mobile/android/app/build/intermediates/mixed_scope_dex_archive/debug/out/d59a620f9c447a48419f1e63b425aa82fcb495ff529780e5d386b13ae963d243_4.jar:classes.dex
        at com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:151)
        at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:138)
        at com.android.build.gradle.internal.tasks.DexMergingWorkAction.merge(DexMergingTask.kt:858)
        at com.android.build.gradle.internal.tasks.DexMergingWorkAction.run(DexMergingTask.kt:804)
        at com.android.build.gradle.internal.profile.ProfileAwareWorkAction.execute(ProfileAwareWorkAction.kt:74)
        at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
        at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)
        at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)
        at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100)
        at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62)
        at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
        at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
        at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
        at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59)
        at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$2(DefaultWorkerExecutor.java:205)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:187)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:120)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:162)
        at org.gradle.internal.Factories$1.create(Factories.java:31)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:249)
        at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:109)
        at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:114)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:157)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:126)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: /Users/tajenglish/Projects/ListedB/mobile/android/app/build/intermediates/mixed_scope_dex_archive/debug/out/76f2b991f37f4cbb3614df917e35fd43c0d342acafa43d136730d29b3cefad52_4.jar:classes.dex
        at Version.fakeStackEntry(Version_4.0.48.java:0)
        at com.android.tools.r8.internal.vk.a(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:75)
        at com.android.tools.r8.internal.vk.a(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:28)
        at com.android.tools.r8.internal.vk.a(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:27)
        at com.android.tools.r8.internal.vk.b(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:2)
        at com.android.tools.r8.D8.run(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:11)
        at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:136)
        ... 38 more
Caused by: com.android.tools.r8.internal.g: Type devmenu.com.swmansion.common.GestureHandlerStateManager is defined multiple times: /Users/tajenglish/Projects/ListedB/mobile/android/app/build/intermediates/mixed_scope_dex_archive/debug/out/76f2b991f37f4cbb3614df917e35fd43c0d342acafa43d136730d29b3cefad52_4.jar:classes.dex, /Users/tajenglish/Projects/ListedB/mobile/android/app/build/intermediates/mixed_scope_dex_archive/debug/out/d59a620f9c447a48419f1e63b425aa82fcb495ff529780e5d386b13ae963d243_4.jar:classes.dex
        at com.android.tools.r8.internal.GV.a(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:14)
        at com.android.tools.r8.internal.GV.a(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:22)
        at com.android.tools.r8.internal.rP.a(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:44)
        at com.android.tools.r8.internal.rP.a(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:10)
        at java.base/java.util.concurrent.ConcurrentHashMap.merge(ConcurrentHashMap.java:2056)
        at com.android.tools.r8.internal.rP.a(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:6)
        at com.android.tools.r8.graph.F2$a.e(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:7)
        at com.android.tools.r8.dex.b.a(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:84)
        at com.android.tools.r8.dex.b.a(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:23)
        at com.android.tools.r8.dex.b.a(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:22)
        at com.android.tools.r8.D8.a(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:50)
        at com.android.tools.r8.D8.d(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:19)
        at com.android.tools.r8.D8.b(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:1)
        at com.android.tools.r8.internal.vk.a(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:24)
        ... 41 more

FAILURE: Build completed with 2 failures.

1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':app:mergeProjectDexDebug'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.DexMergingTaskDelegate
   > There was a failure while executing work items
      > A failure occurred while executing com.android.build.gradle.internal.tasks.DexMergingWorkAction
         > com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
           Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
           Type devmenu.com.swmansion.common.GestureHandlerStateManager is defined multiple times: /Users/tajenglish/Projects/ListedB/mobile/android/app/build/intermediates/mixed_scope_dex_archive/debug/out/76f2b991f37f4cbb3614df917e35fd43c0d342acafa43d136730d29b3cefad52_4.jar:classes.dex, /Users/tajenglish/Projects/ListedB/mobile/android/app/build/intermediates/mixed_scope_dex_archive/debug/out/d59a620f9c447a48419f1e63b425aa82fcb495ff529780e5d386b13ae963d243_4.jar:classes.dex

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
==============================================================================

2: Task failed with an exception.
-----------
* What went wrong:
java.lang.StackOverflowError (no error message)

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
==============================================================================

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

See https://docs.gradle.org/7.5.1/userguide/command_line_interface.html#sec:command_line_warnings

Execution optimizations have been disabled for 1 invalid unit(s) of work during this build to ensure correctness.
Please consult deprecation warnings for more details.

BUILD FAILED in 53s
885 actionable tasks: 20 executed, 4 from cache, 861 up-to-date

Dependencies

    "@config-plugins/react-native-branch": "^5.0.0",
    "@devcycle/devcycle-react-native-sdk": "^1.2.6",
    "@expo-google-fonts/lato": "^0.2.2",
    "@expo/vector-icons": "^13.0.0",
    "@hookform/resolvers": "^2.9.10",
    "@intercom/intercom-react-native": "^4.0.1",
    "@listedb/common-utils": "^1.13.0",
    "@react-native-async-storage/async-storage": "1.17.11",
    "@react-native-community/clipboard": "^1.5.1",
    "@react-native-community/datetimepicker": "6.7.3",
    "@react-native-community/netinfo": "9.3.7",
    "@react-native-firebase/app": "^16.5.0",
    "@react-native-firebase/messaging": "^16.5.0",
    "@react-native-seoul/masonry-list": "^1.4.1",
    "@react-navigation/elements": "1.3.17",
    "@react-navigation/material-top-tabs": "6.6.2",
    "@react-navigation/native": "6.1.6",
    "@react-navigation/native-stack": "6.9.12",
    "@segment/analytics-react-native": "^2.14.0",
    "@segment/sovran-react-native": "^1.0.3",
    "@stytch/react-native": "^0.7.1",
    "@stytch/react-native-expo": "^0.8.2",
    "@svanboxel/visibility-sensor-react-native": "^1.0.2",
    "@twotalltotems/react-native-otp-input": "^1.3.11",
    "axios": "^1.2.0",
    "burnt": "^0.10.0",
    "config-plugin-react-native-intercom": "^1.10.1",
    "expo": "~48.0.18",
    "expo-app-loading": "~2.1.1",
    "expo-asset": "~8.9.1",
    "expo-av": "~13.2.1",
    "expo-build-properties": "~0.6.0",
    "expo-constants": "~14.2.1",
    "expo-dev-client": "~2.2.1",
    "expo-font": "~11.1.1",
    "expo-image-picker": "~14.1.1",
    "expo-linking": "~4.0.1",
    "expo-splash-screen": "~0.18.2",
    "expo-status-bar": "~1.4.2",
    "expo-updates": "~0.16.4",
    "expo-web-browser": "~12.1.1",
    "getstream": "^8.1.0",
    "humanize-duration": "^3.27.3",
    "lodash": "^4.17.21",
    "newrelic-react-native-agent": "^1.2.0",
    "patch-package": "^6.5.0",
    "phone-formatter": "^0.0.2",
    "postinstall-postinstall": "^2.1.0",
    "prop-types": "^15.8.1",
    "query-string": "^7.1.1",
    "react": "18.2.0",
    "react-dom": "18.2.0",
    "react-hook-form": "^7.39.6",
    "react-native": "0.71.8",
    "react-native-actions-sheet": "0.8.29",
    "react-native-activity-feed": "1.1.0",
    "react-native-animated-nav-tab-bar": "^3.1.8",
    "react-native-branch": "^5.4.0",
    "react-native-calendars": "^1.1294.0",
    "react-native-device-info": "^10.6.0",
    "react-native-dotenv": "^3.4.2",
    "react-native-drop-shadow": "^0.0.6",
    "react-native-dropdown-picker": "^5.4.3",
    "react-native-dropdownalert": "^4.5.1",
    "react-native-elements": "^3.4.2",
    "react-native-fast-image": "^8.6.3",
    "react-native-gesture-handler": "~2.9.0",
    "react-native-get-random-values": "~1.8.0",
    "react-native-gleapsdk": "^8.2.4",
    "react-native-image-crop-picker": "^0.38.1",
    "react-native-image-viewing": "^0.2.2",
    "react-native-inappbrowser-reborn": "^3.7.0",
    "react-native-internet-connection-alert": "^0.1.9",
    "react-native-keychain": "^8.1.1",
    "react-native-neat-date-picker": "1.4.7",
    "react-native-pager-view": "6.1.2",
    "react-native-phone-number-input": "^2.1.0",
    "react-native-reanimated": "~2.14.4",
    "react-native-safe-area-context": "4.5.0",
    "react-native-screens": "~3.20.0",
    "react-native-tab-view": "^3.3.0",
    "react-native-timeago": "^0.5.0",
    "react-native-ui-lib": "^6.24.0",
    "react-native-uuid": "^2.0.1",
    "react-native-web": "~0.18.7",
    "react-redux": "^8.0.5",
    "redux": "^4.2.0",
    "redux-act": "^1.8.0",
    "redux-devtools-extension": "^2.13.9",
    "redux-immutable-state-invariant": "^2.1.0",
    "redux-thunk": "^2.4.2",
    "styled-components": "^5.3.6",
    "yup": "^0.32.11"

Steps to reproduce

  1. Install Expo 48 and React Native 0.71.8
  2. Run expo run:android
  3. Build fails

Snack or a link to a repository

https://github.com/itajenglish/rn-gesture-handler-error

Gesture Handler version

2.9.0

React Native version

0.71.8

Platforms

Android

JavaScript runtime

JSC

Workflow

Expo managed workflow

Architecture

Paper (Old Architecture)

Build type

Debug mode

Device

Android emulator

Device model

No response

Acknowledgements

Yes

j-piasecki commented 1 year ago

Could you prepare a reproduction? I wasn't able to get the error on a fresh expo 48/RN 0.71 project

itajenglish commented 1 year ago

Could you prepare a reproduction? I wasn't able to get the error on a fresh expo 48/RN 0.71 project

@j-piasecki I've updated the issue with a repo that reproduces the error. Thank you for your help!

itajenglish commented 1 year ago

Hey @j-piasecki Any updates on this?

j-piasecki commented 1 year ago

Sorry for the delay, I've got a bit overwhelmed with different projects. I see you've pinpointed the problem to a different library, so I'll close the issue for now.

If the maintainers of newrelic-react-native-agent find out that it's Gesture Handler at fault here, please tag me and I'll reopen it.