www.icesr.com
IT运维工程师的摇篮

AndroidStudio 打开模拟器闪退

环境:macosx

最近没做什么操作,然后想用下AndroidStudio的模拟器测下东西,发现不管怎么打开都启动不了模拟器。AndroidStudio又没有报任何信息就突然闪退,然后开始排查。

  • 1.可能是模拟器坏了,换一个启动,发现还是老样子,看来必须要获取点错误日志信息。
  • 2.网上搜索到 emulator -avd “Nexus 4 API 22(我的模拟器avd显示的名字)” 命令可以打开模拟器,这样就可以在控制台看到具体信息了。发现报错
<code>PANIC: Unknown AVD <span class="hljs-property">name</span> [Nexus <span class="hljs-number">4</span> API <span class="hljs-number">22</span>], use -<span class="hljs-type">list</span>-avds <span class="hljs-keyword">to</span> see valid <span class="hljs-type">list</span>.
HOME <span class="hljs-keyword">is</span> defined <span class="hljs-keyword">but</span> could <span class="hljs-keyword">not</span> find Nexus <span class="hljs-number">4</span> API <span class="hljs-number">22.</span>ini <span class="hljs-type">file</span> <span class="hljs-keyword">in</span> $HOME/.android/avd
(Note: avd <span class="hljs-keyword">is</span> searched <span class="hljs-keyword">in</span> <span class="hljs-keyword">the</span> order <span class="hljs-keyword">of</span> $ANDROID_AVD_HOME,$ANDROID_SDK_HOME/.android/avd <span class="hljs-keyword">and</span> $HOME/.android/avd)</code>

通过进入$ANDROID_SDK_HOME/.android/avd目录发现原来显示的名字“Nexus 4 API 22”并不是真是名字而是”Nexus_4_API_22

<code>admin-test:avd yfjin$ ls
<span class="hljs-number">3.2</span>_QVGA_ADP2_API_19<span class="hljs-preprocessor">.avd</span> Nexus_4_API_22<span class="hljs-preprocessor">.avd</span>
<span class="hljs-number">3.2</span>_QVGA_ADP2_API_19<span class="hljs-preprocessor">.ini</span> Nexus_4_API_22<span class="hljs-preprocessor">.ini</span></code>
  • 3.使用命令”emulator -avd Nexus_4_API_22“发现仍然报错
<code>[<span class="hljs-number">140737055048640</span>]<span class="hljs-symbol">:ERROR</span><span class="hljs-symbol">:</span>./android/qt/qt_setup.<span class="hljs-symbol">cpp:</span><span class="hljs-number">28</span><span class="hljs-symbol">:Qt</span> library <span class="hljs-keyword">not</span> found at ../emulator/lib64/qt/lib
<span class="hljs-constant">Could</span> <span class="hljs-keyword">not</span> launch <span class="hljs-string">'../emulator/qemu/darwin-x86_64/qemu-system-i386'</span><span class="hljs-symbol">:</span> <span class="hljs-constant">No</span> such file <span class="hljs-keyword">or</span> directory</code>

搜索得到命令行启动的话缺少一个环境变量配置,找到自己放android sdk的目录配置一下

<code><span class="hljs-keyword">export</span> PATH=<span class="hljs-string">"<span class="hljs-variable">$PATH</span>:~/Library/Android/android-sdk-macosx/emulator/"</span></code>
  • 4.再次运行”emulator -avd Nexus_4_API_22“,总算发现真正无法启动的原因了
<code>admin-test:emulator yfjin$ emulator -avd Nexus_4_API_22
emulator: WARNING: encryption <span class="hljs-keyword">is</span> <span class="hljs-keyword">off</span>
Hax <span class="hljs-keyword">is</span> enabled
Hax ram_size <span class="hljs-number">0x60000000</span>
HAX <span class="hljs-keyword">is</span> working <span class="hljs-keyword">and</span> emulator runs <span class="hljs-keyword">in</span> fast virt mode.
Failed <span class="hljs-keyword">to</span> sync vcpu reg
Failed <span class="hljs-keyword">to</span> sync vcpu reg
Failed <span class="hljs-keyword">to</span> sync vcpu reg
Failed <span class="hljs-keyword">to</span> sync HAX vcpu contextInternal <span class="hljs-keyword">error</span>: Initial hax sync failed</code>
  • 5.网上搜了下,发现说什么创建模拟器勾选GPU什么的,但是我没在mac模拟器创建的时候发现这个选项。然后再搜索,在https://cloud.tencent.com/developer/ask/29816/answer/37949发现一句话:“确保没有运行任何虚拟机。在我的例子中,运行了genyMotion,所以才会爆出这个错误”。

  • 6.想了想,最近在学习springboot和docker。前段时间装了docker,而且是开启自启动的,docker貌似启动的时候是和虚拟机有关的。于是立马把docker退了。再次启动模拟器…

成功!

成功!

成功!

  • 话说一步步摸索下来找原因还是蛮有意思的,比粗暴的什么选择GPU那类回答好多了(我也没找到,说不定找到了GPU什么的选项未必就会下一步探究真正的原因了),记录一下,哈哈。

未经允许不得转载:冰点网络 » AndroidStudio 打开模拟器闪退

分享到:更多 ()

评论 抢沙发

评论前必须登录!