2015年4月2日木曜日

Intel x86 の高速 Android エミュレータでスクリーンショットが取得できない

概要

Android のエミュレータを高速にする方法としてIntel x86のCPUをエミューレートする方法が有名ですが、高速エミュレータを使っていてスクリーンショットが取得できない現象に遭遇しました
これまではわざわざARM CPUを使ったエミュレータを別途作成して、それを起動した上でスクリーンショットを取得していたのですが高速エミュレータ上でもうまく取得できるようになったので紹介します

環境

  • Mac OS X 10.10.2
  • Eclipse Luna 4.4.1
  • Android ADT extentions 3.5.1
  • Android-SDK 24.1.2
  • Android 5.1 (API 22)

ポイント

高速エミュレータを動作させるための設定

エミュレータを作成する際にCPUにIntel x86のCPUを選択することはもちろんですが「Use Host GPU」のチェックボックスもONにすると思います
これをONにしないとエミュレータを起動してもずっと黒い画面から進まない状態になるからです(自分はそうなるので「Use Host GPU」をONにしています)

高速エミュレータとして設定したAVDの設定はだいたい以下のようになっていると思います
config_highspeed_emu.png

Use Host GPU をONにしていてもスクリーンショットを取得できるようにするには

これも動作したときの自分の状況ですがポイントはTargetで指定しているAPIのバージョンかなと思います
動作しないときは 4.4 や 5.0 の API Level を選択していたのですが 5.1 が Android SDK Manager からダウンロードできるようになり、それを設定してからはスクリーンショットが取得できるようになりました

なので今回の結果としては
Android SDK Manager で Android 5.1 (API 22) にアップデートする
というのが回答になります

Tips

実はこの問題は公式?でも2013年くらいから議論されています

2015年3月に入って進捗があったようでここでもアップデートしたら動作したという回答があるようです

バージョンや環境に依存する問題なのでアップデートしても動作しない可能性はありますが、とりあえず自分が「環境」の部分に記載したバージョンやマシンの組み合わせであれば動作したので紹介しました

0 件のコメント:

コメントを投稿