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
echo y |
na frente desse comando para aceitar automaticamente a licença. Útil quando rodando em uma caixa CI sem cabeça :)~/.android/tools/android update sdk --no-ui --filter build-tools-25.0.0,android-25,extra-android-m2repository
porque aandroid
ferramenta foi localizada para a minha casa$ANDROID_SDK_PATH
para 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
)Respostas:
O AndroidSDK pode finalmente aceitar licenças.
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
fonte
C:\Users\x1\AppData\Local\Android\sdk\tools\android
seguida, ele abriu uma GUI e, em seguida, instalou faltando, em seguida, clique em "Aceitar Liscenses" na nova caixa de diálogo exibida.yes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
Eu encontrei isso com a
alpha5
visualização.Jake Wharton me indicou que atualmente você pode usar
para recriar a
$ANDROID_HOME/license
pasta 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 :)
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
android
ferramenta, mas foi apontado para mim o gerente do SDK dentro do AS que cria a/licenses
pasta.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
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 ...
fonte
mkdir -p
vez de|| true
.echo
:echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "${ANDROID_HOME}/licenses/android-sdk-license"
. Mas acho que seu problema se esconde em outro lugar.Para o mais recente Android Studio (2.3), a melhor maneira de atualizar / aceitar todas as licenças é executar:
talvez você ainda precise copiar os arquivos de licença para outros locais com base na sua configuração.
fonte
tools/bin/sdkmanager --licenses
yes
esse comando de alguma forma para sistemas de compilação automatizados? Você nem sempre terá acesso interativo do console a essas máquinas; portanto, pressionar oy
teclado fisicamente não funcionará.cd $ANDROID_HOME
antes de executar este comandoPara o novo
sdkmanager
utilitá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.
fonte
up-to-date
resposta. Parece--licenses
que não existe mais. Nota: para ver a lista de versões possíveis que podem ser fornecidas:$ANDROID_HOME/tools/bin/sdkmanager --list
yes | android-sdk-linux/tools/bin/sdkmanager --licenses || true
no meu IC.Se você estiver usando o Jenkins, poderá usar o seguinte script bash como primeira etapa do processo de compilação:
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.
fonte
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
Em seguida, ajuste seu comando da seguinte maneira:
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!)
fonte
android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
executando isso via prompt de comando com o administrador corrigiu o erro. Não foi possível instalar o gerenciador de plugisso resolveu meu erro
fonte
yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"
faz a mesma coisa.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 anteriormenteLembre-se: execute essas comunicações com o mesmo usuário
jenkins
. No nosso Debian, o usuário Jenkins é justojenkins
. Em outras palavras: fazê-lo comoroot
criará as licenças aceitas comoroot
, para que Jenkins não as leia.A propósito, encontramos
sdkmanager
em/var/lib/jenkins/tools/android-sdk/tools/bin
. Se o seu não estiver lá, encontre-o comfind / -name "sdkmanager"
fonte
A
android
ferramenta está obsoleta e você deve usá-lasdkmanager
.sdkmanager
també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 comandofunciona 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
-n
ao comando echo.Se isso não estiver funcionando, você pode tentar usar a codificação base64.
Então, para descobrir minha licença:
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, usebase64
.Então você pode usar
base64 -d
recriar o arquivo exatamente.Você pode verificar se o arquivo gravado é o esperado, executando um sha1sum nele.
fonte
se você executar
yes | sdkmanager --licenses
, imprimiremos o conteúdo de$ANDROID_HOME/licenses/android-sdk-license
,nós vamos conseguir isso
Para o GitLab CI, para aceitar licenças do Android SDK Build-Tools 26.0.2, é necessário executar este
fonte
$ANDROID_HOME/licenses/android-sdk-license
isso é pretendido? ie anexadoAndroid SDK Build-Tools 26.02
anexado , adicionou uma nova licença sha1 stringBuild-Tools 26.0.2
e nossa compilação quebrou. Minha solução final foi simplesmente fazeryes | sdkmanager --licenses
. Nãoecho
é necessário e isso é uma prova do futuro.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á:
ao executar os vários comandos que foram sugeridos para instalá-los.
A solução é adicionar
--all
: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.
fonte
25.0.1
.Se você usa,
tools/bin/sdkmanager --licenses
ainda precisa ter uma interação humana. Estou com o problema de usar meu IC do gitlab. Esta é a minha solução:echo y
dirá sim se houver alguma dúvida, mas você precisa criar uma linha por pacote installefonte
Você também pode simplesmente executar:
E no Windows, execute:
fonte
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
fonte
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.
fonte
Resolvi esse problema criando um repositório público do git com os arquivos de licença aceitos. Então eu uso
wget
para 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.fonte
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_HOME
para apontar para onde seu sdk está instalado.fonte
cd $ANDROID_HOME/tools/bin yes | ./sdkmanager --update
ou
yes | $ANDROID_HOME/tools/bin/sdkmanager --update
fonte
para windows, abra o cmd e entre no
bin
diretório executando o comando:Em seguida, execute o
sdkmanager --licenses
comando, ele pede para aceitar licenças.fonte
Error: Unknown argument --licenses
Finalmente encontrei uma solução no Windows, para ter uma instalação silenciosa e automática:
No Windows, a seguinte sintaxe não funciona:
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
Isso criará os arquivos necessários no diretório de licenças. O problema provavelmente está relacionado ao uso do BufferedReader em Java
fonte
Copie todo o diretório de licenças / e cole-o no diretório inicial do Android SDK na máquina em que deseja criar seus projetos.
https://developer.android.com/studio/intro/update.html#download-with-gradle
isso resolveu o problema para mim
fonte
No Windows PowerShell, você pode fazer
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
fonte
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
apt
comapt install android-sdk adb
. E Cordova estava chamando os arquivos instalados noapt
lugar dos arquivos no meu diretório pessoal.Funcionou quando mudei o caminho para SDK no bash:
Então eu removi os arquivos de sistema que não foram mais utilizados:
apt remove android-sdk adb
.fonte
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 --update
reverter acordos, entãoyes |
aparece duas vezes.fonte
Você pode aceitar toda a licença executando o seguinte comando:
Isso solicitará todas as licenças que você ainda não aceitou e você pode simplesmente entrar
y
para aceitar cada uma delas.fonte
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
fonte
Este caminho foi alterado nas versões recentes.
./sdkmanager
está agora em/Library/Android/sdk/cmdline-tools/latest/bin
e basta fazerfonte
Nota: Isso é apenas para usuários de Mac
Eu tive o mesmo problema, mas nenhuma das respostas postadas ajudou, pois não havia nenhuma
tools
pasta presenteLibrary/Android/sdk.
(estou usando o Android 3.6.3 no Mac OS 10.14.4)As etapas abaixo me ajudaram a superar o erro do problema de licenciamento:
Android Studio
cmd + shift + A
. Isso abreActions
a janela pop-up.SDK Manager
e pressione Enter para abrir.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)Apply
botão. Isso instalará o SDK correspondente.fonte
eu corro
do terminal e encontrou esse problema. Para manualmente, acesse Android Studio -> SDK do Android -> Plataforma SDK Clique em Mostrar Detalhes dos Pacotes e verifique:
Ao instalar pacotes, marque aceitar licença => pode resolver o problema.
fonte
No Mac OSX, navegue até o
sdk/tools/bin
Em seguida
./sdkmanager --licenses
, execute e aceite todas as licenças.fonte