升级Android项目时遭遇com.android.build.api.transform.TransformException异常
解决Kotlin升级后出现的
com.android.build.api.transform.TransformException: java.lang.RuntimeException: Unable to pre-dex异常 我之前升级Kotlin版本的时候也碰到过一模一样的问题,折腾了好一会儿才解决,给你分享几个亲测有效的解决思路:
1. 先彻底清理项目缓存
Android Studio的缓存经常会残留旧的编译文件,尤其是版本升级后很容易出问题:
- 先点菜单栏的
Build→Clean Project,等清理完成后再点Build→Rebuild Project - 如果还是不行,手动删掉项目根目录下的
.gradle文件夹和app/build文件夹,然后重新点击File→Sync Project with Gradle Files
2. 检查并解决Kotlin依赖冲突
升级到Kotlin 1.2.41后,有些第三方库可能还依赖着旧版本的Kotlin stdlib,这就会导致版本冲突触发预编译错误。你可以用这个命令查看完整的依赖树:
./gradlew app:dependencies
找到所有包含kotlin-stdlib的依赖项,如果发现有版本低于1.2.41的,就在项目根目录的build.gradle里强制统一版本:
subprojects { configurations.all { resolutionStrategy { force "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" // 如果项目用到了jdk8的特性,也加上下面这行 // force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" } } }
3. 确认kapt的配置完全正确
你已经替换了annotationProcessor为kapt,还要确保插件的顺序没错:
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' // 这个必须放在kotlin-android插件之后
另外,要检查所有之前用annotationProcessor的依赖都换成了kapt,比如Dagger、Room这类需要注解处理器的库,不能有遗漏。
4. 确保使用的是JDK 8
Kotlin 1.2+版本要求JDK 8及以上,你可以检查一下:
- 打开
File→Project Structure→SDK Location - 看
JDK location是不是指向JDK 8的安装路径,如果不是,修改后重新同步项目
要是上面的方法都没解决,最后可以试试File → Invalidate Caches / Restart,选择Invalidate and Restart,让Android Studio彻底清理缓存并重启,这个方法有时候能解决一些奇奇怪怪的编译问题。
内容的提问来源于stack exchange,提问作者Rahul Ahuja
相关产品推荐
相关产品推荐

