应用DexGuard后,Release构建中Coil无法加载Drawable的问题
解决Coil在DexGuard Release构建中无法加载Drawable的问题
Debug构建正常但Release用DexGuard后Drawable加载失败,核心原因是DexGuard的混淆、代码优化或资源裁剪破坏了Coil的资源加载逻辑,可通过以下配置解决:
保留Coil相关类不被混淆
DexGuard可能会混淆Coil的核心类,导致资源加载流程失效。在DexGuard配置文件中添加:-keep class coil.** { *; } -keep class androidx.coil.** { *; }保留Drawable资源ID映射
资源ID被混淆后,Coil无法通过R.drawable.xxx定位到对应资源。添加规则保留应用的Drawable资源类(替换com.yourpackage为你的实际包名):-keep class com.yourpackage.R$drawable { *; }禁用Coil相关代码的优化
DexGuard的代码优化可能移除Coil中反射或动态资源加载的关键逻辑,添加规则:-dontoptimize coil.** -dontoptimize androidx.coil.**验证加载方式
可以尝试直接传入Drawable对象测试是否能正常加载,排查是否是资源ID映射的问题:ivGlowingCircles.load(ContextCompat.getDrawable(context, R.drawable.glowing_circles))
内容的提问来源于stack exchange,提问作者Bilal Bangash
相关产品推荐
相关产品推荐

