Android Studio可启动AVD模拟器但IntelliJ 2023无法启动的求助
问题背景
- 在Android Studio(2021.1.1 Patch 2)中创建的Android模拟器可正常启动,但IntelliJ IDEA 2023.3 Ultimate Edition的设备管理器中虽能看到该设备,却提示“Missing system image for Google APIs [...]”
- 此前可通过IntelliJ启动模拟器,但无法创建新模拟器;移除多年前设置的
ANDROID_SDK_HOME环境变量后,IntelliJ切换到了另一个AVD文件夹,且仅通过File -> Invalidate -> Restart无法让IntelliJ识别路径变更,需完全关闭后手动重启 - 当前AVD文件位于
C:\Users\MYNAME\.android\avd,能在IntelliJ中看到设备,但只能从Android Studio启动,调试器无法正常工作,仅能通过cmd或IntelliJ命令行启动应用 - 点击IntelliJ设备管理器中的加号按钮创建新模拟器无任何反应
日志信息
2023-12-09 13:28:25,672 [50214691] SEVERE - com.android.tools.idea.concurrency.CoroutinesUtils.kt - No value present java.util.NoSuchElementException: No value present at java.base/java.util.Optional.orElseThrow(Optional.java:377) at com.android.tools.idea.avdmanager.DeviceDefinitionList.getDefaultDefinition(DeviceDefinitionList.java:163) at java.base/java.util.stream.Collectors.lambda$uniqKeysMapAccumulator$1(Collectors.java:180) at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169) at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) at com.android.tools.idea.avdmanager.DeviceDefinitionList.setDefaultDevices(DeviceDefinitionList.java:151) at com.android.tools.idea.avdmanager.DeviceDefinitionList.<init>(DeviceDefinitionList.java:118) at com.android.tools.idea.avdmanager.DeviceDefinitionList.<init>(DeviceDefinitionList.java:109) at com.android.tools.idea.avdmanager.ChooseDeviceDefinitionPanel.$$$setupUI$$$(ChooseDeviceDefinitionPanel.java) at com.android.tools.idea.avdmanager.ChooseDeviceDefinitionPanel.<init>(ChooseDeviceDefinitionPanel.java:41) at com.android.tools.idea.avdmanager.ChooseDeviceDefinitionStep.createUIComponents(ChooseDeviceDefinitionStep.java:90) at com.android.tools.idea.avdmanager.ChooseDeviceDefinitionStep.$$$setupUI$$$(ChooseDeviceDefinitionStep.java) at com.android.tools.idea.avdmanager.ChooseDeviceDefinitionStep.<init>(ChooseDeviceDefinitionStep.java:45) at com.android.tools.idea.avdmanager.AvdWizardUtils.createAvdWizard(AvdWizardUtils.java:270) at com.android.tools.idea.avdmanager.AvdManagerImpl$createAvd$2.invokeSuspend(LocalEmulatorProvisionerFactory.kt:77) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:209) at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:22) at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:191) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:843) at com.intellij.openapi.application.impl.ApplicationImpl$4.run(ApplicationImpl.java:463) at com.intellij.openapi.application.impl.RwLockHolder.runWithEnabledImplicitRead(RwLockHolder.kt:75) at com.intellij.openapi.application.impl.RwLockHolder.runWithImplicitRead(RwLockHolder.kt:67) at com.intellij.openapi.application.impl.ApplicationImpl.runWithImplicitRead(ApplicationImpl.java:1430) at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:82) at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:124) at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:44) at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:792) at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739) at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:733) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:761) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:695) at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$12(IdeEventQueue.kt:589) at com.intellij.openapi.application.impl.RwLockHolder.runWithoutImplicitRead(RwLockHolder.kt:44) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:589) at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:72) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:355) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:354) at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:793) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:354) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:349) at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1014) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:106) at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1014) at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:349) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:848) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:391) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92) 2023-12-09 13:28:25,673 [50214692] SEVERE - com.android.tools.idea.concurrency.CoroutinesUtils.kt - IntelliJ IDEA 2023.3 Build #IU-233.11799.241 2023-12-09 13:28:25,673 [50214692] SEVERE - com.android.tools.idea.concurrency.CoroutinesUtils.kt - JDK: 17.0.9; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o. 2023-12-09 13:28:25,673 [50214692] SEVERE - com.android.tools.idea.concurrency.CoroutinesUtils.kt - OS: Windows 10 2023-12-09 13:28:25,674 [50214693] SEVERE - com.android.tools.idea.concurrency.CoroutinesUtils.kt - Plugin to blame: Android version: 233.11799.264 2023-12-09 13:28:43,077 [50232096] INFO - #c.i.w.i.i.j.s.JpsGlobalModelSynchronizerImpl - Saving global entities to files
解决方案
1. 统一SDK与AVD路径
- 打开IntelliJ,进入
File -> Project Structure -> SDK Location - 将
Android SDK location设置为Android Studio使用的SDK路径(默认通常是C:\Users\MYNAME\AppData\Local\Android\Sdk) - 确认
Android Virtual Device location设置为C:\Users\MYNAME\.android\avd,与Android Studio保持一致 - 完全关闭IntelliJ后重新启动,确保路径生效
2. 修复系统镜像识别问题
- 打开IntelliJ的SDK Manager:
Tools -> SDK Manager - 切换到
SDK Platforms标签,找到模拟器对应的Android版本,勾选Google APIs系统镜像并安装(若已安装,先卸载再重新安装) - 切换到
SDK Tools标签,确保Android Emulator和Android SDK Build-Tools的版本与Android Studio一致,如有需要更新或重新安装
3. 解决创建模拟器无反应的问题(针对日志中的NoSuchElementException)
- 关闭IntelliJ,删除以下缓存目录:
C:\Users\MYNAME\.IntelliJIdea2023.3\system\cachesC:\Users\MYNAME\.IntelliJIdea2023.3\system\plugins-sandbox
- 重新启动IntelliJ,等待插件加载完成后再次尝试创建模拟器
- 若问题仍存在,进入
Settings -> Plugins -> Marketplace,找到Android插件,尝试更新到最新稳定版本或降级至适配2023.3的版本
4. 验证调试器连接
- 启动模拟器后,在IntelliJ中进入
Run -> Edit Configurations,确认调试配置的Target Device选择对应的模拟器 - 在IntelliJ终端或cmd中执行
adb devices,确认模拟器已被识别 - 若adb无法识别,执行
adb kill-server后再执行adb start-server重启adb服务
内容的提问来源于stack exchange,提问作者lucidbrot
相关产品推荐
相关产品推荐

