Android混淆压缩报错:如何解决transformClassesWithAndroidGradleClassShrinker任务失败?
:app:transformClassesWithAndroidGradleClassShrinkerForDebug任务失败问题 问题根源分析
从错误日志能直接定位核心问题:
com/yongchun/library/view/ImagePreviewFragment references unknown class: com/bumptech/glide/BitmapTypeRequest
com/yongchun/library/adapter/ImageFolderAdapter references unknown class: com/bumptech/glide/DrawableRequestBuilder
...
这些BitmapTypeRequest、DrawableRequestBuilder是Glide 3.x版本的专属API,但你的项目引入的是Glide 4.6.1(两个版本API完全不兼容),而你使用的com.yongchun:com.yongchun.imageselector:1.1.0图片选择库依赖的是Glide 3.x,版本冲突导致类找不到,最终触发代码压缩(shrinker)的警告错误。
另外你的依赖列表里存在大量重复依赖(比如multidex、picasso、gson都重复出现),这也会增加依赖冲突的概率,需要一并清理。
具体解决步骤
1. 替换不兼容的图片选择库(推荐方案)
你已经引入了com.github.esafirm.android-image-picker:imagepicker:1.12.0,这个库完美兼容Glide 4.x,完全可以替代旧的com.yongchun:com.yongchun.imageselector:1.1.0。直接移除旧库的依赖:
// 删掉这一行依赖 compile "com.yongchun:com.yongchun.imageselector:1.1.0"
2. 清理重复依赖
把build.gradle里重复的依赖项删掉,比如:
- 重复的
com.android.support:multidex:1.0.1 - 重复的
com.squareup.picasso:picasso:2.5.2 - 重复的
com.google.code.gson:gson:2.6.2 - 重复的
com.github.satyan:sugar:1.4 - 重复的
jp.wasabeef:recyclerview-animators(保留2.2.7或2.2.6其中一个即可) - 重复的
com.android.support:design:26.1.0
清理后的依赖会更简洁,也能避免潜在的依赖冲突。
3. (临时方案)如果一定要保留旧图片选择库
如果暂时不想替换库,可以在proguard-rules.pro文件中添加规则,让压缩工具忽略这些警告,但不保证运行时不会崩溃:
-dontwarn com.yongchun.library.** -dontwarn com.bumptech.glide.BitmapTypeRequest -dontwarn com.bumptech.glide.DrawableRequestBuilder -dontwarn com.bumptech.glide.DrawableTypeRequest
不过还是强烈建议使用方案1,彻底解决版本兼容问题。
4. 最后执行常规操作
- 点击Android Studio的
Build -> Clean Project - 然后执行
Build -> Rebuild Project - 必要时重启Android Studio(解决缓存残留问题)
内容的提问来源于stack exchange,提问作者Midhilaj

