Android Studio 可以启动 AVD 模拟器,但 IntelliJ 2023 不能

luc*_*rot 5 android intellij-idea

我已经在 Android Studio (2021.1.1 Patch 2) 中创建了一个 android 模拟器,并且可以在那里启动它。在 IntelliJ(2023.3 Ultimate Edition)中,它显示在设备管理器中,但有一条警告“缺少 Google API 的系统映像 [...]”。

早些时候,我也可以从 IntelliJ 启动模拟器,但无法创建新的模拟器。在调试时,我发现了这个环境变量列表,并发现我几年前设置的ANDROID_SDK_HOME,删除它使 IntelliJ 使用不同的 AVD 文件夹。

旁注:IntelliJ 不会在 ; 上注册环境变量更改File -> Invalidate -> Restart。仅在完全关闭和手动重新打开时。

现在我可以在 IntelliJ 中看到该设备,但只能从 Android Studio 启动它。avd 文件似乎位于C:\Users\MYNAME\.android\avd.
如何修复 IntelliJ 的设备管理器,以便我能够从那里启动模拟器,并且理想情况下调试器也可以使用它?目前我必须通过 cmd 或 IntelliJ 命令行启动应用程序。

单击 IntelliJ Device Manager 中的加号按钮来创建新的模拟器设备不会执行任何操作。

该文件C:\Users\MYNAME\AppData\Local\JetBrains\IntelliJIdea2023.3\log\idea.log包含以下内容,但在按下按钮时无法可靠地记录它,因此尽管它提到了 AVD,但它可能是不相关的:

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
Run Code Online (Sandbox Code Playgroud)

我使用的是 Windows 10。