集成FCM时Release构建报错:找不到AdaptiveIconDrawable类
解决FCM Release构建时找不到AdaptiveIconDrawable的报错
嘿,这个问题我之前帮人排查过,其实根源很清晰:android.graphics.drawable.AdaptiveIconDrawable是Android 8.0(API级别26)才新增的类,你的Debug构建能正常跑是因为Debug模式通常没开启代码压缩(minify),但Release模式开启后,混淆工具尝试解析FCM库中的相关代码时,就会因为找不到这个高版本API类而报错。
下面给你两个可行的解决办法,选适合你项目的就行:
方法一:升级targetSdkVersion到26及以上
如果你的项目可以兼容Android 8.0及以上设备,直接在Module级的build.gradle里把targetSdkVersion设置为26或更高版本:
android { compileSdkVersion 33 // 或者你当前使用的更高版本 defaultConfig { targetSdkVersion 26 // 至少要到26 // 其他项目配置... } }
这样混淆工具就能找到对应的类,报错自然就消失了。
方法二:添加FCM相关的混淆规则
如果暂时不想升级targetSdkVersion,那就在你的混淆配置文件(一般是proguard-rules.pro)里添加规则,让混淆工具忽略这个找不到的类:
# 解决AdaptiveIconDrawable找不到的问题 -dontwarn com.google.firebase.messaging.zza -dontwarn android.graphics.drawable.AdaptiveIconDrawable
另外,也可以加上FCM的通用混淆规则,避免后续出现其他类似问题:
# FCM通用混淆规则 -keep class com.google.firebase.** { *; } -keep class com.google.android.gms.** { *; } -keepnames class com.google.firebase.** -keepnames class com.google.android.gms.** -dontwarn com.google.firebase.** -dontwarn com.google.android.gms.**
添加完规则后,重新构建Release变体应该就能顺利通过了。
内容的提问来源于stack exchange,提问作者Parinda Rajapaksha
相关产品推荐
相关产品推荐

