Desejo configurar o ambiente de desenvolvimento Android na linha de comando e encontrar o seguinte problema:
wget http://dl.google.com/android/android-sdk_r22.0.5-linux.tgz
depois de extrair o arquivo, execute
tools/android update sdk --no-ui
No entanto, é muito lento ao executar
Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml
O resultado é que nada na pasta build-tools, e eu quero, é aapt e apkbuilder, já que eu quero criar apk a partir da linha de comando sem form.
android
sdk
android-build
aapt
build-tools
Zhenguo Yang
fonte
fonte
--all
opção nas dicas oficiais . Obrigado.echo "yes"
pode ser reduzido paraecho "y"
, mas isso não funciona em todos os casos. Em alguns casos, você pode obter mais de um prompt de licença de y / n, dependendo do filtro e dos pacotes específicos.echo "y"
responderá apenas ao primeiro prompt, mas não ao restante. Estou tentando fazê-lo funcionar comyes
comando sem sucesso até agora.Como mencionado em outras respostas, você pode usar a
--filter
opção para limitar os pacotes instalados:android update sdk --filter ...
As outras respostas não mencionam que você pode usar identificadores de string constantes em vez de índices (que serão alterados) para as opções de filtro. Isso é útil para instalações autônomas ou com script. Homem por
--filter
opção:android list sdk --all --extended
:Em seguida, você pode usar os IDs de string como opções de filtro para especificar com precisão as versões desejadas:
android update sdk --filter tools,platform-tools,build-tools-19.0.3
etcfonte
--extended
opção, deixando claro o que instalar nos scripts de IC.android update
também exigirá a--all
opção, caso contrário, a ajuda de uso será exibida. Por exemplo:android update sdk --no-ui --all --filter build-tools-21.1.0
(e +1 para a--extended
opção que permite que você veja os pseudônimos comobuild-tools-21.1.0
)--filter
e--extended
?--extended
opção para poder escrever um script e usá-lo no meu Continuous Integration Server, onde ele pode atualizar os recursos do sdk. Boa dica!A versão 25.2.3 (e superior) do
Android SDK Tools
pacote contém uma nova ferramenta - sdkmanager - que simplifica esta tarefa de instalar ferramentas de construção a partir da linha de comandos.Está localizado na
android_sdk/tools/bin
pastaUso (da documentação ):
Exemplo de uso (no meu Mac):
Você também pode especificar várias opções , por exemplo, para forçar todas as conexões a usar HTTP (
--no_https
) ou para usar o servidor proxy (--proxy_host=address
e--proxy_port=port
).Para verificar as opções disponíveis, use a
--help
bandeira. Na minha máquina (Mac), a saída é a seguinte:fonte
Warning: Unknown argument --package_file
?--package_file=packages.txt
.As ferramentas de compilação do ADB não serão baixadas automaticamente, por comando android update sdk --no-ui
Portanto, para instalar o tipo Buil-Tool (no console):
Lembre-se do número listado antes do item e execute o seguinte:
Os comandos devem ser digitados em / YourFolder / android-sdk-linux / tools
Também para pasta remota (servidor aberto por ssh, por exemplo), digite:
Para uma lista simples de pacotes ADB, digite no terminal:
para instalar todos os pacotes:
Ou com filtros (vírgula é separador):
fonte
Uma excelente fonte de informações que encontrei ao tentar instalar tudo o que o Android SDK relacionava a partir da linha de comando, era esse Dockerfile. Dentro do Dockerfile, você pode ver que o autor executa um único comando para instalar
platform tools
ebuild tools
sem nenhuma outra interação. No caso de o OP apresentar, o comando seria adaptado para:fonte
--all
bandeiraEu apenas tive um bom tempo obtendo dependências sdk do Android instaladas via linha de comando e, como a documentação que acompanha as ferramentas e on-line está muito ausente, pensei em publicar o que descobri aqui.
Estou trabalhando
android sdk r24.4.1
paralinux
. Existem dois comandos que você pode executar para listar os pacotes disponíveis:android list sdk
e o mais exaustivo:
android list sdk --all
Os números de pacotes para pacotes específicos diferem para cada comando acima! Por exemplo, o primeiro lista o pacote
API 23.1 revision 3
como pacote#3
e o último o lista como#29
.Agora, existem duas maneiras diferentes de instalar usando o comando android.
tools/android update sdk --no-ui --filter <package number>
e
tools/android update sdk -u -a -t <package number>
Dado que cada um dos comandos de instalação pode levar o número do pacote como parâmetro, qual número de pacote você usa? Após muita pesquisa on-line, tentativa e erro, descobri que
android update sdk --no-ui --filter
usa os números de pacote deandroid list sdk
e
android update sdk -u -a -t
usa os números de pacote deandroid list sdk --all
Em outras palavras - para instalar,
API 23.1 revision 3
você pode:android update sdk --no-ui --filter 3
ou
android update sdk -u -a -t 29
Louco, mas funciona.
fonte
-a
é a versão curta de--all
, é por isso que ele está usando esse número de pacote. (-u
É curto para--no-ui
e-t
é curto para--filter
.)usage()
texto atualizado com a realidade.A maioria das respostas parece ignorar o fato de que talvez você precise executar a atualização em um ambiente decapitado sem direitos de superusuário, o que significa que o script precisa responder a todos os
y/n
prompts de licença automaticamente.Aqui está o exemplo que faz o truque.
Não importa quantas solicitações você receba, todas elas serão respondidas. Esse
while/sleep
loop se parece com a simulação do comando yes e, de fato, é quase bom . O problemayes
é que ele inunda stdout com'y'
e não há praticamente nenhum atraso entre o envio desses caracteres e a versão com a qual eu tive que lidar não tinha nenhuma opção de tempo limite de nenhum tipo. Ele "poluirá" o stdout e o script falhará ao reclamar de entrada incorreta. A solução é adiar o envio'y'
para stdout, e é exatamente isso que awhile/sleep
combinação faz.expect
não está disponível por padrão em algumas distribuições linux e eu não tinha como instalá-lo como parte dos meus scripts de IC; portanto, tive que usar a solução mais genérica e nada pode ser mais genérico do que o simples script bash, certo?Por uma questão de fato, eu escrevi sobre o blog ( NSBogan ), confira mais detalhes aqui, se você estiver interessado.
fonte
Se você
sdkmanager
instalou (estou usando MAC)execute
sdkmanager --list
para listar os pacotes disponíveis.Se você deseja instalar ferramentas de construção, copie a versão preferida da lista de pacotes disponíveis.
Para instalar a versão preferida, execute
fonte
Sim, tive o mesmo problema. Alguns dos downloads de arquivos são extremamente lentos (ou pelo menos foram nos últimos dois dias). Se você deseja fazer o download de tudo, não há muito o que fazer sobre isso.
Você deixou a execução completa?
Uma coisa que você pode fazer é filtrar os pacotes que estão sendo baixados usando o
-t
switch.Por exemplo:
Quando tentei isso outro dia, obtive a versão 18.0.0 das ferramentas de compilação instaladas. Por algum motivo, a versão mais recente 18.0.1 não está incluída nesse filtro e a única maneira de obtê-lo era instalar tudo com o
--all
comutador.fonte
Eu prefiro colocar um script que instale minhas dependências
Algo como:
https://github.com/caipivara/android-scripts/blob/master/install-android-dependencies.sh
fonte
Acabei de ter esse problema, então finalmente escrevi uma solução de 1 linha do bash dirty lendo e analisando a lista de ferramentas disponíveis:
fonte
Inspirado nas respostas de @ i4niac e @ Aurélien Lambert, é isso que eu criei
Explicação
android list sdk --all
comando (Ignorando pacotes obsoletos).fonte
Faça o download do Android SDK em developer.android.com (atualmente é um arquivo de 149mb para Windows OS). Vale ressaltar que o Android removeu a GUI do sdkmanager, mas possui uma versão em linha de comando do sdkmanager na pasta bin, localizada dentro da pasta tools.
sdkmanager
clique em Enter.sdkmanager
(espaço), hífen duplo (--
), lista de tipossdkmanager --list
(lista todos os pacotes no gerenciador do SDK)Para mais referência, siga o documento oficial aqui
Eu espero que isso ajude. :)
fonte
Se você não precisar do Android Studio, poderá fazer o download das ferramentas básicas de linha de comando do Android em developer.android.com na seção Somente ferramentas de linha de comando .
da CLI, deve parecer algo como:
ou
Depois disso, descompacte o arquivo na pasta de destino
E agora podemos instalar tudo o que você precisa ...
Você pode obter uma lista completa de pacotes usando o comando
./tools/bin/sdkmanager --list
Alguns pacotes exigem a aceitação do contrato de licença. você pode aceitá-lo interativamente ou simplesmente passar "y" para o fluxo de entrada, como este (dois contratos no caso):
E, é claro, para sua conveniência, você pode exportar variáveis como ANDROID_HOME ou ANDROID_SDK_ROOT (incluindo fazê-lo em ~ / .profile ou ~ / .bash_profile) ou corrigir a variável PATH - tudo isso a seu critério.
Exemplo de script:
Requisitos: enrolar (ou wget) e descompactar
Solução de problemas:
se
Warning: Could not create settings
vir, você precisa ter otools
diretório dentro docmdline-tools
diretório dentro do ANDROID_HOME (crie-o se necessário com esse nome exato), consulte Ferramentas de linha de comando do Android sdkmanager sempre mostra: Aviso: não foi possível criar configuraçõesfonte
As ferramentas de compilação não puderam ser baixadas automaticamente por padrão, como Nate disse em https://stackoverflow.com/a/19416222/1104031 post.
Mas eu escrevi uma pequena ferramenta que faz tudo para você
Eu usei a ferramenta "expect" como danb no post https://stackoverflow.com/a/17863931/1104031 . Você só precisa android-SDK e
python27
,expect
.Este script instalará todas as ferramentas de construção, todos os sdks e tudo o que você precisa para a construção automatizada:
fonte
echo "yes" | ./android update sdk --no-https --no-ui --filter 1,6
?Conforme declarado em outras respostas, as ferramentas de construção requerem a instalação do
--all
sinalizador. Também é melhor usar um-t
sinalizador de filtro para evitar a instalação de TODOS os pacotes, mas não há como filtrar todas as ferramentas de construção.Já existem solicitações de recursos para esses dois pontos no rastreador de erros do AOSP. Sinta-se livre para votar neles, isso pode fazê-los acontecer algum dia:
fonte
Eu tentei isso para atualizar tudo, e funcionou!
fonte
Experimentar
1. Liste todos os pacotes
2. Instale pacotes usando o seguinte comando
fonte
android update sdk
Este comando atualizará e instalará todas as versões mais recentes das ferramentas SDK Tools, Build Tools, SDK Platform.
É trabalho para mim.
fonte