web-dev-qa-db-ja.com

Cordova Androidエミュレーション-エラー:nullのプロパティ 'semver'を読み取れません

CordovaでAndroidアプリをエミュレートしようとしていますが、次のエラーメッセージが表示されます:

次のapkを作成しました:/Users/jnj/cordova/hello/platforms/Android/build/outputs/apk/Android-debug.apk Android_HOME =/Users/jnj/Library/Android/sdk Java_HOME =/Library/Java /JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home

エラー:nullのプロパティ 'semver'を読み取れません

解決策はありますか?

38
Jonas Jakobsen

これは、不安定なDeveloper Preview APIバージョンのエミュレーターを使用しているためです。

おそらくAPI 27(Android 8.1)を使用しているデバイスがあります。

AVDを開き、そのデバイスを削除して再実行します。

エミュレータが複数ある場合、エミュレータを起動するときに--target <emulator_name>を使用すると便利です。

使用可能な名前のリストを取得するには、--listを指定してemulateコマンドを呼び出します

64
Daniel

Mighty Chrisが正しい、それが問題であり、彼はそれを上流で修正しました(ありがとう、Chris!)。しかし、彼の答えに追加するために、cordova-Androidを更新してパッチを含めることができない私のような人にとっては、修正は(cordova-Android v6.4.0の場合)です。

  • パスを見つけます<project_root>/platforms/Android/cordova/lib/emulator.js
  • avd.target = 'Android ' + level.semver + ' (API level ' + api_level + ')';を見つけます
  • avd.target = 'Android ' + (level ? level.semver : '') + ' (API level ' + api_level + ')';に置き換えます

関連する patch です。

60
oidualc

これはcordova-Androidのlist_imagesメソッドのバグです。リストにないシステム上でAndroidバージョンに遭遇するとクラッシュします: https://github.com/Apache/cordova- Android/pull/422

プロジェクト内のplatforms/Android/cordova/emulator.jsで修正を手動で適用できます

8

同様の問題があり、端末でadb devicesを実行してデバイスが適切に接続されているかどうかを確認し、デバイスが適切に接続されていないことがわかりました、USBに問題があると思いますケーブルを取り外したため、同じコマンドadb devicesを実行してケーブルを再度接続し、デバイスが接続されていることを示しました。私の問題は解決しました。他の人の助けになることを願っています。

0
Zack

私にとって、Macでは、エミュレータでSDKを実行するには以下が必要でした。

Android St​​udioを開きます(起動時にプロジェクトが開かない場合はプロジェクトを開きます)

「ツール-> AVD Manager」を選択して、デバイスマネージャーツールを開きます。

関連する画像を右クリック(または必要に応じて最初に作成)

「今すぐコールドブート」を選択し、エミュレータが起動するのを待ちます

ターミナルで、platformsおよびconfig.xmlがあるフォルダーにcdします。 cordovaコマンドを実行できる場所

使用可能なデバイスをadb devices(使用不可と表示されている場合はインストール)でリストして、実行中のデバイスのリストを取得し、EMULATOR IDを取得します。この機会に私にとってはemulator-5554でした。

コマンドcordova run Android --target "emulator-5554"を実行し、emulator-5554を独自の参照に置き換えます。

0
Harry B