Aceitar automaticamente todas as licenças do SDK


441

Desde o gradle android plugins 2.2-alpha4 :

A Gradle tentará fazer o download dos pacotes SDK ausentes dos quais um projeto depende

O que é incrivelmente legal e era conhecido por ser um projeto da JakeWharton .

Mas, para baixar a biblioteca do SDK, você precisa: aceitar os contratos de licença ou a gradle informa:

Você não aceitou os contratos de licença dos seguintes componentes do SDK: [Ferramentas de criação do SDK do Android 24, Plataforma do SDK do Android 24]. Antes de criar seu projeto, você precisa aceitar os contratos de licença e concluir a instalação dos componentes ausentes usando o Android Studio SDK Manager. Como alternativa, para aprender a transferir os contratos de licença de uma estação de trabalho para outra, acesse http://d.android.com/r/studio-ui/export-licenses.html

E isso é um problema, porque eu adoraria instalar todas as dependências sdk enquanto fazia um gradle build.

Estou procurando uma solução para aceitar automaticamente todas as licenças. Talvez um script gradle? Você tem alguma ideia ?

Obrigado!

[EDITAR]

Uma solução foi executar:

android update sdk --no-ui --filter build-tools-24.0.0,android-24,extra-android-m2repository

E instale-o manualmente, mas é o novo objetivo do gradle fazer isso.

[EDIT 2]

Uma solução melhor é usar o sdkmananger:

yes | sdkmanager --licenses

12
Você também pode colocar um echo y |na frente desse comando para aceitar automaticamente a licença. Útil quando rodando em uma caixa CI sem cabeça :)
Dori

3
Eu tive que fazer ~/.android/tools/android update sdk --no-ui --filter build-tools-25.0.0,android-25,extra-android-m2repositoryporque a androidferramenta foi localizada para a minha casa
Jacksonkr

7
sdkmanager --licenses não funciona mais. Eu usei --upgrade, ignorei os erros e isso resolveu os problemas de licença.
Jsubmit

6
Eu usei esse comando para o script de construção do ambiente de CI com pequeno ajuste. Adicionei --sdk_root = $ ANDROID_SDK_PATH. O problema era que as licenças foram aceitas e não salvas na pasta raiz do Android SDK. Comando final: sim | sdkmanager --licenses --sdk_root = $ ANDROID_SDK_PATH (sem sudo)
adi9090

3
Certifique-se de ter definido $ANDROID_SDK_PATHpara o caminho raiz real onde você instalou o SDK (ou seja: /opt/android-sdk), ou apenas colocar o caminho diretamente (ou seja: yes | sdkmanager --licenses --sdk_root=/opt/android-sdk)
GMC

Respostas:


365

O AndroidSDK pode finalmente aceitar licenças.

yes | sdkmanager --licenses

EDITAR:

como apontado nos comentários de @MoOx, no macOS, você pode fazer

yes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses

como apontado nos comentários de @pho, @mikebridge e @ Noitidart no Windows, você pode fazer

cmd.exe ""/K"%LocalAppData%\Android\sdk\tools\bin\sdkmanager.bat --licenses"

certifique-se de instalar o java antes


4
Em Viúvas, tive que ir para Executar e, em C:\Users\x1\AppData\Local\Android\sdk\tools\androidseguida, ele abriu uma GUI e, em seguida, instalou faltando, em seguida, clique em "Aceitar Liscenses" na nova caixa de diálogo exibida.
Noitidart

8
Isso não está funcionando para linux. Não há arquivo sdkmanager sob o diretório tools / bin ou em outro lugar. Você pode por favor ajudar?
Mehmed Mert 23/01

36
No macOS, você pode fazeryes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
MoOx

5
Como posso aceitar licenças automaticamente do gradle wrapper?
Howard Swope

7
upvote para @Noitidart para o caminho, mas não funcionou, tive que executar C: \ Users \ x1 \ AppData \ Local \ Android \ sdk \ tools \ bin \ sdkmanager --licenses no prompt de comando e pressione "y "+ Digite os prompts
GaneshT 1/01/18

177

Eu encontrei isso com a alpha5visualização.

Jake Wharton me indicou que atualmente você pode usar

mkdir -p "$ANDROID_SDK/licenses"
echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"
echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_SDK/licenses/android-sdk-preview-license"

para recriar a $ANDROID_HOME/licensepasta atual em sua máquina. Isso teria o mesmo resultado que o processo descrito no link da mensagem de erro ( http://tools.android.com/tech-docs/new-build-system/license ).

Os hashes são sha1s do texto da licença, que eu imagino que serão atualizados periodicamente, portanto esse código funcionará por tanto tempo :)

E instale-o manualmente, mas é o novo objetivo do gradle fazer isso.

Fiquei surpreso no começo que isso não funcionou imediatamente, mesmo quando eu havia aceitado as licenças dos componentes nomeados por meio da androidferramenta, mas foi apontado para mim o gerente do SDK dentro do AS que cria a /licensespasta.

Eu acho que as ferramentas oficiais não gostariam de pular esta etapa por razões legais.

Relendo as notas de versão que afirma

Download automático do SDK: o Gradle tentará fazer o download dos pacotes SDK ausentes dos quais um projeto depende.

O que não significa que funcionará se você ainda não instalou as ferramentas do Android e já aceitou as licenças mais recentes.

EDIT: Dizendo isso, ele ainda não funciona na minha caixa de teste do gubuntu até eu vincular o SDK ao AS. Porém, o IC funciona bem - não sei qual é a diferença ...


Há uma pequena falha no recurso sdkDownload referente a alguns componentes, por exemplo, support-v4. Ele irá atualizar os componentes, mas Gradle não verá atualização até a próxima invocação. Uma solução alternativa para exec gradle duas vezes, uma vez para jogar fora: dependências de gradle || true - code.google.com/p/android/issues/detail?id=212309
Joe Bowbeer 17/10/16

6
você pode usar em mkdir -pvez de || true.
Oldergod 17/10/19

Funciona obrigado por esta falha, é bom saber. Para verificar se o caminho do SDK está definido conforme o esperado: echo $ ANDROID_SDK
tryp

No meu ambiente ANDROID_SDK não está definido, mas funciona com ANDROID_HOME
Dimitri L.

5
@stack_ved: Eu apenas acrescentou outro echo: echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "${ANDROID_HOME}/licenses/android-sdk-license". Mas acho que seu problema se esconde em outro lugar.
Paul

132

Para o mais recente Android Studio (2.3), a melhor maneira de atualizar / aceitar todas as licenças é executar:

cd $ANDROID_HOME
tools/bin/sdkmanager --licenses

talvez você ainda precise copiar os arquivos de licença para outros locais com base na sua configuração.


Este parece ser o melhor caminho a percorrer e funciona em todas as plataformas também, basta executartools/bin/sdkmanager --licenses
JNV

Se você tem um gerente sdk antigo --licenses não funcionará. É necessário copiar a pasta tools para outro local e, em seguida, use --sdk_root = e aponte-o para sua pasta sdk, para que você possa atualizar as ferramentas para uma versão mais recente.
Mirek Michalak

podemos canalizar yesesse comando de alguma forma para sistemas de compilação automatizados? Você nem sempre terá acesso interativo do console a essas máquinas; portanto, pressionar o yteclado fisicamente não funcionará.
void.pointer

Alguém pode me guiar como implementar esta solução? Tem que adicionar esta linha no build.sh?
stack_ved

1
ele trabalhou para mim, mas eu tinha que fazer cd $ANDROID_HOMEantes de executar este comando
Inus Saha

57

Para o novo sdkmanagerutilitário:

yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;24.0.3"

Há um pouco de atraso entre os sim, portanto o comando pode travar com a licença exibida por um tempo, mas não requer intervenção humana.


Na minha instalação debian9, só tenho o sdkmanager.jar: android-sdk-linux / tools / lib / sdkmanager.jar e # java -jar /android-sdk-linux/tools/lib/sdkmanager.jar Erro: a propriedade do diretório tools não está definido, verifique se você está executando o android
user3313834 19/17

1
Isto é baseado no pressuposto de que você baixou as ferramentas do SDK como um arquivo do Google e descompactou-los em $ ANDROID_HOME
A. Rager

Esta parece ser a melhor up-to-dateresposta. Parece --licensesque não existe mais. Nota: para ver a lista de versões possíveis que podem ser fornecidas:$ANDROID_HOME/tools/bin/sdkmanager --list
Marinos An

2
Obrigado pela dica. Acabei usando yes | android-sdk-linux/tools/bin/sdkmanager --licenses || trueno meu IC.
iSWORD 17/07

es $ ANDROID_HOME / tools / bin / sdkmanager "build-tools; 28.0.3" -> alterar a versão funcionou para mim. Obrigado !
Ishab acharya

43

Se você estiver usando o Jenkins, poderá usar o seguinte script bash como primeira etapa do processo de compilação:

(while sleep 3; do echo "y"; done) | $ANDROID_HOME/tools/android update sdk -u

Obviamente, isso instalará TODAS as atualizações disponíveis, mas economizará algum tempo se você puder economizar espaço em disco. O sono é para evitar a linha de leitura interrompida no programa de instalação, pois "yes" não funciona corretamente nesse caso.

EDIT: Você também precisa adicionar o plug-in "Instalar pré-requisitos do projeto Android" na etapa de compilação para obter o $ ANDROID_HOME correto se você estiver usando o gerenciador do SDK embutido.


Eu adicionei sua linha de código antes de "cordova platform add android" na minha versão do jenkins, que está sendo executada no Ubuntu, mas ainda está recebendo o seguinte erro: BUILD FAILED in 7s Erro: / var / lib / jenkins / workspace / qa_global_php / platform / android / gradlew : Falha no comando com o código de saída 1 Saída do erro: FAILURE: Falha na compilação com uma exceção. * O que deu errado: ocorreu um problema ao configurar o projeto raiz 'android'. > Você não aceitou os contratos de licença dos seguintes componentes do SDK:
Ashish Karpe 12/12

[Ferramentas de compilação do SDK do Android 26.0.2]. Antes de criar seu projeto, você precisa aceitar os contratos de licença e concluir a instalação dos componentes ausentes usando o Android Studio SDK Manager.
Ashish Karpe 12/12

32

Infelizmente, a maneira como o OP resolveu originalmente nem sempre funciona. Se você encontrar na mensagem de erro qual é a sua versão atual das ferramentas de compilação . Pode ser que esteja faltando uma versão superior das ferramentas de construção. Nesse caso, você precisa iniciar manualmente o SDK Manager e adicionar as ferramentas de construção e aceitar a licença.

De acordo com as instruções do OP, é o seguinte.

$ ./gradlew build

 
Para honrar as configurações da JVM para essa construção, uma nova JVM será bifurcada. Por favor, considere usar o daemon: https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html.

FALHA: Falha na compilação com uma exceção.

* O que deu errado:
Ocorreu um problema ao configurar o projeto ': app'.
> Você não aceitou os contratos de licença dos seguintes componentes do SDK:
  [Ferramentas de compilação do SDK do Android 24.0.2].

...
FALHA NA CONSTRUÇÃO

NOTA: 16-04-2017

A androidferramenta agora foi descontinuada em favor do novo sdkmanager. Consulte a resposta de Joe Lawson e as postagens subsequentes a partir de março (2017).

Em seguida, ajuste seu comando da seguinte maneira:

android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
Atualizar fontes:
  Buscando https://dl.google.com/android/repository/addons_list-2.xml
  Validar XML
  Analisar XML
  Lista de complementos buscados com sucesso
  Atualizar fontes
  Buscando URL: https://dl.google.com/android/repository/repository-11.xml
  Validar XML: https://dl.google.com/android/repository/repository-11.xml
  Analisar XML: https://dl.google.com/android/repository/repository-11.xml
...
Erro: ignorando o filtro de pacote desconhecido 'build-tools-24.0.2'
-------------------------------
ID da licença: android-sdk-license-xxxxxxxx
Usado por: 
 - Plataforma SDK Android 7.0, API 24, revisão 2
  - Repositório de suporte do Android, revisão 39
-------------------------------

...

20 de novembro de 2015
Você aceita a licença 'android-sdk-license-xxxxxxxx' [s / n]: y

Instalando arquivos:
  Preparando para Instalar Arquivos
  Download da plataforma SDK Android 7.0, API 24, revisão 2
  Instalando a plataforma SDK Android 7.0, API 24, revisão 2
    Plataforma SDK instalada Android 7.0, API 24, revisão 296%)
  Download do Repositório de Suporte Android, revisão 39
  Instalando o Repositório de Suporte do Android, revisão 39
    Repositório de suporte Android instalado, revisão 3999%)
  Feito. 2 pacotes instalados.

Executando isso novamente, ainda não faz Gradle feliz. Portanto, a aceitação manual é a única solução até que alguém crie algo melhor. (Por favor faça!)


1
android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repositoryexecutando isso via prompt de comando com o administrador corrigiu o erro. Não foi possível instalar o gerenciador de plug
ins do phonegap

32

isso resolveu meu erro

echo yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"

2
Para salvar alguns caracteres, yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"faz a mesma coisa.
Flimzy

31

Encontramos o mesmo problema ao criar o projeto no Jenkins. Com buildToolsVersion '25.0.2', devemos aceitar licenças antes da construção. No nosso caso, precisávamos executar:

yes | sdkmanager --update que aceita licenças para o próprio sdkmanager e, em seguida,

yes | sdkmanager --licenses que aceita novas licenças não aceitas anteriormente

Lembre-se: execute essas comunicações com o mesmo usuário jenkins. No nosso Debian, o usuário Jenkins é justo jenkins. Em outras palavras: fazê-lo como rootcriará as licenças aceitas comoroot , para que Jenkins não as leia.

A propósito, encontramos sdkmanagerem /var/lib/jenkins/tools/android-sdk/tools/bin. Se o seu não estiver lá, encontre-o comfind / -name "sdkmanager"


2
este também resolveu o problema no meu caso (ferramentas de compilação 26.0.x), com Jenkins no Docker. Obrigado!
Giordano

1
Infelizmente, isso não inclui a parte "automaticamente" da pergunta.
M0skit0

@ m0skit0 obrigado pelo seu comentário! Atualizei a pergunta para corresponder ao recurso da última versão para aceitar automaticamente todas as licenças sem intervenção humana.
Roc Boronat

24

A androidferramenta está obsoleta e você deve usá-la sdkmanager. sdkmanagertambém grava o arquivo de licenças quando você o aceita pela primeira vez. A licença muda dependendo do SDK que você está usando, mesmo que o comando

echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"

funciona em alguns sistemas. Não vai funcionar em tudo. Algumas instalações do SDK esperam que o arquivo de licença termine sem uma nova linha no arquivo; tente adicionar um -nao comando echo.

echo -n -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"

Se isso não estiver funcionando, você pode tentar usar a codificação base64.

Então, para descobrir minha licença:

$> rm ${ANDROID_HOME}/
$> unzip tools_r25.2.3-linux.zip -d ${ANDROID_HOME}
$> ${ANDROID_HOME}/tools/bin/sdkmanager "system-images;android-23;default;x86_64"

Ele solicitará que você aceite a licença. Depois de aceitar, ele será copiado para ${ANDROID_HOME}/licenses/android-sdk-license. Para garantir que você sempre obtenha exatamente o que está escrito, use base64.

$> base64 ${ANDROID_HOME}/licenses/android-sdk-license
Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU=

Então você pode usar base64 -drecriar o arquivo exatamente.

$> echo Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU= | base64 -d > ${ANDROID_HOME}/licenses/android-sdk-license

Você pode verificar se o arquivo gravado é o esperado, executando um sha1sum nele.

$> sha1sum ${ANDROID_HOME}/licenses/android-sdk-license
da6b80c9c47b41c0bf7032938e7137a58a3dc249

19

se você executar yes | sdkmanager --licenses, imprimiremos o conteúdo de $ANDROID_HOME/licenses/android-sdk-license,

nós vamos conseguir isso

# cat $ANDROID_HOME/licenses/android-sdk-license

8933bad161af4178b1185d1a37fbf41ea5269c55

d56f5187479451eabf01fb78af6dfcb131a6481e

Para o GitLab CI, para aceitar licenças do Android SDK Build-Tools 26.0.2, é necessário executar este

before_script:
  - mkdir -p $ANDROID_HOME/licenses
  - echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > $ANDROID_HOME/licenses/android-sdk-license
  - echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> $ANDROID_HOME/licenses/android-sdk-license

Seu segundo eco está indo para o mesmo, $ANDROID_HOME/licenses/android-sdk-licenseisso é pretendido? ie anexado
Ryan R

1
@RyanR, sim, o segundo eco é Android SDK Build-Tools 26.02anexado , adicionou uma nova licença sha1 string
jk2K

Estou usando pipelines de bitbucket, mas o conceito parece ser o mesmo do IC do GitLab. Sua resposta me ajudou a entender melhor todo o processo. Obrigado!
Ridcully

@Ridcully Também estou usando o Bitbucket Pipelines e me encontrei aqui quando atualizamos Build-Tools 26.0.2e nossa compilação quebrou. Minha solução final foi simplesmente fazer yes | sdkmanager --licenses. Não echoé necessário e isso é uma prova do futuro.
Ryan R

@ Ryan Você quer dizer que eu posso apenas adicionar 'yes | sdkmanager --licenses 'para o pipeline.yml? Isso seria bom!
Ridcully

16

Observe que, para qualquer pessoa que venha a essa pergunta atualmente, o build-tools-24.0.2 é (acho) agora considerado obsoleto, então você terá:

 Error: Ignoring unknown package filter 'build-tools-24.0.2'

ao executar os vários comandos que foram sugeridos para instalá-los.

A solução é adicionar --all:

android update sdk --no-ui --all --filter "build-tools-24.0.2"

Além disso, se você estiver no Linux de 32 bits, tudo depois das ferramentas de compilação 23.0.1 é apenas de 64 bits , portanto não será executado. Os usuários de 32 bits estão presos no 23.0.1, a única maneira de obter ferramentas de construção posteriores é mudar para 64 bits.


1
Sim, as ferramentas de construção foram apenas encontradas 25.0.1.
not2qubit

1
Sua solução foi a única coisa que eu poderia encontrar para trabalhar em um sem cabeça ubuntu 16 máquina para construir-tools-25 e Gradle 4
spartygw

14

Se você usa, tools/bin/sdkmanager --licensesainda precisa ter uma interação humana. Estou com o problema de usar meu IC do gitlab. Esta é a minha solução:

wget --quiet --output-document=tools.zip https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
unzip -qq tools.zip
echo y | tools/bin/sdkmanager "platforms;android-25"
echo y | tools/bin/sdkmanager "platform-tools"
echo y | tools/bin/sdkmanager "build-tools;25.0.2"
echo y | tools/bin/sdkmanager "extras;android;m2repository"
echo y | tools/bin/sdkmanager "extras;google;m2repository"

echo y dirá sim se houver alguma dúvida, mas você precisa criar uma linha por pacote installe


Ainda bastante relevante depois de vários meses. Obrigado. Você salvou meu dia :)
Prasanna Ramaswamy

Isso foi útil para mim, também usando o
GitLab

13

Você também pode simplesmente executar:

$ANDROID_HOME/tools/bin/sdkmanager --licenses

E no Windows, execute:

%ANDROID_HOME%/tools/bin/sdkmanager --licenses

11

Para uma mensagem de erro sobre o SDK api number 25:

android update sdk --no-ui --all --filter build-tools-25.0.1,android-25,extra-android-m2repository


10

Ok PARA ALGUÉM QUE TEM ESSA QUESTÃO A PARTIR DE 2018. As respostas acima NÃO funcionaram para mim. O que funcionou foi abrir o Android SDK - clicando no botão DOWNLOAD na barra de ferramentas e selecionando os pacotes apropriados. Após o término do download, você poderá aceitar o contrato de licença.

insira a descrição da imagem aqui


7

Resolvi esse problema criando um repositório público do git com os arquivos de licença aceitos. Então eu uso wgetpara buscar essas licenças em qualquer máquina que eu precise no diretório [sdk-dir] / license antes de executar ./gradlew para criar meu projeto.


6

Para aqueles que têm problemas com o SDK da linha de comando, o motivo pelo qual não encontra as licenças que você aceitou é porque elas foram gravadas em um local diferente do que $ANDROID_HOME/licenses onde elas precisam estar.

Achei que a solução mais fácil era aceitar licenças como esta:

$ANDROID_HOME/bin/sdkmanager --licenses --sdk_root=$ANDROID_HOME

Nota: Isso pressupõe que você configurou ANDROID_HOMEpara apontar para onde seu sdk está instalado.


6

cd $ANDROID_HOME/tools/bin yes | ./sdkmanager --update

ou

yes | $ANDROID_HOME/tools/bin/sdkmanager --update


"Automaticamente"
m0skit0 12/02/19

6

para windows, abra o cmd e entre no bindiretório executando o comando:

cd C:\Users\username\AppData\Local\Android\sdk\tools\android\Sdk\tools\bin

Em seguida, execute o sdkmanager --licensescomando, ele pede para aceitar licenças.


1
Graças isto é o que eu fiz
mynameisjohnj

Eu receboError: Unknown argument --licenses
deanwilliammills

4

Finalmente encontrei uma solução no Windows, para ter uma instalação silenciosa e automática:

No Windows, a seguinte sintaxe não funciona:

echo y | sdkmanager --licenses

Parece que o "y" não foi enviado corretamente para o programa java chamado no lote.

A solução alternativa é criar um arquivo file-y.txt com vários "y", um por linha, e usar

call sdkmanager --licenses < file-y.txt

Isso criará os arquivos necessários no diretório de licenças. O problema provavelmente está relacionado ao uso do BufferedReader em Java



3

No Windows PowerShell, você pode fazer

for($i=0;$i -lt 30;$i++) { $response += "y`n"}; $response | sdkmanager --licenses

Isso é muito mais flexível e requer zero intervenção manual. O número 30 é arbitrário, deve ser suficiente para cobrir o número de aceitações de licença, mas pode ser aumentado se necessário


Mais um motivo para não usar o Windows.
M0skit0

3

Eu tive o mesmo erro ao usar o Cordova.

O problema foi devido ao fato de eu ter instalado o Android Sdk através do Android Studio e completamente aptcom apt install android-sdk adb. E Cordova estava chamando os arquivos instalados no aptlugar dos arquivos no meu diretório pessoal.

Funcionou quando mudei o caminho para SDK no bash:

# Change path
export ANDROID_HOME="$HOME/Android/Sdk/"
echo "Android home = $ANDROID_HOME"
# Accept licenses
eval "${ANDROID_HOME}/tools/bin/sdkmanager --licenses"
# Run Cordova
cordova build android

Então eu removi os arquivos de sistema que não foram mais utilizados: apt remove android-sdk adb.


3

Aqui está a minha configuração do Docker.
Você pode seguir de um ambiente Linux simples.

Observe que yes |e --licenses --sdk_root=${ANDROID_HOME}cláusulas.
Parece sdkmanager --updatereverter acordos, então yes |aparece duas vezes.

FROM openjdk:8
# Install dev-essential(gnumake)
RUN apt update
RUN apt install -y build-essential
# Set ENV
ENV SDK_URL="https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip" \
    ANDROID_HOME="/usr/local/android-sdk" \
    ANDROID_VERSION=28 \
    ANDROID_BUILD_TOOLS_VERSION=28.0.3 \
    GRADLE_VERSION=4.10.3 \
    NDK_VERSION=r16b
# Download Android SDK
RUN mkdir "$ANDROID_HOME" .android \
    && cd "$ANDROID_HOME" \
    && curl -o sdk.zip $SDK_URL \
    && unzip sdk.zip \
    && rm sdk.zip \
    && yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses --sdk_root=${ANDROID_HOME}
# Install Android Build Tool and Libraries
RUN $ANDROID_HOME/tools/bin/sdkmanager --update
RUN yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
    "platforms;android-${ANDROID_VERSION}" \
    "platform-tools" --sdk_root=${ANDROID_HOME}
# Install Gradle
RUN wget https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-all.zip
RUN mkdir /opt/gradle
RUN unzip gradle-${GRADLE_VERSION}-all.zip -d /opt/gradle
ENV PATH=${PATH}:/opt/gradle/gradle-${GRADLE_VERSION}/bin
# Install NDK
RUN wget https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-linux-x86_64.zip
RUN mkdir /opt/ndk-bundle
RUN unzip android-ndk-${NDK_VERSION}-linux-x86_64.zip -d /opt/ndk-bundle
ENV PATH=${PATH}:/opt/ndk-bundle

RUN mkdir /application
WORKDIR /application

"Parece que o sdkmanager --update reverte os acordos, então sim | aparece duas vezes." Uau, você está certo. Esta é uma descoberta muito frustrante, mas boa.
cephus

2

Você pode aceitar toda a licença executando o seguinte comando:

 sdkmanager --licenses

Isso solicitará todas as licenças que você ainda não aceitou e você pode simplesmente entrar ypara aceitar cada uma delas.


"Automaticamente"
m0skit0 12/02/19

2

Eu tentei todo o comando acima na máquina Windows 10, mas a solução foi usar o SDKMANAGER para verificar e aceitar licenças comprar instalar versões ausentes

insira a descrição da imagem aqui


Nenhum dos comandos do CMD funcionou para mim, apenas esta solução. Obrigado
deanwilliammills

2

Este caminho foi alterado nas versões recentes. ./sdkmanagerestá agora em /Library/Android/sdk/cmdline-tools/latest/bine basta fazer

./sdkmanager --licenses

2

Nota: Isso é apenas para usuários de Mac

Eu tive o mesmo problema, mas nenhuma das respostas postadas ajudou, pois não havia nenhuma toolspasta presente Library/Android/sdk.(estou usando o Android 3.6.3 no Mac OS 10.14.4)

captura de tela de erro

As etapas abaixo me ajudaram a superar o erro do problema de licenciamento:

  1. Aberto Android Studio
  2. Pressione cmd + shift + A. Isso abre Actionsa janela pop-up.
  3. Pesquise SDK Managere pressione Enter para abrir.
  4. Isso abre pop-up para Android SDK . Selecione outra versão do Android, além da já instalada. (No meu caso, o Android 10.0 já estava instalado, por isso selecionei o Android 9.0)
  5. Depois selecione o Applybotão. Isso instalará o SDK correspondente.

Solução

  1. Agora execute seu aplicativo, ele deve funcionar sem nenhuma exceção.

captura de tela de sucesso


Ei, isso resolve o meu no Linuxmint 19.3
GaryP

1

eu corro

#react-native run-android 

do terminal e encontrou esse problema. Para manualmente, acesse Android Studio -> SDK do Android -> Plataforma SDK Clique em Mostrar Detalhes dos Pacotes e verifique:

+ Google APIs
+ Android SDK Platform 23
+ Intel x86 Atom_64 System Image
+ Google APIs Intel x86 Atom_64 System Image

Ao instalar pacotes, marque aceitar licença => pode resolver o problema.


1

No Mac OSX, navegue até o sdk/tools/bin

Em seguida ./sdkmanager --licenses, execute e aceite todas as licenças.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.