React Native su Android non è riuscito a trovare Build Tools


92

Cosa causa il seguente problema? La mia versione di Android SDK non è supportata?

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       

Dalla v25 del gestore SDK ora devi installare il Build Tool corretto da Android Studio perché il androidcomando è stato rimosso: stackoverflow.com/a/44295114/82609
Sebastien Lorber

Risposte:


136

Probabilmente dovrai aggiornare i tuoi strumenti di compilazione.

Ho riscontrato il problema quando ho provato ad aggiornare dall'interfaccia grafica, non mostrava la versione minore esatta, quindi non ho potuto aggiornarla.

È stato risolto guardando le versioni disponibili dal terminale con:

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

[...]

E installando la versione giusta con:

android update sdk -a -u -t 4

3
Cos'è questo androidprogramma? Dove lo trovo?
jameshfisher

2
@jameshfisher fa parte dell'SDK Android, si trova nella directory "tools", ad esempio: ~ / android-sdk / tools / android
edur

Ho provato diverse volte ad aggiornare con Android Studio, ma non ha mai funzionato. Questo comando però ha funzionato. Grazie.
jordancooperman

In realtà è in android-sdk-linux nel progetto react.
Ghita Tomoiaga

Nota nelle nuove versioni di SDK manager il androidcomando non funziona più e devi eseguire Android Studio per accedere a questa impostazione vedi stackoverflow.com/a/44295114/82609
Sebastien Lorber

73

Solo una nota: è possibile ricevere questo errore perché l'unica versione degli strumenti di compilazione che hai installato è troppo nuova .

Ho ricevuto esattamente l'errore che ha ricevuto l'OP (lamentando che react-native non è riuscito a trovare la revisione 23.0.1 di Build Tools). Quando ho controllato il mio Android SDK Manager, ho visto questo:

screenshot che mostra 23.0.2 "Installato" ma 23.0.1 "Non installato"

Pensavo ingenuamente che l'installazione dell'ultima versione di Build-tools (23.0.2 al momento della scrittura) avrebbe funzionato, ma a quanto pare no. Inoltre l'installazione di 23.0.1 ha risolto il problema.


stesso problema qui. non c'è un modo per utilizzare strumenti di compilazione più recenti? forse qualche configurazione.
sodik

Questo suggerimento ha funzionato anche per me. 23.0.2 era troppo nuovo, vai a capire. Grazie.
Fernando

1
@boatcoder questa risposta (installa vecchi strumenti di compilazione) non è meno corretta di quella di sodik (modifica build.gradleper fare in modo che React Native utilizzi strumenti di compilazione più recenti). Gli strumenti di build Android sembrano seguire SemVer, quindi la modifica build.gradleper utilizzare una patch successiva o una versione secondaria dovrebbe essere generalmente sicura, potrebbe fornire alcune correzioni di bug a livello di piattaforma o miglioramenti delle prestazioni e ti evita di dover scaricare qualsiasi cosa. Ma interromperà la tua app se eseguita su una versione principale e introduce alcuni rischi anche con patch / versioni minori poiché stai utilizzando RN con strumenti di compilazione che Facebook non intendeva.
Mark Amery

28

Ho anche avuto problemi con la versione più recente degli strumenti di compilazione SDK (come Mark) ma sono riuscito a risolverlo con la modifica android/app/build.gradlee l'impostazione della versione corretta, ad es.

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
...

AGGIORNAMENTO: come suggerito da Mark, è consigliabile aggiornare solo la versione minore (o patch) in questo modo. Un altro motivo per non aggiornare questa versione è quando hai molte librerie di terze parti con parti native: potresti finire per aggiornarle tutte. Quindi è necessario valutare i possibili vantaggi della versione più recente rispetto a un po 'più di lavoro.


1
non dimenticare di cambiare anche la riga 85 targetSdkVersion 22in targetSdkVersion 23.
Xianlin,

Ho scoperto che il file build.gradle generato aveva buildToolsVersion "23.0.1" ma avevo installato solo la versione 23 (23.0.0) - Non sono sicuro da dove "react-native init" trovi i numeri di versione dell'SDK di android / tools. Quindi la causa è in realtà che il comando react-native init non utilizza il numero di versione degli strumenti disponibili?
ferdil

Credo che 23.0.1 sia corretto (forse può cambiare con le versioni RN) ma non c'è alcun rilevamento afaik.
sodik

Grazie, questo ha risolto il mio problema, modificato da 23 a 25 e da 23.0.1 a 25.0.0
niren

4

È necessario modificare 4 file

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"

3

Ho dovuto cambiare il mio progetto Android build.gradlein:

compileSdkVersion 23
buildToolsVersion "23.0.3"

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

3

Significa che gli Android Build Tools installati sul tuo sistema sono qualcos'altro rispetto al file di configurazione della tua app (il tuo file di configurazione punta a 23.0.1) ma probabilmente hai 23, 24 o 25.0. * Sul tuo sistema.

La soluzione per risolvere questo problema:

  1. Modifica il build.gradlefile che si trova sotto anroid/appnella cartella del progetto
  2. Cerca la voce buildToolsVersion"23.0.1" e sostituiscila con l'ultima versione che hai sul tuo sistema. Potete trovare qui:C:\Program Files (x86)\Android\android-sdk\build-tools

OPPURE potresti provare ad installare nel tuo sistema la versione che hai nel build.gradlefile (con SDK manager).


1

Da Android SDK manager v25 devi installare gli strumenti di build corretti direttamente da Android Studio perché il androidcomando non funziona più:

installa da Android Studio


Per accedere a questa schermata da Andriod Studio. file -> impostazioni -> Android SDK -> Strumenti SDK -> in basso a destra "Mostra dettagli pacchetto" Ho aggiunto questo commento perché mi ci è voluto un po 'per trovarlo.
Jason Allshorn

1

Trova il numero di versione nella /Users/username/Library/Android/sdk/build-toolsdirectory, quindi modifica il numero di versione del buildToolsVersioncorrispondente alla configurazione Gradle


1

Se disponi della versione 24.0.1 di Build Tools, aggiorna la tua build.gradlein modo che corrispondabuildToolsVersion "24.0.0"

Il mio Android/Sdk/build-tools/24.0.1/source.propertiesera Pkg.Revisionimpostato 24.0.0.


0

Ho avuto questo problema cercando di compilare dalla riga di comando seguendo la documentazione di React Native. Ho risolto questo problema aprendo il progetto in Android Studio. Le dipendenze non corrispondenti verranno visualizzate nella snackbar degli errori di compilazione nella parte inferiore dell'app. Per ogni errore, fare clic sul collegamento per risolvere il problema.


0

Ho scoperto che succede anche se hai disinstallato alcuni pacchetti dal tuo progetto nativo di reazione e ci sono ancora pacchetti nella tua build gradle dipendenze in fondo alla pagina come:

{ project(':react-native-sound-player') } Assicurati di rimuovere il codice associato nel file MainApplication.java dopo aver rimosso il progetto (': react-native-sound-player')

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.