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

Posted

技术标签:

【中文标题】类型 androidx.appcompat.resources.R$dimen 被定义了多次【英文标题】:Type androidx.appcompat.resources.R$dimen is defined multiple times 【发布时间】:2020-06-15 05:40:13 【问题描述】:

我们有一个 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

这是我们的依赖项:

"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"
  

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

【问题讨论】:

升级到 3.6.1 后我遇到了同样的错误!如果你发现任何东西,请告诉我。我被卡住了:( 通过将 Android Gradle Plugin 降级到 3.5.0 和 Gradle 版本降级到 5.5 解决! 同样的问题,但降级到 3.5.0 会带来其他问题。这简直是​​凭空出现的。降级后,再次升级对我有用。也许与缓存有关... 【参考方案1】:

遇到同样的问题,只需清理项目并重新构建即可。

【讨论】:

不怎么清理项目的,直接输入:cd android && ./gradlew clean 谢谢,我成功了,而且运行良好......【参考方案2】:

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

我有多个构建变体。

我通过首先从项目中删除 .gradle 文件夹并执行清理项目和重建项目来解决此问题。

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

【讨论】:

降级 IDE 的重要工具绝不应该是永久的解决方案。这只是掩盖了真正的问题。 当然我宁愿不降级。然而,当使用像 React Native 这样严重依赖第三方库的框架时,如果我想继续开发,我通常别无选择。【参考方案5】:

我只是在 Android Studio 中运行以下内置例程:

文件 > 将项目与 Gradle 文件同步

然后它又工作了 :-)

【讨论】:

【参考方案6】:

当我在原生 android 上的 android studio 上编码时,遇到了同样的问题

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

问题是由于 JAVA(生成)目录中存在的 BuildConfig 重复

这是解决问题的解决方案。

您必须通过此过程从 android studio 中删除 duplicate BuildConfig

    点击左侧的java(generated)

    问题是创建了额外的构建配置

    当你点击任意一个BuildConfig时,都会出现如图一样的错误显示

    删除多余的 BuildConfig 并保留原来的 BuildConfig。

问题已解决

【讨论】:

【参考方案7】:

我的错误类似,带有“已定义多次”消息。

我通过将 Gradle 插件降级到 3.5.0、运行应用程序(或者至少尝试运行)然后再次升级到 Gradle 插件 3.6.2 来解决这个问题。

我不知道为什么,但这似乎已经清除了一些我不知道的缓存或依赖项。

删除~/.gradleandroid/.gradle 没有帮助。

【讨论】:

我没有通过降级到 3.5.0 而不是回到 3.6.2 来让我的 Android 项目再次运行。但我只是降级到 3.6.1 就让它运行了【参考方案8】:

文件->使缓存无效/重新启动

【讨论】:

【参考方案9】:

我删除了~/.gradle/caches

似乎工作得很好。我这样做是因为我在错误中看到了~/.gradle/caches

Type androidx.legacy.app.ActionBarDrawerToggle$Delegate is defined multiple times:
/Users/me/.gradle/caches/transforms-3/08344aeb2253f0dce062ee9436d14235/transformed/legacy-support-core-ui-1.0.0-runtime/classes.dex,
/Users/me/.gradle/caches/transforms-3/bde9e50d97f78024fdfcb4b5869842c8/transformed/legacy-support-core-ui-1.0.0-runtime/classes.dex

【讨论】:

【参考方案10】:

这些答案都已过时。我用的是 4.1.2。如果查看 AS 中给出的路径,它应该指向 \app\build\intermediates\project_dex_archive\debug\out。转到此路径,删除所有 *.jar 文件,留下最近的一个。我试过了,我的项目运行良好。

不要为使缓存无效/重新启动而烦恼,因为它不起作用。

【讨论】:

【参考方案11】:

我也有同样的问题 就我而言 只是你有升级依赖它也适用于我

【讨论】:

【参考方案12】:

对于 Google 员工: 就我而言,我创建了一个基准模块(使用plugin "com.android.library")并使其依赖于应用程序模块(使用plugin "com.android.application")。 但是库模块不能依赖应用模块,因为 Gradle 不支持它。 这里有一些信息: https://www.reddit.com/r/androiddev/comments/boi4xg/modularization_help_android_library_module/

【讨论】:

【参考方案13】:

@Wito Divaro,他的回答帮助了我。如果您对“R 被多次定义”感到困扰,请尝试摆脱“android/app/build”。 此外,我在 app/build.gradle 中添加了下面这一行。 如果你想试试,试试这个。

defaultConfig 
   ..............
   multiDexEnabled true


dependencies 
    ..............
    implementation 'androidx.multidex:multidex:2.0.1'


public class MyApplication extends MultiDexApplication 
    ..............

【讨论】:

【参考方案14】:

我遇到了同样的问题,只需按照上述路径并删除所有文件即可解决它

【讨论】:

请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。 @husseinkhalaf 你的回答不完整,你忘了添加路径,应该删除! 这没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker. 你必须删除文件夹release中的所有文件,然后清理项目

以上是关于类型 androidx.appcompat.resources.R$dimen 被定义了多次的主要内容,如果未能解决你的问题,请参考以下文章

c#中值类型和引用类型的区别

MySQl数据类型

值类型和引用类型

TS 基本类型分类any 类型

MySQL数据类型 - 数字类型 - 数字类型语法

js简单类型与复杂类型