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

升级Android Gradle Plugin至8.1.0后R8混淆Android应用报错求助

解决AGP 8.1.0下R8混淆release构建报错的方法

这个报错的核心原因是:Android系统库自带的android.net.http.AndroidHttpClient实现了org.apache.http.client.HttpClient,但你的项目里可能额外引入了Apache HttpClient的第三方依赖,AGP 8.x版本的R8混淆规则更严格,检测到这种库类实现程序类的冲突后直接抛出错误。以下是几种可行的解决办法:

  • 移除多余的Apache HttpClient依赖
    如果你的项目已经不再用到引入的org.apache.http.client.HttpClient相关类,直接在Module级别的build.gradle里删掉对应的依赖,比如:

    // 删除类似这样的依赖行
    implementation 'org.apache.httpcomponents:httpclient:x.x.x'
    
  • 添加R8混淆规则忽略冲突
    要是必须保留该依赖,就在项目的proguard-rules.pro(或r8-proguard-rules.pro)文件里加入以下规则,让R8跳过这个冲突检测:

    -dontwarn org.apache.http.client.HttpClient
    -keep class android.net.http.AndroidHttpClient { *; }
    -keep class org.apache.http.client.HttpClient { *; }
    

    也可以用更精准的规则:

    -libraryjars android.jar
    -dontwarn android.net.http.AndroidHttpClient
    -keep class android.net.http.AndroidHttpClient implements org.apache.http.client.HttpClient { *; }
    
  • 启用R8的旧HttpClient兼容特性
    在Module级别的build.gradle中,给release构建类型添加R8配置,启用针对旧Apache HttpClient的兼容:

    android {
        buildTypes {
            release {
                minifyEnabled true
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
                // 新增R8配置
                r8 {
                    enableExperimentalFeatures = ['android.httpLegacy']
                }
            }
        }
    }
    

    要是你的项目之前已经配置了useLibrary 'org.apache.http.legacy',可以保留该配置,同时配合上面的混淆规则。

  • 替换为现代网络库
    从Android 6.0开始,Apache HttpClient就已经被官方废弃,建议逐步把项目里的网络请求替换为OkHttp或者系统自带的HttpURLConnection,从根源上避免这类依赖冲突问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:06:15