我最近更新了Android Studio(并且非常确定Gradle版本),现在在尝试编译项目时遇到了很多错误。这是目前困扰我的人:
Duplicate class android.support.v4.app.INotificationSideChannel found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:26.1.0)
其次是很多类似的东西。
我尝试删除对com.android.support
的所有使用以支持androidx(有关我使用替换事物的信息,请参见here),但是com.android.support
库仍在使用,即使我删除库(一旦我尝试再次编译它们,它们就会被重新制作。)
Here's指向我得到的完整错误的链接。
答案 0 :(得分:22)
我希望您在gradle.properties
中包含以下两行:
(如果您没有gradle.properties
,只需在项目的根目录中创建它即可)
android.useAndroidX=true
android.enableJetifier=true
似乎您的依赖项中的任何地方都有support
个文物,也许是一个lib?
要调查并查看依赖关系树,请运行
./gradlew :yourApp:dependencies
然后您会从那里看到它。
答案 1 :(得分:5)
就像其他人所说,解决方案是迁移到AndroidX,它对我有用。但是,这不是一个简单的方法,需要一些耐心...这些是我做的步骤:
首先,非常重要是您在其他分支中进行了所有这些更改,还是对项目进行了备份。
您需要拥有Android Gradle插件版本3.5.1。因此,在 build.gradle 中设置:dependencies {
classpath 'com.android.tools.build:gradle:3.5.1'
...
完成后,它已经完成了所有相关的修改,但是由于发现任何错误,有可能您无法正确部署项目。这些是我发现的问题和解决方案:
如果使用 Kotlin ,请在build.gradle中设置:buildscript {
ext.kotlin_version = '1.3.10'
...
和compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
destination file("$reportsDir/checkstyle/checkstyle.xml")
答案 2 :(得分:2)
在您的应用程序build.gradle中,您正在使用旧的支持库和新的支持库工件。
旧的支持lib构件:com.android.support:support-compat 相应的新支持lib构件:androidx.core:core:1.0.0
从build.gradle中删除其中之一以解决此问题。
答案 3 :(得分:2)
此解决方案对我来说是最好的。迁移至androidX
https://developer.android.com/jetpack/androidx/migrate
使用Android Studio 3.2及更高版本,您可以迁移现有的 通过选择“重构”>“从以下位置迁移到AndroidX”将项目迁移到AndroidX 菜单栏。
refactor命令使用两个标志。默认情况下,两者 在gradle.properties文件中设置为true:
android.useAndroidX=true
Android插件使用适当的 AndroidX库而不是支持库。 android.enableJetifier = true Android插件自动迁移 现有的第三方库通过重写AndroidX来使用AndroidX 二进制文件。
答案 4 :(得分:-5)
转到 Grade Scrpits-> gradle.properties 然后粘贴此代码:
NSAttributedString
和混乱您的项目。祝你好运:)