升级AGP 8后出现R8缺失类问题(google.protobuf与java.awt相关)
建议升级的库及排查方向
1. 针对Protobuf相关缺失类
直接升级**com.google.protobuf:protobuf-java**(Android项目用com.google.protobuf:protobuf-android)到最新稳定版(比如3.25.x及以上)。
这个缺失类属于Google Play服务相关的自动生成Protobuf类,旧版本Protobuf库和kotlinx-coroutines的FastServiceLoader交互时存在兼容性问题,新版本会修复这类服务加载的适配逻辑,避免找不到生成类的情况。
2. 针对JNA相关的AWT类缺失
直接升级**net.java.dev.jna:jna和net.java.dev.jna:jna-platform**到最新稳定版(比如5.14.x及以上)。
报错里的AWT类是被JNA的Native$AWT引用的,旧版本JNA没有针对Android环境做足够适配,会在非桌面场景下仍尝试加载AWT相关类;新版本JNA优化了跨平台逻辑,不会强制依赖AWT类,从根源上解决这类缺失问题。
额外排查建议
- 检查依赖树:用Gradle命令
./gradlew app:dependencies(Android)或Maven命令mvn dependency:tree查看这些库的依赖来源,确认是否有间接引入的旧版本,必要时用exclude规则强制排除旧版本,确保使用升级后的最新版。 - 补充ProGuard/R8规则(优先升级库,规则作为补充):如果升级后仍有问题,可添加以下规则避免类被误删:
-keep class com.google.protobuf.java_com_google_android_gmscore_sdk_target_granule__proguard_group_gtm_N1281923064GeneratedExtensionRegistryLite$Loader { *; } -keep class com.sun.jna.Native$AWT { *; } - 升级Google Play服务库:如果项目依赖
com.google.android.gms:play-services-*系列库,也建议同步升级到最新稳定版,这个缺失类和GMSSDK的Protobuf生成绑定,新版本Play服务会修复相关类加载问题。
内容的提问来源于stack exchange,提问作者z.g.y
相关产品推荐
相关产品推荐

