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

AGP 8.x版本Android R8 Release构建循环引用问题求助

问题描述

Debug APK可正常生成,但Release APK构建失败。使用Android Gradle Plugin(AGP)7.4.2时Release构建无异常,升级至8.0.2或8.2.0-alpha06版本后,触发如下R8错误:

Missing class io.ktor.http.UrlEncodingOption (referenced from: java.lang.Object com.my_custom_package.proj_name.logger.internal.Factory.getAnonymousToken(kotlin.coroutines.Continuation))
...(省略中间堆栈信息)
Caused by: [CIRCULAR REFERENCE: com.android.tools.r8.utils.b: Missing class com.google.api.client.http.GenericUrl (referenced from: java.lang.String com.google.crypto.tink.util.KeysDownloader.fetchAndCacheData())

修复方案

在你的ProGuard规则文件(通常是proguard-rules.pro)中添加以下规则,强制保留缺失的类及其关联成员:

# 保留Ktor的UrlEncodingOption类
-keep class io.ktor.http.UrlEncodingOption { *; }

# 保留Google API Client的GenericUrl类
-keep class com.google.api.client.http.GenericUrl { *; }

如果添加后仍存在关联类缺失的问题,可以尝试扩展规则覆盖整个依赖包,避免遗漏:

# 兜底规则:保留Ktor http模块所有类
-keep class io.ktor.http.** { *; }

# 兜底规则:保留Google API Client http模块所有类
-keep class com.google.api.client.http.** { *; }
补充说明

AGP 8.x版本对R8的代码收缩逻辑做了强化,默认会移除它判定为"未直接引用"但实际在运行时被动态调用的类。这两个缺失类分别来自Ktor和Google API Client依赖,你的日志模块、Tink加密库在运行时需要调用它们,因此必须强制保留。

若问题仍未解决,可排查:

  • Ktor、Google API Client的版本是否与AGP 8.x兼容
  • 确认相关依赖是否完整引入(是否存在依赖被误排除的情况)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:54:58