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

如何在Android Studio中同时运行Ktor服务器与Compose安卓应用(Gradle持续同步)

Kotlin Multiplatform项目:Android Studio无法同时运行Ktor服务器与Android App问题解决

问题原因

Android Studio无法同时运行两个模块的核心原因主要有三点:

  • Gradle守护进程资源冲突:Android Studio对Android模块构建的资源调度更严格,Ktor服务器运行时会占用Gradle守护的文件锁、JVM内存等关键资源,导致Android构建进程无法获取资源,陷入无限同步/构建状态。而IntelliJ IDEA对后端模块的资源隔离逻辑更宽松,因此能正常同时运行。
  • 共享构建任务锁竞争:KMP项目的根级别构建任务(如clean、compileKotlin)默认是模块共享的,当Ktor服务器运行时,Gradle守护会持有这些共享任务的锁,Android App的构建流程无法触发。
  • Android Studio的KMP运行限制:当前版本的Android Studio KMP插件对多模块运行的进程隔离支持不完善,默认会优先保障Android模块的构建环境,检测到非Android长期运行进程时会暂停Android构建。

相关因素确认

针对你提到的几个因素:

  1. Gradle守护进程锁定:是核心诱因,守护进程的文件句柄和状态缓存锁会被Ktor运行进程占用,导致Android构建无法推进。
  2. 模块间共享构建任务:确实相关,共享的根级别任务会导致锁竞争,阻止Android模块的独立构建。
  3. Android Studio对KMP运行配置的处理:是的,Android Studio的运行配置逻辑更偏向Android单模块场景,对KMP多模块的并发运行支持不足。

解决方案

1. 配置独立的Gradle守护进程

给两个模块分配独立的Gradle守护,避免资源竞争:

  • 在:server模块的gradle.properties中添加:
    org.gradle.daemon.id=ktor-server-daemon
    org.gradle.jvmargs=-Xmx1g -XX:MaxMetaspaceSize=256m
    
  • 在:androidApp模块的gradle.properties中添加:
    org.gradle.daemon.id=android-app-daemon
    org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m
    

2. 调整运行配置的资源隔离

  • 打开Ktor服务器的运行配置,勾选Run in background,并将Working directory设置为:server模块的根目录(比如$ProjectFileDir$/server)。
  • 打开Android App的运行配置,取消勾选Use same Gradle daemon for this run选项。

3. 解除模块间的共享任务依赖

在项目根目录的build.gradle.kts中,明确让两个模块的核心构建任务独立:

tasks.named("clean") {
    exclude(":server", ":androidApp")
}

tasks.named("compileKotlin") {
    dependsOn(tasks.named(":server:compileKotlin").get().onlyIf { false })
    dependsOn(tasks.named(":androidApp:compileKotlin").get().onlyIf { false })
}

4. 终端启动Ktor服务器(最直接方案)

绕过Android Studio的运行配置限制,直接在终端进入:server模块目录,执行以下命令启动服务器:

cd server
./gradlew run

之后在Android Studio中正常启动Android App即可,两者进程完全隔离,不会有资源冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 12:43:15