Erreur les plus communes lorsque vous tentez d'exécuter une application React Native dans un émulateur Android sous Windows

Pour lancer une application React Native avec Android

react-native run-android  

SDK location not found

Ce message est accompagné du détail suivant :

Define location with sdk.dir in the local.properties file  
or with an ANDROID_HOME environment variable  

En gros, l'emplacement du SDK Android n'est pas trouvé. Sous Windows, le SDK se trouve ici :

C:\Users\Sam\AppData\Local\Android\sdk  

Evidemment, au lieu de "Sam", mettez le nom d'utilisateur correspondant au votre

Pour ajouter l'emplacement du SDK au PATH :

  • dans le menu de démarrage de Windows, cliquez sur l'engrenage représentant les paramètres,
  • puis dans le champ texte "recherchez un paramètre", tapez "env" et acceptez la suggestion "modifier les variables d'environnement système"
  • cliquer sur le bouton "variables d'environnement"
  • dans l'onglet qui souvre, cliquez sur le bouton "nouvelle"
  • en clé ajoutez "ANDROID_HOME"
  • et en valeur C:\Users\Sam\AppData\Local\Android\sdk

IMPORTANT : pensez à fermer la console puis à l'ouvrir de nouveau pour que votre modification du "path" soit prise en compte.

Si vous choisissez de jouez avec le fichier sdk.dir, c'est un fichier qui devrait comporter une unique ligne :

C:\Users\Sam\AppData\Local\Android\sdk

de nouveau en mettant un nom d'utilisateur propre à votre poste en lieu et place de "Sam".

You have not accepted the license agreements of the following SDK components

Cette erreur au complet donne

You have not accepted the license agreements of the following SDK components:  
[Android SDK Platform 23, Android SDK Build-Tools 23.0.1].
Before building your project, you need to accept the license agreements and complete the installation of the missing components using the Android Studio SDK Manager.  

C'est assez clair : il faut accepter la licence du SDK que votre application React Native essaye d'excécuter.
Pour ce faire :

  • j'avais déjà installé au préalable Android Studio (faites le donc si ce n'est déjà fait)
  • dans Android Studio, allez dans Tools / Android / SDK Manager et ajouté Android 6.0 (car c'est la version correspondant à API Level 23 qui m'est demandée)

Execution failed for task ':app:compileDebugJavaWithJavac'

Celle-ci est bête, car elle signifie que j'avais omis d'installer le JDK

Execution failed for task ':app:compileDebugJavaWithJavac'.  
Could not find tools.jar. Please check that C:\Program Files\Java\jre1.8.0_161 contains a valid JDK installation.  

Il a suffit d'installer le JDK depuis le site d'Oracle :

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html  

Execution failed for task ':app:installDebug'.

Et plus précisément

Execution failed for task ':app:installDebug'.  
com.android.builder.testing.api.DeviceException: No connected devices!  

Toujours depuis Android Studio :

  • tools / Android / AVD Manager il suffit de créer un Virtual Device correspond à l'API Level demandé plus haut dans une précédente erreur (API LEvel 23)

Failed run android simulator : No connected devices!

Le message est clair. La question est alors : comment diable faire en sorte de lancer un device ?
Il suffit d'exécuter la commande

// emulator -avd {AVD_NAME}
// dans mon cas, nexus4api23 étant le npm d'un AVD créé précédemment
emulator -avd nexus4api23  

Si la commande emulator n'est pas trouvée car :

Le terme emulator n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou programme exécutable  

ajoutez la simplement à vos variables d'environnement en éditant cette fois la variable "path" pour ajouter :

// evidemment, remplacez "Sam" par votre nom d'utilisateur
C:\Users\Sam\AppData\Local\Android\sdk\emulator

IMPORTANT : pensez à fermer la console puis à l'ouvrir de nouveau pour que votre modification du "path" soit prise en compte.

Options utiles pour la commande emulator

Pour lister tous les AVD

emulator -list-avds

Pour lancer un AVD particulier (vu précédemment)

// emulator -avd {AVD_NAME}
// dans mon cas, nexus4api23 étant le npm d'un AVD créé précédemment
emulator -avd nexus4api23  

Pour davantage de détails concernant la commande emulator

https://developer.android.com/studio/run/emulator-commandline.html  

error: device offline

Si la connection à l'Android Debug Bridge est interrompue :

adb kill-server  
adb start-server  

Avertissement concernant la variable d'environnement ANDROID_HOME obsolète

Il est désormais recommandé d'ajouter une variable d'environnement

ANDROID_SDK_ROOT  

plutôt que l'"ANDROID_HOME"

ANDROID_HOME  

(même si ANDROID_HOME est encore reconnu)

ANDROID_HOME, which also points to the SDK installation directory, is deprecated. If you continue to use it, the following rules apply:  
If ANDROID_HOME is defined and contains a valid SDK installation, it's value is used instead of the value in ANDROID_SDK_ROOT.  
If ANDROID_HOME is not defined, the value in ANDROID_SDK_ROOT is used.  
If ANDROID_HOME is defined but, does not exist or does not contain a valid SDK installation, the value in ANDROID_SDK_ROOT is used instead.  

Et voilà, après avoir eu une ou plusieurs de ces erreurs et avoir utilisé les corrections ci-dessus, votre application React Native devrait se lancer dans votre emulateur Android.