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

Android项目生成签名App Bundle时R8混淆报错求助

问题:生成签名App Bundle时R8混淆任务失败

构建流程在minifyReleaseWithR8阶段报错,具体信息如下:

Task :app:minifyReleaseWithR8
AGPBI: {"kind":"warning","text":"Unexpected reference to missing service implementation class in META-INF/services/org.xmlpull.v1.XmlPullParserFactory: org.kxml2.io.KXmlParser,org.kxml2.io.KXmlSerializer.","sources":[{"file":"D:\Projects\AndroidStudioProjects\MyAndroidApp\app\build\intermediates\merged_java_res\release\mergeReleaseJavaResource\base.jar"}],"tool":"R8"}
AGPBI: {"kind":"error","text":"Library class android.content.res.XmlResourceParser implements program class org.xmlpull.v1.XmlPullParser","sources":[{}],"tool":"R8"}
Library class android.content.res.XmlResourceParser implements program class org.xmlpull.v1.XmlPullParser
Task :app:minifyReleaseWithR8 FAILED

已尝试添加以下ProGuard规则,但问题未解决:

-keep class android.content.res.XmlResourceParser { *; } 
-keep class org.kxml2.io.KXmlParser { *; } 
-keep class org.kxml2.io.KXmlSerializer { *; } 
-keep class org.xmlpull.v1.** { *; }

额外环境信息:

  • Android Studio版本:Android Studio Jellyfish | 2023.3.1 Patch 1
  • Gradle版本:8.6
  • R8版本:8.4.1

解决思路与方案

核心原因分析

错误提示Library class android.content.res.XmlResourceParser implements program class org.xmlpull.v1.XmlPullParser的本质是:Android系统库中的XmlResourceParser实现了项目中引入的第三方程序包类org.xmlpull.v1.XmlPullParser,违反了R8的类归属规则,导致类加载冲突。同时警告信息说明项目缺少XmlPullParserFactory的默认服务实现类。

方案1:移除重复的xmlpull依赖

执行Gradle命令查看项目依赖树,定位重复引入的xmlpull库:

./gradlew app:dependencies

在Module级别的build.gradle中,通过exclude移除第三方库中的xmlpull依赖,保留系统内置版本:

implementation('第三方库坐标') {
    exclude group: 'xmlpull', module: 'xmlpull'
}

方案2:调整R8规则明确类归属

添加以下R8规则,将org.xmlpull.v1包标记为系统库类,并保留服务配置文件:

-dontwarn org.xmlpull.v1.**
-keep class org.xmlpull.v1.** { *; }
-keep interface org.xmlpull.v1.** { *; }
-libraryjars android.jar
# 保留META-INF中的服务配置
-keepresourcefiles META-INF/services/org.xmlpull.v1.XmlPullParserFactory

方案3:强制使用系统内置XmlPullParser

在Module级别的build.gradle中添加配置,优先使用系统库的实现并处理服务配置冲突:

android {
    compileOptions {
        coreLibraryDesugaringEnabled = true
    }
    packagingOptions {
        pickFirst 'META-INF/services/org.xmlpull.v1.XmlPullParserFactory'
    }
}

若启用了coreLibraryDesugaring,需添加对应依赖:

coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'

方案4:升级R8版本

Gradle 8.6推荐搭配AGP 8.6.x(对应R8 8.6.x版本),在Project级别的build.gradle中更新AGP版本:

plugins {
    id 'com.android.application' version '8.6.0' apply false
}

AGP会自动匹配兼容的R8版本,无需单独指定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 17:15:09