React Native sur Android n'a pas réussi à trouver les outils de compilation

92

Qu'est-ce qui cause le problème suivant? Ma version du SDK Android n'est-elle pas prise en charge?

Starting JS server...                                                                     
Building and installing the app on the device (cd android && gradlew.bat installDebug)...

FAILURE: Build failed with an exception.                                                  

* What went wrong:                                                                        
A problem occurred configuring project ':app'.                                            
> failed to find Build Tools revision 23.0.1       
Łukasz Rzeszotarski
la source
À partir de la v25 du gestionnaire de SDK, vous devez maintenant installer le bon outil de construction depuis Android Studio car la androidcommande est supprimée: stackoverflow.com/a/44295114/82609
Sebastien Lorber

Réponses:

136

Vous devez probablement mettre à jour vos outils de construction.

J'ai rencontré le problème lorsque j'ai essayé de mettre à jour à partir de l'interface graphique, elle n'affichait pas la version mineure exacte, je ne pouvais donc pas la mettre à jour.

Il a été résolu en regardant les versions disponibles du terminal avec:

android list sdk -a

[...]
Packages available for installation or update: 156
1- Android SDK Tools, revision 24.4
2- Android SDK Platform-tools, revision 23.0.1
3- Android SDK Platform-tools, revision 23.1 rc1
4- Android SDK Build-tools, revision 23.0.1

[...]

Et installer la bonne version avec:

android update sdk -a -u -t 4
Edur
la source
3
Quel est ce androidprogramme? Où puis-je l'obtenir?
jameshfisher
2
@jameshfisher fait partie du SDK Android, il se trouve dans le répertoire "tools" par exemple: ~ / android-sdk / tools / android
edur
J'ai essayé plusieurs fois de mettre à jour avec Android Studio, mais cela n'a jamais fonctionné. Cette commande l'a fait cependant. Je vous remercie.
jordancooperman
C'est en fait dans android-sdk-linux dans le projet react.
Ghita Tomoiaga
Notez que dans les nouvelles versions du gestionnaire de SDK, la androidcommande ne fonctionne plus et il faut exécuter Android Studio pour accéder à ce paramètre voir stackoverflow.com/a/44295114/82609
Sebastien Lorber
73

Juste une note - il est possible d'obtenir cette erreur car la seule version des outils de construction que vous avez installée est trop récente .

J'ai eu précisément l'erreur obtenue par l'OP (me plaignant que react-native ne pouvait pas trouver la révision 23.0.1 de Build Tools). Lorsque j'ai vérifié mon gestionnaire de SDK Android, j'ai vu ceci:

capture d'écran montrant 23.0.2 "Installé" mais 23.0.1 "Non installé"

J'avais naïvement pensé que l'installation de la dernière version des Build-tools (23.0.2 au moment de la rédaction) fonctionnerait, mais apparemment pas. De plus, l'installation de 23.0.1 a résolu le problème.

Mark Amery
la source
Même problème ici. n'y a-t-il pas un moyen d'utiliser de nouveaux outils de construction? peut-être une configuration.
sodik le
Cette suggestion a également fonctionné pour moi. 23.0.2 était trop récent, allez comprendre. Merci.
Fernando
1
@boatcoder cette réponse (installer d'anciens outils de construction) n'est pas moins correcte que celle de sodik (modifier build.gradlepour que React Native utilise des outils de construction plus récents). Les outils de construction Android semblent suivre SemVer, donc la modification build.gradlepour utiliser un correctif ultérieur ou une version mineure devrait généralement être sûre, peut fournir des corrections de bogues ou des améliorations de performances au niveau de la plate-forme, et vous éviter d'avoir à télécharger quoi que ce soit. Mais cela cassera votre application si cela est fait sur une version majeure et présente un risque même avec des correctifs / versions mineures puisque vous utilisez RN avec des outils de construction que Facebook n'a pas prévus.
Mark Amery
28

J'ai également eu un problème avec la nouvelle version des outils SDK Build (comme Mark) mais j'ai réussi à le résoudre en modifiant android/app/build.gradleet en définissant la version appropriée, par exemple

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
...

MISE À JOUR: Comme Mark l'a suggéré, il est sage de ne mettre à jour que la version mineure (ou le correctif) de cette manière. Une autre raison pour laquelle ne pas mettre à jour cette version est lorsque vous avez beaucoup de bibliothèques tierces avec une partie native - vous pourriez finir par les mettre à jour toutes. Vous devez donc pondérer les avantages possibles de la nouvelle version par rapport à un peu plus de travail.

sodik
la source
1
ne pas oublier de changer la ligne 85 targetSdkVersion 22à targetSdkVersion 23aussi bien.
Xianlin
J'ai trouvé que le fichier build.gradle généré avait buildToolsVersion "23.0.1" mais je n'avais installé que la version 23 (23.0.0) - Je ne sais pas où le "react-native init" trouve les numéros de version du SDK android / tools. La cause est donc en fait que la commande react-native init n'utilise pas le numéro de version des outils disponibles?
ferdil
Je crois que 23.0.1 est fixe (peut-être peut-être changer avec les versions RN) mais il n'y a pas de détection afaik.
sodik
Merci, cela a résolu mon problème, changé de 23 à 25 et 23.0.1 à 25.0.0
niren
4

Besoin de modifier 4 fichiers

grep buildToolsVersion * -r | grep 23.0.1

Examples/Movies/android/app/build.gradle:    buildToolsVersion "23.0.2"
Examples/UIExplorer/android/app/build.gradle:    buildToolsVersion "23.0.2"
ReactAndroid/build.gradle:    buildToolsVersion "23.0.2"
local-cli/generator-android/templates/src/app/build.gradle:    buildToolsVersion "23.0.2"
gfax
la source
3

J'ai dû changer mon projet Android build.gradleen:

compileSdkVersion 23
buildToolsVersion "23.0.3"

defaultConfig {
    applicationId "com.demoproject"
    minSdkVersion 16
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    ndk {
        abiFilters "armeabi-v7a", "x86"
    }
user6428609
la source
3

Cela signifie que Android Build Tools installé sur votre système est autre chose que dans le fichier de configuration de votre application (votre fichier de configuration pointe vers 23.0.1) mais que vous avez probablement 23, 24 ou 25.0. * Sur votre système.

La solution pour résoudre ce problème:

  1. Modifiez le build.gradlefichier situé sous anroid/appdans votre dossier de projet
  2. Recherchez l'entrée buildToolsVersion"23.0.1" et remplacez-la par la dernière version que vous avez sur votre système. Vous pouvez le trouver ici:C:\Program Files (x86)\Android\android-sdk\build-tools

OU vous pouvez essayer d'installer dans votre système la version que vous avez dans le build.gradlefichier (avec le gestionnaire SDK).

llioor
la source
1

À partir du gestionnaire de SDK Android v25, vous devez installer les outils de construction appropriés directement depuis Android Studio car la androidcommande ne fonctionne plus:

installer à partir du studio Android

Sébastien Lorber
la source
Pour accéder à cet écran depuis Andriod Studio. file -> settings -> Android SDK -> SDK Tools -> en bas à droite "Afficher les détails du package" J'ai ajouté ce commentaire car il m'a fallu un certain temps pour le trouver.
Jason Allshorn
1

Recherchez le numéro de version dans le /Users/username/Library/Android/sdk/build-toolsrépertoire, puis modifiez le numéro de version du buildToolsVersioncorrespondant à la configuration Gradle

user5710491
la source
1

Si vous disposez de la version 24.0.1 de Build Tools, mettez build.gradleà jour votrebuildToolsVersion "24.0.0"

Mon Android/Sdk/build-tools/24.0.1/source.propertiesavait Pkg.Revisionmis à 24.0.0.

Muqsith
la source
0

J'ai eu ce problème en essayant de construire sur la ligne de commande après la documentation de react native. J'ai résolu ce problème en ouvrant le projet dans Android Studio. Les dépendances incompatibles apparaîtront dans le snack-bar des échecs de construction en bas de l'application. Pour chaque échec, cliquez sur le lien pour résoudre le problème.

Bradford Condon
la source
0

J'ai découvert que cela se produit également si vous désinstallez certains packages de votre projet react-native et qu'il y a toujours des packages dans vos dépendances de build gradle en bas de page comme:

{ project(':react-native-sound-player') } Assurez-vous de supprimer le code associé dans le fichier MainApplication.java après avoir supprimé le projet (': react-native-sound-player')

Kêvâl Dholakiya
la source