【问题标题】:Program type already present: android.support.v4.media.MediaBrowserCompat$CustomActionCallback程序类型已经存在:android.support.v4.media.MediaBrowserCompat$CustomActionCallback
【发布时间】:2018-12-25 15:17:06
【问题描述】:

我对 Android 开发完全陌生,似乎无法解决此错误: “错误:程序类型已存在:android.support.v4.media.MediaBrowserCompat$CustomActionCallback”

这是我的依赖:

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.0-alpha1'
implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0-alpha1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0-alpha1'
implementation "android.arch.navigation:navigation-fragment:1.0.0-alpha01"
implementation "android.arch.navigation:navigation-ui:1.0.0-alpha01"


androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'
testImplementation 'junit:junit:4.12'
}

我在 Google 上搜索了一些内容并最终在开发者页面上找到了有关“解决重复的类错误”的信息,但我仍然无法解决此问题。非常感谢您的帮助!

【问题讨论】:

  • @toobsco42、implementation 'androidx.appcompat:appcompat:1.0.0-alpha1'implementation 'androidx.legacy:legacy-support-v4:1.0.0-alpha1' 可能会重复某些 API。如果您注释掉其中一个会发生什么?
  • 我没有与 Michael_Oslo 相同的依赖项。我也没有 androidx 依赖项。我只是得到同样的错误Error: Program type already present: android.support.v4.media.MediaBrowserCompat$CustomActionCallback
  • 如果您删除“implementation 'androidx.legacy:legacy-support-v4:1.0.0-alpha1'”或降级会发生什么。

标签: android android-gradle-plugin


【解决方案1】:

至少对我而言,问题在于 implementation 'androidx.legacy:legacy-support-v4:1.0.0-alpha1' 依赖项。我进入了 Android Studio 的菜单,在 Kotlin 中创建了一个空白片段,只是为了看看它会是什么样子,并添加了上面的依赖项。

一旦我删除了该依赖,错误就消失了。

【讨论】:

  • 对我有用的另一件事是重构 -> Android Studio 中的迁移到 AndroidX 选项。这似乎解决了我在尝试一次执行 AndroidX 迁移一个依赖项时可能遗漏的任何事情。 developer.android.com/jetpack/androidx/migrate
【解决方案2】:

您现有的一些依赖项正在使用旧版本的支持库,试试这个

implementation 'androidx.legacy:legacy-support-v4:1.0.0-alpha1' {  
exclude group: 'com.android.support'  
exclude module: 'support-v4'
}

【讨论】:

    【解决方案3】:

    选项 1

    以下对我有用 在 gradle.properties 文件中添加以下内容

    android.useAndroidX = true
    android.enableJetifier = false
    

    选项 2(如果上述方法不起作用)

    1. Android studio -> Navigate -> Class
    2. 检查是否包含非项目类
    3. 复制完整的类路径 android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat
    4. 查看它的使用位置。您可能需要删除其中之一。

    选项 3 您可能会包含包含模块的包,因此请使用以下方法排除 support-v4 模块

    implementation ('org.eclipse.paho:org.eclipse.paho.android.service:1.0.2') {
          exclude group: 'com.android.support', module:'support-v4'
    }
    

    您可以在项目存储库的命令行中使用./gradlew :YOURPROJECT:dependencies 分析冲突模块。 特别检查您的第三方库是否出现“com.android.support-”:

    然后从这些依赖项中排除冲突的模块,例如:

       implementation ("com.jakewharton:butterknife:8.8.1") {
        exclude group: 'com.android.support', module: 'support-v4'
        exclude group: 'com.android.support', module: 'support-annotation'
        exclude group: 'com.android.support', module: 'support-compat'
    }
    

    【讨论】:

    • 选项 1 适合我!怎么会得出这个结论?将此添加到 gradle.properties 很好,但我遵循了 developer.google-site 上的指南,对此我只字未提。
    • 在我的情况下,选项 1 有效,但使用:android.enableJetifier=true。然后我不得不使缓存无效/重新启动
    • 我尝试了选项 1 和选项 3(排除依赖 dagger-android-support),但之后显示错误:Could not find method com.google.dagger:dagger-android-support:2.16() for arguments [build_52wgz5jkz60yl2yx90c3wcy3t$_run_closure2$_closure6@68a7e350] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
    【解决方案4】:

    如果之后仍然出现错误

    # gradle.properties
    android.useAndroidX = true
    android.enableJetifier = false
    

    那么您可能忘记了调用 android.support.v7.app.AppCompatActivity 的主要活动 将其更改为 androidx.appcompat.app.AppCompatActivity

    【讨论】:

      【解决方案5】:

      我使用flutter,并在android中添加了一些本机库,我尝试了此处发布的解决方案,但对我来说,诀窍是android.enableJetifier = true而不是错误

      所以,将以下代码添加到gradle.properties,我的应用程序正在运行:

      android.useAndroidX = true
      android.enableJetifier = true
      

      【讨论】:

      【解决方案6】:

      添加以下插件

      cordova 插件添加 cordova-plugin-androidx cordova 插件添加 cordova-plugin-androidx-adapter

      帮我解决了问题

      【讨论】:

        猜你喜欢
        • 2019-07-13
        • 2020-01-27
        • 2018-09-25
        • 1970-01-01
        • 2019-12-11
        • 1970-01-01
        • 2019-01-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多