类型 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 来解决这个问题。
我不知道为什么,但这似乎已经清除了一些我不知道的缓存或依赖项。
删除~/.gradle
或android/.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 被定义了多次的主要内容,如果未能解决你的问题,请参考以下文章