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

创建并复制AVD时触发空指针异常的问题求助

AVD复制时出现NullPointerException的优化解决方案

问题描述

创建Android虚拟设备(AVD)后执行复制操作,弹出错误提示:

创建AVD时发生错误。详情请查看idea.log。

日志核心堆栈信息如下:

java.lang.NullPointerException: Cannot invoke "com.android.sdklib.internal.avd.AvdInfo.getId()" because the return value of "com.android.tools.idea.avdmanager.AvdOptionsModel.getCreatedAvd()" is null
at com.android.tools.idea.devicemanager.virtualtab.VirtualDevicePopUpMenuButtonTableCellEditor.lambda$newDuplicateItem$1(VirtualDevicePopUpMenuButtonTableCellEditor.java:141)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:374)
at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1028)
at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1072)
at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6656)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3385)
at java.desktop/java.awt.Component.processEvent(Component.java:6421)
at java.desktop/java.awt.Container.processEvent(Container.java:2266)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5026)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2804)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:788)
at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:737)
at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:731)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:761)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:759)
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:758)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:918)
at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:840)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:763)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:450)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:791)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:449)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:113)
at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:624)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:447)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:881)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:493)
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)

已知删除所有现有AVD可解决问题,但以下是更高效的优化方案:

优化解决方案

方案1:修复目标AVD的配置文件

该错误是因为AVD的配置文件缺失avd.id字段导致的,手动补充即可:

  1. 定位AVD存储目录:
    • Windows:C:\Users\<你的用户名>\.android\avd
    • macOS/Linux:~/.android/avd
  2. 找到要复制的AVD对应的文件夹,打开其中的config.ini文件
  3. 在文件中添加或修改avd.id字段,格式为avd.id=<AVD名称>-数字(例如avd.id=Pixel5-1)
  4. 保存文件后重启Android Studio,再尝试复制操作

方案2:清理AVD缓存

缓存损坏也可能导致该异常,清理后重试:

  1. 关闭Android Studio
  2. 删除AVD缓存目录:
    • Windows:C:\Users\<你的用户名>\.android\cache
    • macOS/Linux:~/.android/cache
  3. 重新打开Android Studio,刷新AVD列表后再执行复制

方案3:手动复制AVD配置

如果上述方法无效,可直接手动复制配置来创建新AVD:

  1. 复制目标AVD的整个文件夹,并重命名(例如原文件夹Pixel5.avd复制为Pixel5_Copy.avd)
  2. 进入复制后的文件夹,修改config.ini中的关键字段:
    • avd.name:设置为新的AVD名称
    • avd.id:设置为唯一的新ID(例如avd.id=Pixel5_Copy-1)
    • 可选:调整disk.dataPartition.size等参数
  3. 打开Android Studio的AVD Manager,点击Refresh按钮,新AVD会自动出现在列表中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:30:01