我已经升级了我的 Android Studio,在最新版本中发现了很多问题。
尽管存在许多类似的问题,但我检查了所有问题的答案,但没有一个对我有用!
这是我在编译代码时遇到的错误:
程序类型已经存在:android.support.v4.app.BackStackRecord\(Op Message{kind=ERROR, text=程序类型已经存在:android.support.v4.app.BackStackRecord\)Op, sources=[Unknown source file], tool名称=可选的.of(D8)}
这是我的gradle文件:
项目:
// Top-level build file where you can add configuration options common to
all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven {
url "https://jitpack.io"
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
应用程序:
apply plugin: 'com.android.application'
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.alcantara.bugismart"
minSdkVersion 15
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner
"android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-
core:3.0.1'
implementation 'com.github.ViksaaSkool:AwesomeSplash:v1.0.0'
}
您可以告诉我是否还有其他内容要添加以了解我在做什么或我错在哪里。
原文由 Kurniawan Alcantara 发布,翻译遵循 CC BY-SA 4.0 许可协议
问题是由于重复的支持库而发生的。这种依赖:
正在使用旧版本的支持库。如果您已经拥有它,请尝试排除支持库:
您需要使用以下命令检查您的依赖项:
或者,您始终可以通过添加具有您想要的确切版本的冲突库来 覆盖支持库 版本。
更新
在 添加构建依赖 项文档中有修复依赖项解析错误的完整步骤。这里摘录:
修复依赖解析错误
当您向应用程序项目添加多个依赖项时,这些直接和传递依赖项可能会相互冲突。 Android Gradle 插件试图优雅地解决这些冲突,但有些冲突可能会导致编译时或运行时错误。
为了帮助您调查导致错误的依赖项, 请检查您的应用程序的依赖项树 并查找出现多次或版本冲突的依赖项。
如果您无法轻松识别重复依赖项,请尝试使用 Android Studio 的 UI 搜索包含重复类的依赖项,如下所示:
以下部分描述了您可能遇到的不同类型的依赖关系解析错误以及如何修复它们。
修复重复的类错误
如果一个类在运行时类路径中出现多次,您会收到类似于以下内容的错误:
此错误通常由于以下情况之一而发生:
二进制依赖项包括一个库,您的应用程序也将其作为直接依赖项包括在内。例如,您的应用程序声明了对库 A 和库 B 的直接依赖,但库 A 已在其二进制文件中包含库 B。
您的应用对同一库具有本地二进制依赖项和远程二进制依赖项。
修复类路径之间的冲突
当 Gradle 解析编译类路径时,它首先解析 运行时 类路径并使用结果来确定应该将哪些版本的依赖项添加到编译类路径中。换句话说,运行时类路径确定下游类路径上相同依赖项所需的版本号。
您应用的运行时类路径还决定了 Gradle 为匹配应用的测试 APK 的运行时类路径中的依赖项所需的版本号。类路径的层次结构如下图所示:
例如,当您的应用程序包含使用
implementation
依赖项配置 的依赖项版本并且库模块包含不同版本的依赖项时,可能会在多个类路径中出现相同依赖项的不同版本的冲突使用runtimeOnly
配置。在解决对运行时和编译时类路径的依赖项时,Android Gradle 插件 3.3.0 及更高版本会尝试自动修复某些下游版本冲突。例如,如果运行时类路径包含库 A 2.0 版并且编译类路径包含库 A 1.0 版,则插件会自动将编译类路径上的依赖更新为库 A 2.0 版以避免错误。
但是,如果runtime classpath包含Library A 1.0版本并且compile classpath包含Library A version 2.0,插件不会将compile classpath的依赖降级到Library A version 1.0,你仍然会得到类似下面的错误:
要解决此问题,请执行以下操作之一:
api
依赖于您的库模块。也就是说,只有您的库模块声明了依赖项,但应用程序模块也可以传递地访问其 API。