React Native na Androida nie znalazł narzędzi do budowania

92

Co powoduje następujący problem? Czy moja wersja Android SDK nie jest obsługiwana?

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
źródło
Od wersji 25 menedżera SDK musisz teraz zainstalować poprawne narzędzie do budowania z Android Studio, ponieważ androidpolecenie zostało usunięte: stackoverflow.com/a/44295114/82609
Sebastien Lorber

Odpowiedzi:

136

Prawdopodobnie musisz zaktualizować narzędzia do budowania.

Napotkałem problem, gdy próbowałem zaktualizować z interfejsu graficznego, nie pokazał dokładnej wersji pomocniczej, więc nie mogłem go zaktualizować.

Rozwiązano to patrząc na dostępne wersje z terminala z:

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

[…]

I zainstalowanie odpowiedniej wersji z:

android update sdk -a -u -t 4
edur
źródło
3
Co to za androidprogram? Skąd to mam?
jameshfisher
2
@jameshfisher jest częścią Android SDK, znajduje się w katalogu "tools", na przykład: ~ / android-sdk / tools / android
edur
Kilkakrotnie próbowałem aktualizować za pomocą Android Studio, ale nigdy nie działało. To polecenie jednak zrobiło. Dziękuję Ci.
jordancooperman
W rzeczywistości znajduje się w android-sdk-linux w projekcie react.
Ghita Tomoiaga
Uwaga w nowych wersjach menedżera SDK androidpolecenie już nie działa i aby uzyskać dostęp do tego ustawienia, należy uruchomić Android Studio, patrz stackoverflow.com/a/44295114/82609
Sebastien Lorber
73

Tylko uwaga - ten błąd jest możliwy, ponieważ jedyna wersja zainstalowanych narzędzi do kompilacji jest zbyt nowa .

Otrzymałem dokładnie błąd, który dostał OP (narzekając, że natywny reagujący nie może znaleźć wersji narzędzi kompilacji 23.0.1). Kiedy sprawdziłem mojego Menedżera Android SDK, zobaczyłem to:

zrzut ekranu pokazujący 23.0.2 „Zainstalowano”, ale 23.0.1 „Niezainstalowane”

Naiwnie myślałem, że zainstalowanie najnowszej wersji narzędzi kompilacji (23.0.2 w momencie pisania) zadziała, ale najwyraźniej nie. Dodatkowo zainstalowanie 23.0.1 rozwiązało problem.

Mark Amery
źródło
mam ten sam problem. czy nie ma sposobu na użycie nowszych narzędzi do kompilacji? może jakaś konfiguracja.
sodik
Ta sugestia zadziałała również dla mnie. 23.0.2 był zbyt nowy, idź rysunek. Dzięki.
Fernando
1
@boatcoder ta odpowiedź (zainstaluj starsze narzędzia do budowania) jest nie mniej poprawna niż odpowiedź sodika (zmodyfikuj, build.gradleaby React Native używał nowszych narzędzi do budowania). Wydaje się, że Android Build Tools podąża za SemVer, więc modyfikacja w build.gradlecelu użycia późniejszej poprawki lub podrzędnej wersji powinna być zwykle bezpieczna, może zapewnić pewne poprawki błędów na poziomie platformy lub ulepszenia wydajności i oszczędzić konieczności pobierania czegokolwiek. Ale zepsuje twoją aplikację, jeśli zostanie wykonana w wersji głównej , i wprowadza pewne ryzyko nawet w przypadku poprawek / mniejszych wydań, ponieważ używasz RN z narzędziami do kompilacji, których Facebook nie zamierzał.
Mark Amery,
28

Miałem też problem z nowszą wersją narzędzi SDK Build (tak samo jak Mark) ale udało mi się go rozwiązać poprzez modyfikację android/app/build.gradlei ustawienie odpowiedniej wersji np.

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
...

AKTUALIZACJA: Jak zasugerował Mark, rozsądnie jest tylko aktualizować wersję pomocniczą (lub łatkę) w ten sposób. Innym powodem, dla którego nie warto aktualizować tej wersji, jest to, że masz wiele bibliotek innych firm z częścią natywną - możesz w końcu zaktualizować je wszystkie. Musisz więc zważyć możliwe korzyści wynikające z nowszej wersji w porównaniu z nieco większą pracą.

sodik
źródło
1
nie zapomnij również zmienić linii 85 targetSdkVersion 22na targetSdkVersion 23.
Xianlin,
Okazało się, że wygenerowany plik build.gradle miał wersję buildToolsVersion „23.0.1”, ale mam zainstalowaną tylko wersję 23 (23.0.0) - Nie jestem pewien, gdzie „reakcja-native init” znajduje numery wersji zestawu Android / Tools SDK. Czyli przyczyna jest taka, że ​​reakcja natywna komendy init nie używa numeru wersji dostępnych narzędzi?
ferdil
Uważam, że 23.0.1 jest naprawiony (może się zmienić z wersjami RN), ale nie ma afaik wykrywania.
sodik
Dzięki, to rozwiązało mój problem, Zmieniono z 23 na 25 i 23.0.1 na 25.0.0
niren
4

Potrzebujesz zmodyfikować 4 pliki

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
źródło
3

Musiałem zmienić mój projekt Androida build.gradlena:

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
źródło
3

Oznacza to, że Android Build Tools zainstalowane w twoim systemie to coś innego niż plik konfiguracyjny twojej aplikacji (twój plik konfiguracyjny wskazuje na 23.0.1), ale prawdopodobnie masz 23, 24 lub 25.0. * W swoim systemie.

Rozwiązanie tego problemu:

  1. Edytuj build.gradleplik znajdujący się wanroid/app w folderze projektu
  2. Poszukaj wpisu buildToolsVersion„23.0.1” i zastąp go najnowszą wersją, którą masz w systemie. Znajdziesz go tutaj:C:\Program Files (x86)\Android\android-sdk\build-tools

LUB możesz spróbować zainstalować w swoim systemie wersję, którą masz w build.gradlepliku (za pomocą menedżera SDK).

llioor
źródło
1

Z menedżera Android SDK v25 musisz zainstalować odpowiednie narzędzia do kompilacji bezpośrednio z Android Studio, ponieważ androidpolecenie już nie działa:

zainstaluj z Android Studio

Sebastien Lorber
źródło
Aby dostać się do tego ekranu z poziomu Andriod Studio. plik -> ustawienia -> Android SDK -> Narzędzia SDK -> prawy dolny róg "Pokaż szczegóły pakietu" Dodałem ten komentarz, ponieważ jego znalezienie zajęło mi trochę czasu.
Jason Allshorn
1

Znajdź numer wersji w /Users/username/Library/Android/sdk/build-toolskatalogu, a następnie zmodyfikuj numer wersji buildToolsVersionodpowiadający konfiguracji Gradle

user5710491
źródło
1

Jeśli masz narzędzia do kompilacji w wersji 24.0.1, zaktualizuj je, build.gradleaby pasowałybuildToolsVersion "24.0.0"

Mój Android/Sdk/build-tools/24.0.1/source.propertiesbył Pkg.Revisionustawiony 24.0.0.

Muqsith
źródło
0

Miałem ten problem, próbując zbudować w wierszu poleceń zgodnie z dokumentacją React Native. Rozwiązałem ten problem, otwierając projekt w Android Studio. Niedopasowane zależności pojawią się na pasku przekąskowym niepowodzenia kompilacji u dołu aplikacji. W przypadku każdej awarii kliknij łącze, aby rozwiązać problem.

Bradford Condon
źródło
0

Dowiedziałem się, że dzieje się tak również wtedy, gdy odinstalowałeś niektóre pakiety z projektu React-native, a na dole strony nadal znajdują się pakiety w zależnościach build Gradle, takie jak:

{ project(':react-native-sound-player') } Po usunięciu projektu pamiętaj o usunięciu powiązanego kodu z pliku MainApplication.java („: React-native-sound-player”)

Kêvâl Dholakiya
źródło