gpt4 book ai didi

android - 程序类型已存在 : android. support.v4.app.BackStackRecord

转载 作者:IT王子 更新时间:2023-10-28 23:41:57 29 4
gpt4 key购买 nike

我已经升级了我的 Android Studio,在最新版本中发现了很多问题。

尽管存在许多类似的问题,但我检查了所有答案,但没有一个对我有用!

这是我在编译代码时遇到的错误:

Program type already present: android.support.v4.app.BackStackRecord$Op Message{kind=ERROR, text=Program type already present: android.support.v4.app.BackStackRecord$Op, sources=[Unknown source file], tool name=Optional.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'
}

你可以告诉我是否还有什么要补充的,以了解我在做什么或我哪里错了。

最佳答案

Program type already present: android.support.v4.app.BackStackRecord$Op Message{kind=ERROR, text=Program type already present: android.support.v4.app.BackStackRecord$Op, sources=[Unknown source file], tool name=Optional.of(D8)}



问题是由于重复的支持库而发生的。这种依赖:
implementation 'com.github.ViksaaSkool:AwesomeSplash:v1.0.0'

正在使用旧版本的支持库。如果您已经拥有它,请尝试排除支持库:
// support libraries we want to use
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:support-v4:27.1.1'

// we already have the specific support libraries. So, exclude it
implementation ('com.github.ViksaaSkool:AwesomeSplash:v1.0.0') {
exclude group: 'com.android.support'
exclude module: 'appcompat-v7'
exclude module: 'support-v4'
}

您需要使用以下命令检查您的依赖项:
./gradlew app:dependencies

或者 ,您可以随时 覆盖支持库 通过添加具有您想要的确切版本的冲突库来版本。

更新

Add build dependencies 上有一个完整的步骤来修复依赖项解析错误。文档。这里是摘录:

修复依赖解析错误

当您向应用项目添加多个依赖项时,这些直接和传递依赖项可能会相互冲突。 Android Gradle 插件尝试优雅地解决这些冲突,但有些冲突可能会导致编译时或运行时错误。

为了帮助您调查导致错误的依赖项, inspect your app's dependency tree并查找出现多次或版本冲突的依赖项。

如果您无法轻松识别重复依赖项,请尝试使用 Android Studio 的 UI 搜索包含重复类的依赖项,如下所示:
  • 选择 导航 > 类(class)从菜单栏。
  • 在弹出的搜索对话框中,确保 旁边的框包括非项目项目 被检查。
  • 键入出现在构建错误中的类的名称。
  • 检查包含该类的依赖项的结果。

  • 以下部分描述了您可能遇到的不同类型的依赖项解析错误以及如何修复它们。

    修复重复的类错误

    如果一个类在运行时类路径上出现多次,您会收到类似于以下内容的错误:
    Program type already present com.example.MyClass

    此错误通常是由于以下情况之一造成的:
  • 二进制依赖项包括一个库,您的应用程序也将其作为直接依赖项包含在内。例如,您的应用声明了对库 A 和库 B 的直接依赖,但库 A 已在其二进制文件中包含库 B。
  • 解决此问题 , 删除库 B 作为直接依赖项。
  • 您的应用程序对同一个库具有本地二进制依赖项和远程二进制依赖项。
  • 解决此问题 ,删除二进制依赖项之一。

  • 修复类路径之间的冲突

    当 Gradle 解析编译类路径时,它首先解析运行时类路径并使用结果来确定应将哪些版本的依赖项添加到编译类路径中。换句话说,运行时类路径确定下游类路径上相同依赖项所需的版本号。

    您的应用的运行时类路径还决定了 Gradle 为匹配应用测试 APK 的运行时类路径中的依赖项所需的版本号。类路径的层次结构如下图所示:

    enter image description here

    例如,当您的应用程序包含使用 implementation 的依赖项版本时,可能会发生冲突,即同一依赖项的不同版本出现在多个类路径中。 dependency configuration并且库模块包含使用 runtimeOnly 的不同版本的依赖项配置。

    在解决运行时和编译时类路径的依赖关系时,Android Gradle 插件 3.3.0 及更高版本会尝试自动修复某些下游版本冲突。例如,如果运行时类路径包含库 A 版本 2.0,而编译类路径包含库 A 版本 1.0,则插件会自动将编译类路径上的依赖关系更新为库 A 版本 2.0 以避免错误。

    但是,如果运行时类路径包含库 A 版本 1.0 并且编译类路径包含库 A 版本 2.0,则插件不会将编译类路径的依赖项降级到库 A 版本 1.0,您仍然会收到类似于以下内容的错误:
    Conflict with dependency 'com.example.library:some-lib:2.0' in project 'my-library'.
    Resolved versions for runtime classpath (1.0) and compile classpath (2.0) differ.

    要解决此问题,请执行以下操作之一:
  • 包含所需版本的依赖项作为 api对您的库模块的依赖。也就是说,只有您的库模块声明了依赖项,但应用程序模块也可以传递访问其 API。
  • 或者,您可以在两个模块中声明依赖项,但应确保每个模块使用相同版本的依赖项。考虑 configuring project-wide properties确保每个依赖项的版本在整个项目中保持一致。
  • 关于android - 程序类型已存在 : android. support.v4.app.BackStackRecord,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49837344/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com