初期インストール時に「An error occurred while listing Android targets」が出てしまう場合の対処

自分用メモ。
PhoneGapインストール時に「An error occurred while listing Android targets」が出てエラーとなるケースへの対処。

PhoneGap自体はNode.js系のプロダクトなので、インストールはNode.jsさえ入っていれば以下のコマンドでOK。

npm install -g phonegap

公式サイトにある通り、サンプルアプリを作る。(ちょっとGrailsっぽい)

C:\Users\Administrator\Documents\Sources\PhoneGapTest>phonegap create HelloWorld
[phonegap] missing library phonegap/www/3.3.0
[phonegap] downloading https://github.com/phonegap/phonegap-app-hello-world/archive/3.3.0.tar.gz...
[phonegap] created project at C:\Users\Administrator\Documents\Sources\PhoneGapTest\HelloWorld

C:\Users\Administrator\Documents\Sources\PhoneGapTest>cd HelloWorld

で、run androidを実行するところでエラー。

C:\Users\Administrator\Documents\Sources\PhoneGapTest\HelloWorld>phonegap run android
[phonegap] detecting Android SDK environment...
[phonegap] using the local environment
[phonegap] adding the Android platform...
[phonegap] missing library cordova/android/3.3.0
[phonegap] downloading https://git-wip-us.apache.org/repos/asf?p=cordova-android.git;a=snapshot;h=3.3.0;sf=tgz...
   [error] An error occured during creation of android sub-project.

C:\Users\Administrator\.cordova\lib\android\cordova\3.3.0\bin\node_modules\q\q.js:126
                    throw e;
                          ^
Error: An error occurred while listing Android targets
    at C:\Users\Administrator\.cordova\lib\android\cordova\3.3.0\bin\lib\check_reqs.js:87:29
    at _rejected (C:\Users\Administrator\.cordova\lib\android\cordova\3.3.0\bin\node_modules\q\q.js:808:24)
    at C:\Users\Administrator\.cordova\lib\android\cordova\3.3.0\bin\node_modules\q\q.js:834:30
    at Promise.when (C:\Users\Administrator\.cordova\lib\android\cordova\3.3.0\bin\node_modules\q\q.js:1079:31)
    at Promise.promise.promiseDispatch (C:\Users\Administrator\.cordova\lib\android\cordova\3.3.0\bin\node_modules\q\q.js:752:41)
    at C:\Users\Administrator\.cordova\lib\android\cordova\3.3.0\bin\node_modules\q\q.js:574:44
    at flush (C:\Users\Administrator\.cordova\lib\android\cordova\3.3.0\bin\node_modules\q\q.js:108:17)
    at process._tickCallback (node.js:415:13)

発生している対象のjsを確認すると、「android list target」でエラーが出てるみたい。
Android SDKをダウンロードして展開しただけだと以下のようにパスが通ってないので当たり前ですね。
(Android SDKのインストール先にカレントディレクトリ移せばコマンド通る)

C:\Users\Administrator\Documents\Sources\PhoneGapTest\HelloWorld>android list targets
'android' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

cd C:\Program Files\adt-bundle-windows-x86-20131030\sdk\tools

C:\Program Files\adt-bundle-windows-x86-20131030\sdk\tools>android list target
Available Android targets:
----------
id: 1 or "android-19"
     Name: Android 4.4
     Type: Platform
     API level: 19
     Revision: 1
     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
     ABIs : armeabi-v7a

環境変数PATHに通してあげればとりあえず解決。
(デバイスの設定してないからエラーになるけど、それはまた別の問題。)

C:\Users\Administrators\Documents\Sources\PhoneGapTest\HelloWorld>phonegap run android
[phonegap] detecting Android SDK environment...
[phonegap] using the local environment
[phonegap] adding the Android platform...
[phonegap] compiling Android...
[phonegap] successfully compiled Android app
[phonegap] trying to install app onto device
[phonegap] no device was found
[phonegap] trying to install app onto emulator
   [error] An error occurred while emulating/deploying the android project.

昔のAndroid SDKってPATHにも勝手に足してくれてたような記憶あるけど記憶違いかな・・・。
まあ、解決したので良しとします。