【问题标题】:Error: json defines classes that conflict with classes now provided by Android错误:json 定义的类与 Android 现在提供的类冲突
【发布时间】:2017-10-30 15:01:57
【问题描述】:

在 Android Studio 3 上进行发布构建时出现以下错误

Error:Error: json 定义的类与 Android 现在提供的类冲突。解决方案包括查找没有相同问题的较新版本或替代库(例如,对于 httpclient,请改用 HttpUrlConnection 或 okhttp),或使用 jarjar 之类的东西重新打包库。 [重复平台类]

以下是我的依赖项:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.0.1'
    compile 'com.android.support:support-v4:26.0.1'
    compile 'org.greenrobot:eventbus:3.0.0'
    compile 'com.readystatesoftware.sqliteasset:sqliteassethelper:+'
    compile 'com.evernote:android-job:1.2.0'
    compile 'com.amitshekhar.android:android-networking:1.0.0'
    compile 'com.facebook.stetho:stetho:1.5.0'
    compile "me.tatarka.redux:redux-core:0.10"
    compile "me.tatarka.redux:redux-android:0.10"
    compile "me.tatarka.redux:redux-android-lifecycle:0.10"
    compile "me.tatarka.redux:redux-thunk:0.10"
    annotationProcessor "org.immutables:value:2.5.5" // <-- for annotation processor
    provided "org.immutables:value:2.5.5" // for annotations
    provided "org.immutables:builder:2.5.5" // for annotations

    compile "me.tatarka.redux:redux-monitor:0.10"
    testCompile 'junit:junit:4.12'
}

说的是json,但我找不到上面的哪个依赖项导致了问题。

这是我跑步时得到的结果

gradlew assembleRelease

任务:app:lintVitalRelease /Users/kruyvanna/Projects/key/HappyKey_Android2/app/build.gradle:错误:json 定义的类与 Android 现在提供的类冲突。解决方案包括查找没有相同问题的较新版本或替代库(例如,对于 httpclient,请改用 HttpUrlConnection 或 okhttp),或使用 jarjar 之类的东西重新打包库。 [重复平台类]

“DuplicatePlatformClasses”类型问题的解释: 有许多库不仅复制了 Android 平台,但使用与那些完全相同的类名 在 Android 中提供——例如 apache http 类。这可能导致 意外崩溃。

要解决这个问题,您需要找到更新版本的库 不再有这个问题,或者重新打包库(及其所有 依赖项)使用类似 jarjar 工具,或者最后,重写 使用不同 API 的代码(例如,对于 http 代码,请考虑使用 HttpUrlConnection 或类似 okhttp 的库。)

1 个错误,0 个警告

FAILURE:构建失败并出现异常。

  • 出了什么问题: 任务 ':app:lintVitalRelease' 执行失败。

    Lint 在组装发布目标时发现致命错误。

    要继续,请修复 lint 确定的问题,或修改构建脚本,如下所示: ... 安卓 { lintOptions { checkReleaseBuilds 错误 // 或者,如果您愿意,您可以继续检查发布版本中的错误, // 但即使发现错误也要继续构建: 中止错误错误 } } ...

  • 尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。

  • 通过https://help.gradle.org获得更多帮助

【问题讨论】:

  • 你使用什么构建工具?
  • 我正在使用 Android Studio。点击“构建 -> 生成签名的 APK”
  • 问题解决了吗?我也面临同样的问题。
  • @Hong 是的。在stackoverflow.com/a/47019266/271669 下方查看我的回答
  • 谢谢。我假设您通过删除依赖项解决了问题。我看到了答案,但我不确定你做了什么。我希望在不删除任何依赖项的情况下找到解决方案。

标签: java android json


【解决方案1】:

我通过添加来修复它:

configurations {
    all {
        exclude group: 'org.json', module: 'json'
    }
}

到模块 gradle 文件,不需要删除依赖项。

【讨论】:

  • 在app/build.gradle内
【解决方案2】:

将此添加到您的app/build.gradle

configurations {
    all {
        exclude module: 'commons-logging'
    }
}

【讨论】:

    【解决方案3】:

    转到命令行并查看依赖关系树。这将为您提供您的应用使用的所有内容的列表:

    ./gradlew dependencies
    

    【讨论】:

    • 如果显示No configurations,则改为使用./gradlew app:dependencies。
    【解决方案4】:

    我一一添加依赖,发现是这个导致错误

    compile "me.tatarka.redux:redux-monitor:0.10"
    

    【讨论】:

      猜你喜欢
      • 2019-06-18
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 2018-04-09
      • 2018-10-22
      • 1970-01-01
      • 1970-01-01
      • 2015-11-17
      相关资源
      最近更新 更多