web-dev-qa-db-fra.com

Émulation Cordova Android - Erreur: impossible de lire la propriété 'semver' de null

Essayer d'émuler Android app avec Cordova, mais obtenez le message d'erreur suivant:

Construit le ou les apk suivants: /Users/jnj/cordova/hello/platforms/Android/build/outputs/apk/Android-debug.apk Android_HOME =/Utilisateurs/jnj/Bibliothèque/Android/sdk Java_HOME =/Bibliothèque/Java /JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home

Erreur: impossible de lire la propriété 'semver' de null

Des solutions?

38
Jonas Jakobsen

Cela est dû à l'utilisation d'un émulateur avec une version instable de l'API Developer Preview.

Vous avez probablement un appareil utilisant l'API 27 (Android 8.1).

Ouvrez votre AVD, retirez ce périphérique et exécutez à nouveau.

Il est également utile d’utiliser --target <emulator_name> lors du lancement de l’émulateur si vous en avez plusieurs.

Pour obtenir une liste des noms disponibles à utiliser, appelez la commande emulate avec --list

64
Daniel

Le puissant Chris a raison, c’est le problème et il l’a réglé en amont (merci Chris!). Cependant, juste pour ajouter à sa réponse, pour les personnes comme moi qui ne peuvent pas mettre à jour cordova-Android à inclure le correctif, le correctif est (pour cordova-Android v6.4.0):

  • trouver le chemin <project_root>/platforms/Android/cordova/lib/emulator.js
  • trouver la ligne avd.target = 'Android ' + level.semver + ' (API level ' + api_level + ')';
  • remplacez-le par avd.target = 'Android ' + (level ? level.semver : '') + ' (API level ' + api_level + ')';

Voici le pertinent patch .

60
oidualc

Il s'agit d'un bogue de la méthode list_images de cordova-Android. Il se bloque lorsqu'il rencontre une version Android sur votre système qui ne figure pas dans sa liste: https://github.com/Apache/cordova- Android/pull/422

Vous pouvez appliquer le correctif manuellement dans platforms/Android/cordova/emulator.js dans votre projet.

8
The Mighty Chris

J’avais un problème similaire et j’ai exécuté adb devices sur le terminal pour vérifier si mon périphérique était correctement connecté ou non et j’ai constaté que mon périphérique n’était pas correctement connecté. Je pense qu’il y avait un problème avec mon périphérique USB. câble et j’ai donc débranché le câble, puis rebranché et lancé la même commande adb devices, puis il a montré que mon appareil était connecté. Mon problème a été résolu, j'espère que cela aidera quelqu'un d'autre.

0
Zack

Pour moi, sur un Mac, il fallait ce qui suit pour que le sdk s'exécute dans l'émulateur:

Ouvrez Android Studio (et ouvrez votre projet s'il ne s'ouvre pas au démarrage)

Sélectionnez "Outils -> Gestionnaire AVD" pour ouvrir l'outil de gestion de périphériques.

Faites un clic droit sur l'image concernée (ou créez-en une si nécessaire en premier)

Sélectionnez 'Cold Boot Now' et attendez que l'émulateur démarre

Dans un terminal, allez dans le dossier où votre platforms et config.xml. Où les commandes cordova peuvent être exécutées

Répertoriez les périphériques disponibles avec adb devices (Installez-le s'il est dit non disponible) pour obtenir la liste des périphériques en cours d'exécution et récupérez votre ID EMULATOR. Pour moi à cette occasion c'était emulator-5554.

Exécutez la commande cordova run Android --target "emulator-5554" en remplaçant emulator-5554 par votre propre référence.

0
Harry B