类型 androidx.appcompat.resources.R$dimen 被定义多次

Bil*_*rus 20 android android-studio android-gradle-plugin react-native

我们有一个 React Native 应用程序,在升级到 Android Studio 3.6.1 和 Gradle 插件 3.6.1 后,我们看到了这个编译错误:

Type androidx.appcompat.resources.R$dimen is defined multiple times: /Users/andrew/Software/project/android/app/build/intermediates/project_dex_archive/productionRelease/out/androidx/appcompat/resources/R$dimen.dex, /Users/andrew/Software/project/android/app/build/intermediates/project_dex_archive/productionRelease/out/15bdf8225afad69777cd7f9bd328ab094900c8289014e0107b56c5c62099dfea_3.jar:classes.dex
Run Code Online (Sandbox Code Playgroud)

这是我们的依赖项:

"dependencies": {
    "@dblackker/cameraroll": "^1.3.4",
    "@react-native-community/async-storage": "^1.7.1",
    "@react-native-community/geolocation": "^2.0.2",
    "@react-native-community/netinfo": "^4.4.0",
    "@react-native-community/push-notification-ios": "^1.0.6",
    "@react-native-firebase/analytics": "^6.2.0",
    "@react-native-firebase/app": "^6.2.0",
    "@react-native-firebase/crashlytics": "^6.2.0",
    "@react-native-firebase/perf": "^6.2.0",
    "appcenter": "^2.6.1",
    "appcenter-analytics": "^2.6.1",
    "appcenter-crashes": "^2.6.1",
    "axios": "^0.18.0",
    "clone": "^2.1.2",
    "immutability-helper": "^2.8.1",
    "lodash": "^4.17.14",
    "memoize-one": "^5.1.1",
    "moment": "^2.22.2",
    "prop-types": "^15.7.2",
    "react": "16.9.0",
    "react-custom-validation": "^0.5.7",
    "react-native": "0.61.5",
    "react-native-add-calendar-event": "^3.0.0",
    "react-native-app-intro-slider": "^3.0.0",
    "react-native-appearance": "^0.3.1",
    "react-native-camera": "^3.8.0",
    "react-native-contacts": "^5.0.6",
    "react-native-device-info": "^4.0.1",
    "react-native-gesture-handler": "^1.4.1",
    "react-native-heic-converter": "^1.3.0",
    "react-native-image-crop-picker": "^0.26.1",
    "react-native-image-resizer": "^1.0.1",
    "react-native-inappbrowser-reborn": "^3.1.0",
    "react-native-iphone-x-helper": "^1.2.1",
    "react-native-keyboard-aware-scroll-view": "^0.7.4",
    "react-native-linear-gradient": "^2.5.6",
    "react-native-maps": "0.26.1",
    "react-native-modal": "^7.0.2",
    "react-native-modal-datetime-picker": "^7.6.1",
    "react-native-parsed-text": "^0.0.21",
    "react-native-permissions": "^2.0.9",
    "react-native-push-notification": "^3.1.9",
    "react-native-reanimated": "^1.3.0",
    "react-native-section-list-get-item-layout": "^2.2.3",
    "react-native-shadow": "^1.2.2",
    "react-native-share": "^2.0.0",
    "react-native-svg": "^9.12.0",
    "react-native-svg-uri": "^1.2.3",
    "react-native-tab-view": "^2.3.0",
    "react-native-version-number": "^0.3.6",
    "react-navigation": "3.12.0",
    "react-navigation-tabs": "^2.1.2",
    "react-redux": "^5.0.7",
    "redux": "^4.0.4",
    "redux-thunk": "^2.3.0",
    "rn-fetch-blob": "^0.11.2",
    "validator": "^10.8.0"
  }
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助找出问题所在,以及我们将来如何调试此类问题?谢谢!

小智 13

遇到同样的问题,只需清理项目并再次重建。

  • 对于那些不知道如何清理项目的人,只需输入:`cd android && ./gradlew clean` (8认同)

Nik*_*tel 9

在 Android Studio 中将 gradle 版本从 3.5.2 更新到 3.6.3 后,我遇到了同样的问题。

我有多个构建变体。

我通过首先从项目中删除 .gradle 文件夹并执行 Clean Project 和 Rebuild Project 来解决该问题。

如果您有多个构建变体,当您将构建变体从一个更改为另一个时,您可能必须对每个构建变体执行相同的操作。


小智 7

我删除了android/app/build文件夹,因为我的重复文件就在那里。


Bil*_*rus 6

Igor Montella 对我的问题的评论解决了这个问题——降级到 gradle 插件 3.5.0。

  • 降级 IDE 的重要工具绝不应该成为永久解决方案。这只能掩盖真正的问题。 (2认同)
  • 当然我宁愿不降级。然而,当使用像 React Native 这样严重依赖第三方库的框架时,如果我想继续开发,我通常别无选择。 (2认同)