You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android项目更新后Gradle构建失败,报Program type already present错误

解决Gradle构建错误:Program type already present: org.apache.http.auth.AuthSchemeProvider

这个错误的核心原因是多个依赖库引入了相同的Apache HttpClient相关类,导致D8编译器遇到重复类冲突。咱们一步步来解决:

1. 先定位重复依赖的来源

首先在Android Studio的Terminal中运行Gradle依赖树命令,找出到底哪个库还在引入冲突的类:

  • Mac/Linux用户执行:./gradlew app:dependencies
  • Windows用户执行:gradlew app:dependencies

在输出结果里搜索org.apache.http,找到所有包含这个路径的依赖项,就能确定是哪个库没排除掉HttpClient。

2. 针对性解决方法

方法一:全局排除重复的HttpClient依赖

在模块的build.gradle文件的android代码块中添加全局排除规则,强制移除所有依赖中的Apache HttpClient相关库:

android {
    // 保留你已有的其他配置...
    configurations {
        all {
            exclude group: 'org.apache.httpcomponents', module: 'httpclient'
            exclude group: 'org.apache.httpcomponents', module: 'httpclient-android'
        }
    }
}

这个方法可以一次性解决所有依赖带来的重复问题,适合快速排查。

方法二:替换可能引入冲突的本地Jar

注意到你使用了本地的volley.jar,旧版本的Volley依赖Apache HttpClient,建议替换为官方维护的远程依赖版本(该版本已移除对HttpClient的依赖):

// 移除本地Jar依赖
// implementation files('libs/volley.jar')
// 添加官方远程依赖
implementation 'com.android.volley:volley:1.2.1'

方法三:针对单个依赖排除

如果通过依赖树找到了具体的冲突库(比如某个第三方SDK),可以在该依赖的声明中单独排除HttpClient:

implementation '冲突依赖库的完整坐标' {
    exclude group: 'org.apache.httpcomponents', module: 'httpclient'
}

3. 额外适配(针对Android P及以上版本)

如果你的项目目标SDK是28及以上,Android系统已移除内置的HttpClient,还需要在AndroidManifest.xml的<application>标签内添加:

<uses-library android:name="org.apache.http.legacy" android:required="false"/>

完成以上操作后,同步Gradle并重新构建项目,应该就能解决这个重复类的错误了。

内容的提问来源于stack exchange,提问作者user9848703

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:57:57