スポンサーリンク

2014年8月29日金曜日

Androidエミュレータの "failed to sync vcpu reg" 問題

久し振りに Android エミュレータを立ち上げようと思ったら、あれっ?画面が真っ暗で一向に起動しません。何度やっても同じ結果で、よく見るとメッセージウィンドウに
failed to sync vcpu reg
と出ています。 Windows7 64-bit Professional での話です。メッセージの内容からして仮想化機能絡みで問題が起きていることが想像できます。仮想化機能といえば Intel HAXM。試しにこれを無効にしてみると確かに起動します。
Intel HAXM とは、CPU の仮想化機能を利用した Android エミュレータのアクセラレータ機能で、これがサポートされたお陰でエミュレータは格段に早くなり、以前に比べて快適性がグンと増しました。今ではこれ無しではエミュレータを使う気になれません。
それにしてもちょっと前までは何の問題もなく使えていたので、何かの変更が影響していることは間違いありません。
まずは Google 検索です。分ったのはこの "failed to sync vcpu reg" 問題は実に様々なところで発生していて、原因はよく分らないものの、ああやったら直ったとかこうやったら直ったという報告はいろいろあります。しかしどうも自分にあてはまるものは見つかりませんでした。
自分は結構頻繁にシステムの設定を変えたりする方で、何が影響したのか容易に分りませんでした。少なくとも仮想化に関連するようなものは全く変更していない筈です。インストールしたものをアンインストールしてみたり、バックアップイメージをリストアしてみたり、かなり時間をかけて切り分けを行い、ようやく原因、というか影響している大元がみつかりました。想像もしなかったものです。
それはなんと、SKKFEP(SKK日本語入力FEP) という日本語入力アプリでした。MS IME や Google日本語入力に代る日本語入力システムです。仮想化技術と日本語入力アプリ、一見対局にあるようなアプリが影響しているとは。正直びっくりです。最初は信じられなくて何度も確認してみました。SKKFEP が有効になっていると 100% 問題が発生するし、MS IME や Google日本語入力では絶対に発生しません。
ちょっとした酔狂で SKK を使ってみようと思いたち、入れてみたものです。SKK と呼ばれるちょっとキワモノ的な日本語入力方式は、実は Windows 環境での実装はこの SKKFEP に加え、もう一つ選択肢として CorvusSKK というものがあります。面白いことにこの CorvusSKK でもまったく同じ現象が発生します。どちらも個人開発らしいので、ソースコードを共有している訳でもないと思うので、想像するに、Windows の IME 開発のフレームワークに起因しているような気がします。そういえば、Google 検索したときも、どこの国の人か分かりませんが、Google Input Method をアンインストールしたら問題が直ったといった報告がありました。(但し、自分の環境では Google日本語入力では問題は発生していません。)
ここまで分ったらあとはどうするかです。最初はエミュレータを起動するときにいちいちホットキーで IME を切り替えていましたが、だんだん面倒くさくなってきました。アプリに応じて自動的に IME を切り替えてくれる「あいち」というフリー神ソフトを見つけ、現在はこれを使っています。快適です。作者に感謝。