React Native no Android falhou ao encontrar ferramentas de construção

92

O que causa o seguinte problema? Minha versão do Android SDK não é compatível?

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
fonte
A partir da v25 do SDK Manager, agora você precisa instalar a Build Tool correta do Android Studio porque o androidcomando foi removido: stackoverflow.com/a/44295114/82609
Sebastien Lorber

Respostas:

136

Provavelmente você precisa atualizar suas ferramentas de construção.

Eu enfrentei o problema quando tentei atualizar a partir da interface gráfica, ela não mostrou a versão secundária exata, então não pude atualizar para ela.

Foi resolvido olhando para as versões disponíveis do terminal com:

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 instalar a versão certa com:

android update sdk -a -u -t 4
edur
fonte
3
Que androidprograma é esse ? Onde eu consigo isso?
jameshfisher
2
@jameshfisher faz parte do Android SDK, está localizado no diretório "tools", por exemplo: ~ / android-sdk / tools / android
edur
Tentei atualizar com o Android Studio várias vezes, mas nunca funcionou. Este comando, entretanto. Obrigado.
jordancooperman
Está no android-sdk-linux no projeto react, na verdade.
Ghita Tomoiaga
Observe que nas novas versões do SDK Manager o androidcomando não funciona mais e é necessário executar o Android Studio para acessar essa configuração, consulte stackoverflow.com/a/44295114/82609
Sebastien Lorber
73

Apenas uma observação - é possível obter este erro porque a única versão das ferramentas de construção que você instalou é muito nova .

Eu obtive exatamente o erro que o OP obteve (reclamando que o react-native não conseguiu encontrar a revisão 23.0.1 do Build Tools). Quando verifiquei meu Android SDK Manager, vi o seguinte:

captura de tela mostrando 23.0.2 "Instalado", mas 23.0.1 "Não instalado"

Eu ingenuamente pensei que instalar a versão mais recente das ferramentas de construção (23.0.2 no momento da escrita) iria funcionar, mas aparentemente não. Além disso, a instalação do 23.0.1 corrigiu o problema.

Mark Amery
fonte
mesmo problema aqui. não há uma maneira de usar ferramentas de construção mais recentes? talvez alguma configuração.
sodik
Essa sugestão funcionou para mim também. 23.0.2 era muito novo, vai entender. Obrigado.
Fernando
1
@boatcoder esta resposta (instalar ferramentas de construção mais antigas) não é menos correta do que a de sodik (modifique build.gradlepara fazer o React Native usar ferramentas de construção mais recentes). As Android Build Tools parecem seguir o SemVer, portanto, modificar build.gradlepara usar um patch posterior ou uma versão secundária deve ser geralmente seguro, pode fornecer algumas correções de bugs no nível da plataforma ou melhorias de desempenho e poupa você de ter que baixar qualquer coisa. Mas isso vai quebrar o seu aplicativo se for feito em uma versão principal , e apresenta alguns riscos mesmo com versões de patch / pequenas, já que você está usando o RN com ferramentas de construção que o Facebook não pretendia.
Mark Amery de
28

Também tive problemas com a versão mais recente das ferramentas SDK Build (o mesmo que Mark), mas consegui resolvê-lo com a modificação android/app/build.gradlee configuração da versão adequada, por exemplo

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
...

ATUALIZAÇÃO: Como sugerido por Mark, é aconselhável atualizar apenas a versão secundária (ou patch) desta forma. Outra razão para não atualizar esta versão é quando você tem muitas bibliotecas de terceiros com parte nativa - você pode acabar atualizando todas elas. Portanto, você deve ponderar os possíveis benefícios da versão mais recente versus um pouco mais de trabalho.

Sodik
fonte
1
não se esqueça de alterar linha 85 targetSdkVersion 22para targetSdkVersion 23bem.
Xianlin
Eu descobri que o arquivo build.gradle gerado tinha buildToolsVersion "23.0.1", mas eu só tinha a versão 23 (23.0.0) instalada - não tenho certeza de onde o "init do react-native" encontra os números de versão do Android / tools SDK. Portanto, a causa é realmente que o comando react-native init não está usando o número de versão das ferramentas disponíveis?
Ferdil
Eu acredito que 23.0.1 foi corrigido (talvez possa mudar com as versões RN), mas não há afaik de detecção.
sodik
Obrigado, isso resolveu meu problema, mudou de 23 para 25 e 23.0.1 para 25.0.0
niren
4

Precisa modificar 4 arquivos

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
fonte
3

Tive que mudar meu projeto Android build.gradlepara:

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
fonte
3

Isso significa que as Android Build Tools instaladas em seu sistema são algo diferente do arquivo de configuração do seu aplicativo (seu arquivo de configuração está apontando para 23.0.1), mas você provavelmente tem 23, 24 ou 25.0. * Em seu sistema.

A solução para corrigir esse problema:

  1. Edite o build.gradlearquivo localizado anroid/appna pasta do seu projeto
  2. Procure a entrada buildToolsVersion"23.0.1" e substitua-a pela versão mais recente do seu sistema. Você pode encontrá-lo aqui:C:\Program Files (x86)\Android\android-sdk\build-tools

OU você pode tentar instalar em seu sistema a versão que você tem no build.gradlearquivo (com o gerenciador de SDK).

Llioor
fonte
1

No Android SDK Manager v25, você deve instalar as ferramentas de compilação corretas diretamente do Android Studio porque o androidcomando não funciona mais:

instalar do android studio

Sebastien Lorber
fonte
Para chegar a esta tela de dentro do Andriod Studio. arquivo -> configurações -> Android SDK -> Ferramentas do SDK -> canto inferior direito "Mostrar detalhes do pacote" Eu adicionei este comentário porque demorei um pouco para encontrá-lo.
Jason Allshorn
1

Encontre o número da versão no /Users/username/Library/Android/sdk/build-toolsdiretório e, em seguida, modifique o número da versão do buildToolsVersioncorrespondente à configuração do Gradle

user5710491
fonte
1

Se você tiver Build Tools versão 24.0.1, atualize seu build.gradlepara corresponderbuildToolsVersion "24.0.0"

Meu Android/Sdk/build-tools/24.0.1/source.propertiestinha Pkg.Revisiondefinido para 24.0.0.

Muqsith
fonte
0

Eu tive esse problema ao tentar construir na linha de comando seguindo a documentação do nativo react. Resolvi esse problema abrindo o projeto no android studio. As dependências incompatíveis aparecerão na lanchonete de falha de compilação na parte inferior do aplicativo. Para cada falha, clique no link para resolver o problema.

bradford condon
fonte
0

Eu descobri que isso também acontece se você desinstalar alguns pacotes de seu projeto react-native e ainda houver pacotes em suas dependências de build do Gradle na parte inferior da página, como:

{ project(':react-native-sound-player') } Certifique-se de remover o código associado no arquivo MainApplication.java após remover o projeto (': react-native-sound-player')

Kêvâl Dholakiya
fonte