我正在向我的应用添加一个导航抽屉。我遇到了错误。应用gradle同步正常。但当我运行应用时,我遇到了一堆重复类错误。我认为这可能是因为我添加了冲突的依赖项,并且我使用的是v7 28.0.0,其中一些错误提到了应用:v4。我在网上看到的所有示例都使用了v7 28.0.0,尽管我在main_activity. xml中有此示例,但它使用了v4。不知道这是否与错误有关。android.support.v4.widget.DrawerLayout
Caused by: com.android.ide.common.workers.WorkerExecutorException: 1 exception was raised by workers:
java.lang.RuntimeException: java.lang.RuntimeException: Duplicate class android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:24.0.0)
Duplicate class android.support.v4.app.ActionBarDrawerToggle found in modules classes.jar (com.android.support:support-core-ui:28.0.0) and classes.jar (com.android.support:support-v4:24.0.0)
Duplicate class android.support.v4.app.ActionBarDrawerToggle$Delegate found in modules classes.jar (com.android.support:support-core-ui:28.0.0) and classes.jar (com.android.support:support-v4:24.0.0)
Duplicate class android.support.v4.app.ActionBarDrawerToggle$DelegateProvider found in modules classes.jar (com.android.support:support-core-ui:28.0.0) and classes.jar (com.android.support:support-v4:24.0.0)
Duplicate class android.support.v4.app.ActionBarDrawerToggle$SlideDrawable found in modules classes.jar (com.android.support:support-core-ui:28.0.0) and classes.jar (com.android.support:support-v4:24.0.0)
Duplicate class android.support.v4.app.ActivityCompat found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:24.0.0)
Duplicate class android.support.v4.app.ActivityCompat$1 found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:24.0.0)
Duplicate class android.support.v4.app.ActivityCompat$OnRequestPermissionsResultCallback found in modules classes.jar (com.android.support:support-compat:28.0.0) and classes.jar (com.android.support:support-v4:24.0.0)
粗锉
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "org.pctechtips.netdroid"
minSdkVersion 21
targetSdkVersion 28
versionCode 8
versionName "1.7"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled = false
signingConfig signingConfigs.config
}
buildTypes {
release {
shrinkResources false
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
debuggable false
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
/*androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
firebase
implementation 'com.google.firebase:firebase-core:10.2.1'
})*/
// compile 'com.android.support:appcompat-v7:25.3.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
/*google play plugin for adMob*/
implementation 'com.google.android.gms:play-services:10.2.1'
implementation 'commons-net:commons-net:3.6'
implementation 'org.samba.jcifs:jcifs:1.3.3'
}
5条答案
按热度按时间5f0d552i1#
异常意味着,在2个或更多不同的依赖项中存在重复的类,编译器无法区分它们中的哪一个应该在
run-time
中使用,因此抛出异常。最常见的情况是,当您试图导入带有所需库的模块时,会发生重复。(传递依赖项)
您必须从
build.gradle
中的库复制exclude
类。如日志所示,support-core-ui
和support-compat
模块具有重复类。另一种情况会导致 * 重复的类 *,那就是当您将
*.jar
添加到项目libs
目录时。因此,如果它们没有在项目中开始使用,您需要将其删除。我看到有一些解决方案提到使用这两行将解决这个问题,但如果你已经迁移到
Androidx
,它将被默认启用。捷迪耶是
Jetifier工具可迁移依赖于支持库的库,使其依赖于等效的AndroidX包。该工具允许您直接迁移单个库,而无需使用Android Studio捆绑的Android gradle插件。
有关详细信息,请查看Exclude transitive dependencies
随着应用范围的扩大,它可能包含大量依赖项,包括直接依赖项和传递依赖项(应用的导入库所依赖的库)。要排除不再需要的传递依赖项,可使用
exclude
关键字如果您在排除类时遇到问题,请检查此主题:How do I exclude...
7vux5j2d2#
查看添加此依赖关系是否有效:
6yoyoihd3#
转到gradle.properties并编写以下两行代码:
ecfdbz9o4#
请更新
com.google.android.gms:play-services
到最新版本。它会工作。mklgxw1f5#
我试过以上所有的解决方案,但在我的情况下都不起作用。对我起作用的是。
我通过创建一个具有相同项目和包名称的新项目,然后将文件从以前的项目复制到新项目中,解决了这个问题。