Android Studio3.1+Gradle4.4构建API>26项目时出现Kotlin空指针异常
我之前也碰到过完全一样的情况——明明没碰过Kotlin,构建高API版本时却突然弹出这个Kotlin空指针报错,给你几个亲测有效的解决办法:
禁用Instant Run
这大概率是最快速解决的方案。AS 3.1的Instant Run模块在处理API 26+的资源构建逻辑时,会调用一些Kotlin相关的代码,哪怕你项目里没引入Kotlin,也可能触发空指针。操作步骤:- 打开Settings(Windows/Linux点
File > Settings,Mac点Android Studio > Preferences) - 找到
Build, Execution, Deployment > Instant Run - 取消勾选「Enable Instant Run to hot swap code/resource changes on deploy」
- 点击
Apply后同步Gradle,再重新构建项目
- 打开Settings(Windows/Linux点
调整Gradle插件版本
AS 3.1对应的Gradle插件是3.1.x系列,如果你用的是早期的3.1.0或3.1.1,可能存在兼容性bug。试着把项目根目录的build.gradle里的插件版本改成稳定的3.1.4:buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.1.4' } }同步后如果提示Gradle版本不匹配,记得把
gradle/wrapper/gradle-wrapper.properties里的distributionUrl改成对应版本(比如https\://services.gradle.org/distributions/gradle-4.4-all.zip)清理项目缓存
有时候旧缓存会导致各种奇怪的构建问题,试试彻底清理:- 执行
Build > Clean Project,再点Build > Rebuild Project - 手动删除项目根目录下的
.gradle文件夹和app/build文件夹 - 重新同步Gradle并构建
- 执行
检查隐式Kotlin依赖
虽然你没手动引入Kotlin,但有些第三方库可能会偷偷依赖Kotlin标准库。可以在Terminal里执行命令查看依赖树:# Mac/Linux ./gradlew app:dependencies # Windows gradlew app:dependencies如果发现有
kotlin-stdlib相关的依赖,就在app/build.gradle里手动添加一个明确的版本依赖,避免版本冲突:implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72"
先从禁用Instant Run开始试,这个方法解决了我当时的问题,希望对你也有用!
内容的提问来源于stack exchange,提问作者QuestionAndroid

