android 创建AVD时报空指针异常

来源:互联网 发布:淘宝买酒 编辑:程序博客网 时间:2024/05/18 04:19

本文假设读者拥有 Android 开发及环境搭建经历。

问题发生在今天尝试创建一个虚拟设备AVD时。。。

执行命令:android create avd -c f:\android\sdcard\sdcard.img -n avd4_1 -f  -t 26


结果出现了以下一条错误信息:

1java.lang.NullPointerException
2    at com.android.sdklib.internal.avd.AvdManager.parseAvdInfo
3    ……

很奇怪的问题。。

起初以为是我windows用户为中文致使用户目录为中文引起的缘故,于是指定了avd存放目录:

执行命令:android create avd -c f:\android\sdcard\sdcard.img -n avd4_1 -f -p f:\android\avd -t 26

依旧是上属错误信息,这就奇怪了。。。


于是尝试将 tools 目录添加到系统环境变量,无果。
遂将错误信息搜索,除有相同的提问外,几乎没找到任何有意义的回答。
只能自己动手分析。

空指针这种俗气的错误基本上没有任何意义的,关键在于其后的第一行。
从字面上来看,“parseAvdInfo”的意思即为“解析 Avd 信息”,也就是分析一个 AVD 的属性了。
那么首先这个函数必须要有一个参数,如 parseAvdInfo(AVD avd)。
而这个传入参数从何而来呢?
由于程序尚未启动,那么这个 AVD 唯一可能的来源应该就是我们曾经建立过的 AVD。
既然问题出在这个我们曾经建立但如今为空的 AVD 上(谷歌不会这么傻,必定是读取到了 AVD 信息却又为空),那么我们只要删除它,让 SDK 管理器认为没有 AVD 即可。
于是找到 C:UsersXXX(也就是用户自己的文件夹),删除下面的“.android”文件夹,这个文件夹中保存着我们建立过的 AVD。
最后重新运行 SDK 管理器,一切正常,只要重建一个模拟器即可。