R8与ProGuard规则引发DexPathList类找不到的应用启动报错求助
R8与ProGuard规则引发DexPathList类找不到的应用启动报错求助
各位大佬好!我最近在发布应用的第二个版本时踩了大坑:第一个版本发布全程顺畅,啥问题都没有,结果这次准备发第二版,应用一启动就触发了致命错误,报错信息明确指向是R8和ProGuard规则导致的类找不到问题(具体和DexPathList相关)。有没有懂行的朋友帮忙支个招?
以下是我当前app模块下的proguard-rules.pro内容:
# Uncomment this to preserve the line number information for # debugging stack traces. -keepattributes SourceFile,LineNumberTable # If you keep the line number information, uncomment this to # hide the original source file name. -renamesourcefileattribute SourceFile -dontwarn java.awt.image.BufferedImage -dontwarn javax.imageio.ImageIO -dontwarn javax.imageio.stream.ImageInputStream -dontwarn com.adgutech.commons.ConstantsKt -dontwarn com.adgutech.commons.activities.ATHToolbarActivity -dontwarn com.adgutech.commons.extensions.SharedPreferencesExtensionKt -dontwarn com.adgutech.commons.extensions.ToastExtensionKt -dontwarn com.adgutech.commons.helpers.MaterialValueHelper # 注:原规则内容未完整粘贴,以上为现有可展示部分
我已经做了这些尝试,但问题依旧:
- 核对过两次版本的依赖库版本,确认没有新增或冲突的依赖
- 清理了项目缓存、删除build文件夹后重新构建,还是报错
- 临时关闭R8混淆后应用能正常启动,但开启混淆就会触发这个致命错误
想请教大家几个问题:
- 是不是我的ProGuard规则里漏掉了某些必须保留的类?
- 有没有针对DexPathList类找不到这类混淆报错的通用修复方案?
- 会不会是R8的优化逻辑误删了启动必需的相关类?
备注:内容来源于stack exchange,提问作者adgutech
相关产品推荐
相关产品推荐

