質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.93%

Android Studio 2.3.1 でエミュレーターが起動できない

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,745

ozy999

score 17

前提・実現したいこと

VMware に Ubuntu 16.04 LTS を構築して Android Studio 2.3.1 をインストールしました。

インストール手順は以下のサイトを参考にしました。
第372回 Ubuntu Makeで簡単にAndroid開発環境を構築する

Hello World プロジェクトを作成して、Emulated Performance を 
Hardware-GLES 2.0 にしてエミュレーターを起動しても、エミュレーターは一瞬立ち上がってすぐに消えてしまいます。
Software-GLES 2.0 で起動すると、立ち上がりますが起動まで時間がかかることと動作も遅く実用レベルではありません。

VMware で仮想マシンを構築した場合、kvm はダメなのでしょうか?
VT-x は有効にしてあります。

発生している問題のキャプチャー

・・・

2017-04-28 16:15:21,104 [1184254]   WARN - run.EmulatorConnectionListener - Emulator not ready yet, dev.bootcomplete = null 
2017-04-28 16:15:22,360 [1185510]   WARN - run.EmulatorConnectionListener - Emulator not ready yet, dev.bootcomplete = null 
2017-04-28 16:15:22,645 [1185795]  ERROR - llij.ide.plugins.PluginManager - null 
java.lang.NullPointerException
    at sun.java2d.pipe.AlphaColorPipe.renderPathTile(AlphaColorPipe.java:55)
    at sun.java2d.pipe.AAShapePipe.renderTiles(AAShapePipe.java:201)
    at sun.java2d.pipe.AAShapePipe.renderPath(AAShapePipe.java:159)
    at sun.java2d.pipe.AAShapePipe.fill(AAShapePipe.java:68)
    at sun.java2d.pipe.PixelToShapeConverter.fillRoundRect(PixelToShapeConverter.java:74)
    at sun.java2d.pipe.ValidatePipe.fillRoundRect(ValidatePipe.java:93)
    at sun.java2d.SunGraphics2D.fillRoundRect(SunGraphics2D.java:2268)
    at com.intellij.ide.ui.laf.darcula.ui.DarculaButtonUI.paintDecorations(DarculaButtonUI.java:89)
    at com.intellij.ide.ui.laf.darcula.ui.DarculaButtonUI.paint(DarculaButtonUI.java:98)
    at javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)
    at com.intellij.ide.ui.laf.darcula.ui.DarculaButtonUI.update(DarculaButtonUI.java:164)
    at javax.swing.JComponent.paintComponent(JComponent.java:780)
    at javax.swing.JComponent.paint(JComponent.java:1056)
    at javax.swing.JComponent.paintChildren(JComponent.java:889)
    at javax.swing.JComponent.paint(JComponent.java:1065)
    at javax.swing.JComponent.paintChildren(JComponent.java:889)
    at javax.swing.JComponent.paint(JComponent.java:1065)
    at javax.swing.JComponent.paintChildren(JComponent.java:889)
    at javax.swing.JComponent.paint(JComponent.java:1065)
    at javax.swing.JComponent.paintChildren(JComponent.java:889)
    at javax.swing.JComponent.paint(JComponent.java:1065)
    at javax.swing.JComponent.paintChildren(JComponent.java:889)
    at javax.swing.JComponent.paint(JComponent.java:1065)
    at javax.swing.JComponent.paintChildren(JComponent.java:889)
    at javax.swing.JComponent.paint(JComponent.java:1065)
    at javax.swing.JComponent.paintChildren(JComponent.java:889)
    at javax.swing.JComponent.paint(JComponent.java:1065)
    at javax.swing.JComponent.paintChildren(JComponent.java:889)
    at javax.swing.JComponent.paint(JComponent.java:1065)
    at javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
    at javax.swing.JComponent.paintChildren(JComponent.java:889)
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5217)
    at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
    at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
    at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
    at javax.swing.JComponent.paint(JComponent.java:1042)
    at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
    at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:79)
    at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:116)
    at java.awt.Container.paint(Container.java:1975)
    at java.awt.Window.paint(Window.java:3904)
    at com.intellij.openapi.ui.FrameWrapper$MyJFrame.paint(FrameWrapper.java:462)
    at javax.swing.RepaintManager$4.run(RepaintManager.java:842)
    at javax.swing.RepaintManager$4.run(RepaintManager.java:814)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
    at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:795)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:631)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:387)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
2017-04-28 16:15:22,800 [1185950]  ERROR - llij.ide.plugins.PluginManager - Android Studio 2.3.1  Build #AI-162.3871768 
2017-04-28 16:15:22,806 [1185956]  ERROR - llij.ide.plugins.PluginManager - JDK: 1.8.0_112-release 
2017-04-28 16:15:22,807 [1185957]  ERROR - llij.ide.plugins.PluginManager - VM: OpenJDK 64-Bit Server VM 
2017-04-28 16:15:22,807 [1185957]  ERROR - llij.ide.plugins.PluginManager - Vendor: JetBrains s.r.o 
2017-04-28 16:15:22,807 [1185957]  ERROR - llij.ide.plugins.PluginManager - OS: Linux 
2017-04-28 16:15:22,808 [1185958]  ERROR - llij.ide.plugins.PluginManager - Last Action: Run 
2017-04-28 16:15:23,645 [1186795]   WARN - run.EmulatorConnectionListener - Emulator not ready yet, dev.bootcomplete = null 
2017-04-28 16:15:24,898 [1188048]   WARN - run.EmulatorConnectionListener - Emulator not ready yet, dev.bootcomplete = null 
2017-04-28 16:15:25,977 [1189127]   WARN - run.EmulatorConnectionListener - Emulator not ready yet, dev.bootcomplete = null 
2017-04-28 16:15:27,233 [1190383]   WARN - run.EmulatorConnectionListener - Emulator not ready yet, dev.bootcomplete = null 
2017-04-28 16:15:28,489 [1191639]   WARN - run.EmulatorConnectionListener - Emulator not ready yet, dev.bootcomplete = null 
2017-04-28 16:15:29,758 [1192908]   WARN - run.EmulatorConnectionListener - Emulator not ready yet, dev.bootcomplete = null 
2017-04-28 16:15:30,759 [1193909]   WARN - run.EmulatorConnectionListener - Timed out after 300seconds waiting for emulator to come online. 

補足情報(言語/FW/ツール等のバージョンなど)

環境

  • Windows10 Pro(64bit)
  • VMware Workstaion 12 Pro(12.5.5)
  • Ubuntu 16.04 LTS(64bit)
  • Android Studio 2.3.1
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

check解決した方法

0

下記のようにエミュレーターのライブラリを入れ替えることによって問題は解決いたしました。

lib64stdc++ は root になりますのでエミュレーター周りのリポジトリが更新された場合は、
一旦、ライブラリを元に戻してから Update する必要があります。

$ sudo apt-get install lib64stdc++6:i386
$ cd ~/Android/Sdk/emulator/lib64/libstdc++/
$ mv libstdc++.so.6 libstdc++.so.6.original
$ ln -s /usr/lib64/libstdc++.so.6 ~/Android/Sdk/emulator/lib64/libstdc++

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

仮想マシンのネストというのは仮想化ソフトウェア側の特別な対応が必要になります。同一ソフトによるネストでさえ難題なのに、VMwareとKVMという異種間では尚更難しいのではないかと思います。

確認する手段としては、仮想化したUbuntuの端末で

$ egrep -c vmx /proc/cpuinfo


のようにコマンドを入力して0が表示されたら、少なくともそのままの環境ではKVMによる仮想化はできないということになります。多分、この状態なんじゃないかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/29 18:01

    アドバイスありがとうございます。

    仮想マシンの Ubuntu 16.04 LTS で kvm は動作しています。

    ```
    $ lsmod | grep kvm
    kvm_intel 172032 3
    kvm 544768 1 kvm_intel
    irqbypass 16384 1 kvm
    ```

    取り敢えずエミュレーターを高速に起動できるようになりました。

    エミュレーター関連が怪しかったので lib64stdc++6:i386 をインストールして
    標準のものを置き換えてみました。(これでよいのか不明ですが)
    ファイルサイズも違いますし・・・

    ```
    $ sudo apt-get install lib64stdc++6:i386

    // 標準でインストールされる
    ~/Android/Sdk/emulator/lib64/libstdc++/libstdc++.so.6 <-- 4.8MB
    // こちらで置き換えました
    /usr/lib64/libstdc++.so.6 <--1.6MB
    ```

    キャンセル

  • 2017/04/29 18:50

    すみません、「仮想マシンのネスト」というよりも、「仮想マシンの中でさらに仮想化支援機能を用いる」ことの問題でしたね。私が書いたコマンドも、OSがVT-xを認識しているかどうかを確認するためのもので、このコマンドの実行結果が0だとVT-xによる支援は効かない、という話でした。

    高速に動かすことができたのなら、それで良かったのでしょう。

    キャンセル

  • 2017/04/30 11:20

    しかし同じように仮想マシンを使って Android Studio をインストールされている方は他にもいらっしゃると思うのですが、みなさん問題なく動作してるのでしょうか・・・

    私の環境では問題なく動作しているようで、実際はホストのHDDがアクセスしっぱなしという状態が発生し(ゲスト上ではHDDアクセスは発生していない)、それが足を引っ張って仮想マシンの Ubuntu の動作がもたつく現象が発生していました。

    現在は上記のようにライブラリを変更して問題なく動作しています。

    これで質問の方は自己解決として閉じさせていただきます。

    ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.93%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る