You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio Ladybug构建Kotlin项目时出现NullPointerException

解决Android Studio Ladybug中mergeExtDex任务的NullPointerException问题

问题场景

在Android Studio Ladybug | 2024.2.1 Patch 2 + Gradle 8.9环境下构建项目时,mergeExtDexBanknameDebug任务执行失败,抛出如下NullPointerException:

Task :app:mergeExtDexBanknameDebug FAILED
AGPBI: {"kind":"error","text":"java.lang.NullPointerException: Cannot invoke "String.length()" because "" is null","sources":[{"file":"C:\Users\u725097\.gradle\caches\8.9\transforms\ce16b362b4c14a4e13be95283f210a79\transformed\jetified-slf4j-api-2.0.16.jar"}],"tool":"D8"}

java.lang.NullPointerException: Cannot invoke "String.length()" because "" is null

同一项目在Android Studio Flamingo | 2022.2.1 Patch 1 + Gradle 7.5环境下使用org.slf4j:slf4j-api:1.7.30可正常编译,当前报错环境中SLF4J版本被自动升级到了2.0.16,且无法确定该版本的引入来源。

解决步骤

1. 强制锁定SLF4J版本为1.7.30

在项目根目录的build.gradle(Groovy语法)或build.gradle.kts(Kotlin语法)中添加依赖约束,强制所有模块使用指定版本的SLF4J:

Groovy版本:

allprojects {
    configurations.all {
        resolutionStrategy {
            force 'org.slf4j:slf4j-api:1.7.30'
        }
    }
}

Kotlin DSL版本:

allprojects {
    configurations.all {
        resolutionStrategy.force("org.slf4j:slf4j-api:1.7.30")
    }
}

2. 清理缓存并重新构建

  • 执行Gradle清理命令:
    Windows:gradlew clean
    macOS/Linux:./gradlew clean
  • 清除Android Studio缓存:依次点击File → Invalidate Caches...,勾选"Clear file system cache and local history",点击Invalidate and Restart重启IDE。

3. 验证依赖版本是否生效

执行依赖树命令查看SLF4J版本:
Windows:gradlew app:dependencies
macOS/Linux:./gradlew app:dependencies

在输出结果中搜索slf4j-api,确认其版本已变为1.7.30。

原因说明

你使用的Ktor 1.3.2属于旧版本,原本依赖较低版本的SLF4J。升级Gradle到8.9后,依赖解析机制可能自动拉取了更高版本的SLF4J(2.0.16),而该版本的字节码结构与新版AGP的D8编译器不兼容,从而触发了空指针异常。强制锁定旧版本SLF4J即可解决兼容性问题。

内容的提问来源于stack exchange,提问作者user3296448

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 20:46:11