PhoneGapアプリをエミュで実行させようとして、

phonegap run android -e としますと、

LAUNCH SUCCESSとかでるくせに、実際のとこインストールすらされていないという現象に悩まされています。

環境は

Mac OSX 10.10.3

PhoneGap 5.0.0-0.28.0

JDK 8u45 (1.8.0_45)

adb 1.0.32

です。

どうもAPIのバージョンが古いと上手くいかないようで、

API16:NG

API19:OK

でした。

apkのできが悪いのかと思い、adbでインストールしてみると、上手くいきます。

$ adb install platforms/android/build/outputs/apk/android-debug.apk

phonegapのエミュレータへの操作はplatforms/android/cordova/lib/emulator.jsに書かれているようです。

てことで、platforms/android/cordova/lib/emulator.js に

installメソッド内でadb installを実行しているところがあるのでコマンドの内容をそのまま出力するようなコードを追加して実行してみます。

1
2
3
module.exports.install = function(target, buildResults) {

    console.log('adb -s ' + resolvedTarget.target + ' install -r -d "' + apk_path + '"', os.tmpdir());
1
2
3
4
5
$ phonegap install android -e --verbose
#してみて、コマンドラインを取得→単体で実行
$ adb -s emulator-5554 install -r -d "/projpath/platforms/android/build/outputs/apk/android-debug.apk"
#すると
Error: Unknown option: -d

‘-d’を取るとちゃんと動くようです。

直接的にはこいつが悪さしているようですが、根本的な解決策は不明。

googleさんにきいてみると

http://stackoverflow.com/questions/30226383/cordova-phonegap-not-launches-the-application-in-the-emulator

を発見しました。

なんか新しい問題のような気がします。

バグフィックスに期待。