Android Modeでエミュレータが起動しない

◆哀丁・四方山話 第08話

pinch
Android Modeでエミュレータが起動しない

ジャンル・キーワード

  • PROCESSING
  • Android Mode
  • Android Studio
  • Android SDK

結果は・・・・解決(^o^)

 

何が起こったの?

PROCESSINGで作成したプログラムはAndroid Modeを利用する事で、Android端末上でも動作させる事が可能となります。すばらしい!。さっそく

様の記事などを参照し、PROCESSINGにAndroid Modeを導入しました。

Android Modeの実行にはAndroid SDKと呼ばれる開発ツールが必須です。

普通、Android SDKはAndroid Studioと一緒にダウンロードするか、下記公式サイトの一番下にある「コマンドライン ツールのみ入手する」から入手します。

その一方で、Android Modeを起動すると、初回起動時に限って以下のような画面が表示されます。

新たにAndroid SDKをダウンロードするか、インストール済みのAndroid SDKがあるなら場所を教えてね、という事ですね。

つまりAndroid Mode経由でもSDKを入手できるという事のようです。

しかし私はAndroid Studioをインストールしていたので、右側の「Locate SDK path manually」ボタンを選択して、Android Studioと一緒にインストールしたSDKのパス( 例:C:¥Android¥sdk)を指定ました。

開発したプログラムのテストには、実機はもちろん、エミュレータが欠かせません。

もちろん、PROCESSINGで開発したプログラムもAndroidエミュレータで動作させる事が可能です。

と、ところが

いざPROCESSINGのプログラムをエミュレータで起動しようとすると、以下のようなエラーが表示されて、動作しないではありませんか!。

事象1


BUILD FAILED …. Cannot  find  C:¥Android¥sdk¥tools¥ant¥build.xml ….

なになに・・・Antツールが C:¥Android¥sdk¥tools の下に見つからないだって?。

いやいや、Antツールは別の場所にインストール済みで、環境変数(Path)も通してあるじゃないか!(-_-;)。

おかしいなと思って、システムの環境変数を見直したり、新しいAndroidのシステムイメージをインストールしたりと、いろいろと試しましたが全く改善しません(汗)。

事象2

そうこうしている内に、今度は


An error occured while running ‘android create avd’. The default android emulator could not be set up.Make sure that the Android SDK is installed properly, and that the system images are installed for level 23.

という謎のエラーが表示されるようになりました。

あうΣ(゚Д゚)・・・事態はより悪い方向に進んでいるようです・・・orz。

API  Level 23のシステムイメージを確認しろって?。なに言ってるのさ。そのイメージはダウンロード済みなんだけど(汗)。

その証拠に、Android Studioからは API Level23 の仮想端末を作成したり、起動する事がちゃんとできます。

おまけにPROCESSINGの標準エディタから、なぜか SDK Managerや AVD Manager が起動しません。

メニューを選んでも無反応。エラーメッセージさえ表示されません。


これまたAndroid Studioからは、 SDK Managerや AVD Manager がちゃんと起動できるのにです。・・・困りました。

 

結論

新しい Android SDK Tools(Revision 25.3.0以降) は、Ver3.0.2の Android Modeからは利用できません

Android SDK Tools のRevision 25.3.0で、仮想端末を生成するコマンド(android.bat)の仕様が変更されると共に、ビルドツールが Ant から Gradle に正式移行しました。

詳しくは、以下の公式サイトから Android SDK の更新履歴を参照してください。

この為、Android Modeから新しいAndroid SDK Toolsを利用すると、事象1のようなエラーとなります。

Ver3.02のAndroid Modeでは、Android Studioと一緒にインストールした、あるいは公式サイトからダウンロードした最新版のSDKは利用せず、Android Mode経由で入手したSDKを利用する必要があります。

Android Mode経由でSDKをインストールすれば、スケッチを仮想端末で起動する際に Antのエラーは表示されなくなります。(SDK Toolとして 25.2.5がインストールされる為です)

また PROCESSINGのメニューから、SDK Managerや AVD Manager が起動できるようになります(笑)。

なおAndroid StudioとAndroid Modeを同一PCで利用すると、AVD Managerで仮想端末を見た際に、双方で作成した仮想端末がゴチャ混ぜに表示されてしまいます。

可能であれば、Android StudioとAndroid Modeは同一PCで混在利用しない方がよいでしょう(汗)。

手前味噌ですが、よろしければ以下の関連記事も参考にしてみてください。

 

わかった事

怪我の巧妙?か、その他にも幾つかわかった事があるので、メモしておきます。何かの参考となれば幸いです。

Android ModeのSDK利用解除方法

私のように、うっかりと誘われるままにAndroid StudioのSDK(最新版SDK)を利用するように指定してしまった方は、以下の手順に従って設定を変更してください。

1.PROCESSING、Android Studioなど関連APを全て終了させるか、PCを再起動します。

2.Android Studioと共にインストールした、最新版SDKのフォルダ名を変更します。例えば、最新版のSDKが C:¥Android¥sdkにインストールされているなら、フォルダ名を C:¥Android¥sdknew 等に変更します。

3.PROCESSINGを起動し、Android Modeに切り替えます。以下のメッセージが再度表示されるので、左側の「Download SDK  automatically」を選択して、Android Mode専用のSDKを入手してください。

Android Mode経由で入手したSDKは、スケッチ格納フォルダ配下にインストールされます。

例えばスケッチ格納フォルダに C:¥processing-3.3¥src を指定してるなら
C:¥processing-3.3¥src¥modes¥AndroidMode¥sdk
にインストールされます。

4.最新版のSDKフォルダ名を元に戻します。(例:C:¥Android¥sdknew ⇒ C:¥Android¥sdk )

5.PROCESSINGの標準エディタからSDK Managerを起動し、必要なシステムイメージをダウンロードします(下記注意を参照の事)。

 

システムイメージについての注意

事象2のエラーがなぜ起こるのか、原因がはっきりしません。

Android Modeのプログラムソースを解析し、Android Modeが仮想端末を作成する処理でエラーになると、上記メッセージを表示することは確認しました。

手元の環境で試した範囲では、SDK Managerで「Google APIs」をInstallしていると、このエラーが発生するようです(汗)。

またNETをいろいろと検索すると、PROCESSINGの公式フォーラムに以下のような記事を見つけました。

複数のシステムイメージを用いていたり、ARM系とIntel系のシステムイメージを混在させていると、発生すると書かれています。

ですので特段理由がない場合は、ARM系システムイメージはダウンロードせずに、 Intel Atom 系システムイメージを利用した方が良いでしょう。

また「Google APIs」はInstallしないようにしてください。

Android ModeはWearに対応していないため、Wearのイメージは不要です。

以下はInstall例です。


あなたの環境でも事象2のエラーが発生しているなら、ARM系のシステムイメージとGoogle APIsをアンインストールすると、改善するかもしれません。

 

Android Modeの仮想端末について

Ver3.02のAndroid Modeでは、エミュレータの仮想端末に以下の名前をもつものを「固定」で利用します。

Processing-0257

Android ModeはPROCESSINGのAPを実行する際、まず上記名前の仮想端末があるか検査します。

上記名前の仮想端末があれば、その端末を起動してAPを動作させます。

ない場合は、SDKに付属する android.bat コマンドを呼び出して、上記名前の仮想端末を作成してから、APを動作させます。

仮想端末の作成と起動は大変遅いため、Android Mode経由で実行すると、TimeOutになる事があります。

仮想端末は自分で作成して、あらかじめ起動しておいてから、PROCESSINGを動かしたほうが効率が良いです。

また事象2が治らない場合、予め上記の名前で仮想端末を作成しておくと回避できる場合があるようです。

参考までに、私が作成した仮想端末の定義を掲載しておきます。

システムイメージは Intel Atom(x86_64)でもうまく動作しました。DeviceやTarget、SDメモリのサイズは、あなたの環境に応じて変更してください。

とにかく重要なのは、仮想端末名とTargetのOSバージョンです(笑)。

 

Android SDK Build-toolsについて

無事に仮想端末が起動しても、PROCESSINGのプログラムを実行すると下記のようなエラーになる事があります。


このエラーがでた場合はPROCESSINGのSDK Managerを起動して、インストールされている Android SDK Build-tools のバージョンを確認してください。

私の環境では、Android Mode経由でSDKをインストールすると、Toolsに「 Android SDK Build-tools  26 rc2 」が自動的にインストールされてしまいました(2017/05時点)。


Android SDK Tools だけではなく、Android SDK Build-tools も新しいバージョンはNGです。

Android SDK Build-tools  26 rc2 をアンインストールして、Android SDK Tools と同世代(25.03など)のBuild-tools をインストールしてください。

 

Intel HAX エミュレータについて

仮想端末は、起動や動作が非常に重たいです(昔から改善されませんよね:泣)。

少しでも動作を高速にするためには、Intel  x86 Emulator Accelerator(HAX)をインストールし、かつシステムイメージに ARM系ではなく Intel系を利用するのが吉です。

しかしどうした事か Android Mode経由でSDKをインストールすると、SDK Manager経由でHAXエミュレータをインストールする事ができない状態となります。


このような場合は、下記 Intel社のホームページに行って最新のHAXエミュレータを入手し、個別にインストールしてください。

個別にHAXMをインストールしてもSDK Managerの表示は変化しません。しかしインストール後に、PROCESSINGのAVD Managerから仮想端末を起動すると


上記のような感じで「HAX is working」と表示される筈です。

この表示が出ていれば、(すこしは)高速なエミュレータが動作します。

ちなみに仮想端末のMemory Optionに指定したRAMサイズが、HAXMをインストールした際に指定したRAMサイズよりも大きいと、上記のようなWarningとなります。

気になる方は、HAXMインストール時のRAMサイズと仮想端末のMemory Optionに指定するRAMサイズを合わせましょう。

 

PROCESSINGのPAppletクラスが見えない件

PROCESSINGの標準エディタをAndroid Modeにしてプログラムを作成し、保存してから再開すると、以下のようにPROCESSINGの各命令下部に赤い波線がついて、命令が正しく認識できなくなる事があります。


本来はPAppletクラスを継承しているので、このような事は無い筈なのですが・・・。

この状態だと、各命令の上で Ctrl + SPACE を押下してもコードアシストが動作しません。またコーディングミスも発見しにくいので、ハッキリ言って使えない子状態です(汗)。

このような状態になったら、標準エディタの右上にあるモードを、Android ModeからJavaに戻して、再度JavaからAndroid Modeに切り替えてください。


これで(一時的に)治ります。

ただし保存して再開すると、また同じ現象が発生します(汗)。おそらくAndroid Modeの不具合だとは思うのですが・・・早く根本的に治ってほしいですね。

 


参考にさせて頂いたサイト様など

●公式サイト関連

●Android Modeのインストールについて


哀丁・四方山話一覧 へ戻る
(画像URL:illust-AC 様:wayo さん、acworks さん iconka.com 様)