Image-Cropper Gradle构建时transformClassesWithMultidexlistForDebug报错
解决Image-Cropper库导致的multidex构建报错问题
我之前也踩过一模一样的multidex构建失败的坑,结合你说的「同一个Image-Cropper库在一个项目正常运行,另一个项目就炸锅」的情况,大概率是多dex配置不到位、缓存损坏或者依赖版本冲突搞的鬼,给你几个针对性的解决办法,按顺序试就行:
1. 检查并补全Multidex配置
这个报错本质是项目方法数超过65536阈值导致的,必须确保multidex配置正确:
- 在app模块的
build.gradle里添加配置:android { defaultConfig { // 开启multidex支持 multiDexEnabled true } } dependencies { // 引入multidex依赖包 implementation 'com.android.support:multidex:1.0.3' } - 如果你的项目用了自定义Application类,要么让它继承
MultiDexApplication,要么在attachBaseContext里手动初始化:public class MyApp extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } } - 最后别忘了在
AndroidManifest.xml里指定这个自定义Application:<application android:name=".MyApp" ...> </application>
2. 清理缓存后重新构建
报错里明确提到了gradle缓存路径C:\Users\AbdallahGaber.gradle\caches\transforms-1\...,很大可能是缓存文件损坏导致读取失败,直接清缓存重来:
- 点击Android Studio顶部菜单栏的
Build→Clean Project - 接着点击
Build→Rebuild Project - 如果还是不行,手动删缓存文件夹:找到
C:\Users\AbdallahGaber.gradle\caches,删掉里面的transforms-1文件夹(或者整个caches文件夹),然后重启AS重新同步项目
3. 统一Support库版本,解决依赖冲突
报错里出现了support-core-ui-27.1.0.aar,而Image-Cropper库本身依赖了特定版本的Support库,要是和你项目里的版本不一致,很容易触发冲突:
- 方法一:在app模块的
build.gradle里强制统一所有Support库的版本:android { ... configurations.all { // 把版本号换成你项目实际使用的Support版本,比如28.0.0或者其他 resolutionStrategy.force 'com.android.support:support-core-ui:27.1.0' } } - 方法二:排除Image-Cropper自带的Support库,改用你项目里的版本:
// 注意替换成你实际使用的Image-Cropper版本号 implementation('com.theartofdev.edmodo:android-image-cropper:2.8.0') { exclude group: 'com.android.support' }
4. 调整JVM堆内存,解决构建内存不足
有时候构建时内存不够也会出现这种「写不了/读不了文件」的错误,在项目根目录的gradle.properties里加大堆内存:
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
一般前两个方法就能解决问题,要是还不行再试后面的依赖冲突和内存调整。
内容的提问来源于stack exchange,提问作者Abdallah Gaber
相关产品推荐
相关产品推荐

