升级至Android Studio Dolphin后R8编译缺失Facebook相关类求助
解决Android Studio Dolphin版本下R8缺失Facebook Nullsafe类的编译警告
问题根源
你遇到的R8警告是因为Facebook广告 mediation库(com.google.ads.mediation:facebook:6.11.0.1)依赖了com.facebook.infer.annotation包下的注解类,但这些类并没有被包含在mediation库中,R8在代码压缩/混淆阶段检测到引用却找不到对应类,因此抛出警告。
方案1:添加缺失的依赖库(推荐)
直接在build.gradle的dependencies块中引入Facebook Infer注解库,让R8能找到缺失的类:
dependencies { // 原有依赖保持不变... // 添加Facebook Infer注解依赖,解决Nullsafe类缺失问题 implementation 'com.facebook.infer:infer-annotation:0.18.0' }
方案2:通过ProGuard规则保留/忽略缺失类
如果不想新增依赖,可以通过ProGuard规则处理:
保留缺失类(稳妥方案)
在你的proguard-rules.pro和proguard-rules-debug.pro文件中添加以下规则:# 保留Facebook Nullsafe相关注解类 -keep class com.facebook.infer.annotation.Nullsafe {*;} -keep class com.facebook.infer.annotation.Nullsafe$Mode {*;}直接忽略缺失类警告(仅消除提示,不推荐)
在build.gradle的android块中,为每个buildType添加R8配置:android { // 原有配置保持不变... buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // 关闭缺失类的强制检查 android.r8 { forceMissingClasses false } } debug { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-debug.pro' android.r8 { forceMissingClasses false } } } }
内容的提问来源于stack exchange,提问作者Rafiqullah Taibzada
相关产品推荐
相关产品推荐

