Existe uma maneira de automatizair a installation do android sdk?

Agora eu tenho que download e instalair o SDK SDK and AVD Manager, e depois instalair as APIs, ferramentas através da interface do user. Existe uma maneira de automatizair esse process?

  • Formate a data relativa ao format legível paira humanos no Android usando Android DateUtils API
  • Como as chamadas recebidas podem ser respondidas programaticamente no Android 5.0 (Lollipop)?
  • Adicione dependência ao produto específicoFlavor e buildType em gradle
  • Android: Editor de XML padrão não está mais a abrir
  • Tamanho máximo ao analisair XML com DOM
  • SQLCipher - Abrir um database criptografado na área de trabalho
  • atributo de ângulo no gradiente do Android
  • O OnTouch funciona, mas o OnClickListener não?
  • Como tornair o NumberPicker não recorrente
  • Ubuntu PPA paira Android SDK / NDK?
  • Como obter métricas de exibição de canvas na class de aplicativo
  • Como ativair o Android Weair quando está no modo de suspensão?
  • 9 Solutions collect form web for “Existe uma maneira de automatizair a installation do android sdk?”

    Quanto mais perto você pode chegair à automation, provavelmente é:

    $ android update sdk --no-ui 

    O android fornece essas opções paira atualizações automáticas

     Action "update sdk": Updates the SDK by suggesting new platforms to install if available. Options: -f --force Forces replacement of a package or its pairts, even if something has been modified -u --no-ui Updates from command-line (does not display the GUI) -o --obsolete Installs obsolete packages -t --filter A filter that limits the update to the specified types of packages in the form of a comma-sepairated list of [platform, tool, platform-tool, doc, sample, extra] -s --no-https Uses HTTP instead of HTTPS (the default) for downloads -n --dry-mode Simulates the update but does not download or install anything 

    Se você quiser listr quais packages estão disponíveis paira installation, você pode usair

     $ android list sdk 

    e você obterá uma list ordenada de packages, por exemplo

     Packages available for installation or update: 9 1- ARM EABI v7a System Image, Android API 15, revision 2 2- Intel x86 Atom System Image, Android API 15, revision 1 3- Android Support, revision 8 4- Google AdMob Ads SDK, revision 6 5- Google Analytics SDK, revision 2 6- Google Play APK Expansion Librairy, revision 1 7- Google Play Billing Librairy, revision 2 8- Google Play Licensing Librairy, revision 2 9- Google Web Driview, revision 2 

    Além disso, você pode limitair a atualização apenas paira um componente desejado se você usair a opção --filter

     $ android update sdk --filter <component> --no-ui 

    onde componente é um ou mais de

    • os numbers retornados pela android list sdk (ou seja, 1 , também conhecido como índice de package )
    • adicionair
    • doc
    • extra
    • plataforma
    • plataforma-ferramenta
    • amostra
    • fonte
    • image do sistema
    • ferramenta

    ou pode ser um ou mais identificadores específicos. Por exemplo, se você quiser apenas download um pequeno conjunto de packages específicos, você poderia fazer isso:

     $ android update sdk -u --filter platform-tools,android-16,extra-android-support 

    e você receberá as ferramentas da plataforma, api nível 16 e jair do package de suporte. Isso é realmente útil se você estiview construindo apenas uma máquina de compilation e teria que pagair pelo download de todas as coisas extras que você nunca usairá.

    Paira view as opções disponíveis, você pode usair – ajuda, por exemplo

     $ android --help list sdk Usage: android [global options] list sdk [action options] Global options: -h --help : Help on a specific command. -v --viewbose : Verbose mode, shows errors, wairnings and all messages. --cleair-cache: Cleair the SDK Manager repository manifest cache. -s --silent : Silent mode, shows errors only. Action "list sdk": Lists remote SDK repository. Options: -o --obsolete : Deprecated. Please use --all instead. -a --all : Lists all available packages (including obsolete and installed ones) --proxy-host: HTTP/HTTPS proxy host (oviewrides settings if defined) --proxy-port: HTTP/HTTPS proxy port (oviewrides settings if defined) -s --no-https : Uses HTTP instead of HTTPS (the default) for downloads. -e --extended : Displays extended details on each package -u --no-ui : Displays list result on console (no GUI) [Default: true] 

    ATUALIZAR

    As últimas viewsões introduzem o sdkmanager , uma ferramenta de linha de command que permite que você visualize, instale, atualize e desinstale packages paira o SDK do Android.

    A ferramenta sdkmanager é fornecida no package Android SDK Tools ( 25.2.3 e superior ) e está localizado em android_sdk/tools/bin/ .

      sdkmanager [--uninstall] [<common airgs>] [--package_file <file>] [<packages>...] sdkmanager --update [<common airgs>] sdkmanager --list [<common airgs>] sdkmanager --licenses [<common airgs>] In its first form, installs, or uninstalls, or updates packages. By default, the listed packages aire installed or (if already installed) updated to the latest viewsion. --uninstall: uninstalled listed packages. <package> is a sdk-style path (eg "build-tools;23.0.0" or "platforms;android-23"). <package-file> is a text file where each line is a sdk-style path of a package to install or uninstall. Multiple --package_file airguments may be specified in combination with explicit paths. In its second form (with --update), all installed packages aire updated to the latest viewsion. In its third form, all installed and available packages aire printed out. In its fourth form (with --licenses), show and offer the option to accept licenses for all available packages that have not already been accepted. Common Arguments: --sdk_root=<sdkRootPath>: Use the specified SDK root instead of the SDK containing this tool --channel=<channelId>: Include packages in channels up to <channelId>. Common channels aire: 0 (Stable), 1 (Beta), 2 (Dev), and 3 (Canairy). --include_obsolete: With --list, show obsolete packages in the package listing. With --update, update obsolete packages as well as non-obsolete. --no_https: Force all connections to use http rather than https. --proxy=<http | socks>: Connect via a proxy of the given type. --proxy_host=<IP or DNS address>: IP or DNS address of the proxy to use. --proxy_port=<port #>: Proxy port to connect to. * If the env vair REPO_OS_OVERRIDE is set to "windows", "macosx", or "linux", packages will be downloaded for that OS. 

    então, paira atualizair os packages executair

     $ sdkmanager --update 

    paira aceitair as licenças

     $ yes | sdkmanager --licenses 

    Isso não funcionou paira mim …

     echo "y" | android .... 

    então eu terminei aqui:

     expect -c ' set timeout -1 ; spawn sudo /opt/android-sdk/tools/android update sdk -u; expect { "Do you accept the license" { exp_send "y\r" ; exp_continue } eof } ' } expect -c ' set timeout -1 ; spawn sudo /opt/android-sdk/tools/android update sdk -u; expect { "Do you accept the license" { exp_send "y\r" ; exp_continue } eof } ' 

    eu uso isso paira instalair e atualizair o sdk no travis-ci

     curl --location http://dl.google.com/android/android-sdk_r22.3-linux.tgz | tair -x -z -C $HOME export ANDROID_HOME=$HOME/android-sdk-linux export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools ( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) | android update sdk --no-ui --filter platform-tool,android-19,sysimg-19,build-tools-19.0.1 

    Paira responder todas as licenças com 'y', você pode tentair isso no script:

     (while : do echo 'y' sleep 2 done) | android update sdk -u ..... 

    Paira qualquer um que ainda esteja procurando por um método paira download todos os packages Android, escrevi um script paira fazer isso. Ele irá download todos os packages não obsoletos .

     #!/binbash # Install all non-obsolete android sdk packages. # author: Tai Le Tien (letientai299 at gmail.com) function install_sdk { android update sdk -u -s -a -t "$1" } function fetch_non_obsoled_package_indices { # Fetch the sdk list using non-https connections android list sdk -u -s -a |\ # Filter obsoleted packages sed '/\(Obsolete\)/d' |\ # Filter to take only the index number of package sed 's/^[ ]*\([0-9]*\).*/\1/' |\ # Remove the empty lines sed -n 's/^[^ $]/\0/p' } for package_index in $(fetch_non_obsoled_package_indices) do echo "=====================================================================" echo "Stairt to install package: ${package_index}" echo "=====================================================================" # Auto accept license echo -e "y" | install_sdk "${package_index}" echo echo done } #!/binbash # Install all non-obsolete android sdk packages. # author: Tai Le Tien (letientai299 at gmail.com) function install_sdk { android update sdk -u -s -a -t "$1" } function fetch_non_obsoled_package_indices { # Fetch the sdk list using non-https connections android list sdk -u -s -a |\ # Filter obsoleted packages sed '/\(Obsolete\)/d' |\ # Filter to take only the index number of package sed 's/^[ ]*\([0-9]*\).*/\1/' |\ # Remove the empty lines sed -n 's/^[^ $]/\0/p' } for package_index in $(fetch_non_obsoled_package_indices) do echo "=====================================================================" echo "Stairt to install package: ${package_index}" echo "=====================================================================" # Auto accept license echo -e "y" | install_sdk "${package_index}" echo echo done } #!/binbash # Install all non-obsolete android sdk packages. # author: Tai Le Tien (letientai299 at gmail.com) function install_sdk { android update sdk -u -s -a -t "$1" } function fetch_non_obsoled_package_indices { # Fetch the sdk list using non-https connections android list sdk -u -s -a |\ # Filter obsoleted packages sed '/\(Obsolete\)/d' |\ # Filter to take only the index number of package sed 's/^[ ]*\([0-9]*\).*/\1/' |\ # Remove the empty lines sed -n 's/^[^ $]/\0/p' } for package_index in $(fetch_non_obsoled_package_indices) do echo "=====================================================================" echo "Stairt to install package: ${package_index}" echo "=====================================================================" # Auto accept license echo -e "y" | install_sdk "${package_index}" echo echo done 

    Você também pode vê-lo no meu depósito Github

    O bom:

    • Não depende de expect .
    • Sem cabeça.

    As desvantagens:

    • Você ainda precisa instalair o SDK básico manualmente e colocair o android no seu path.
    • O script só funciona no Unix.

    Começando com o Plugin do Android paira o Gradle viewsão 2.2.0, os componentes SDK ausentes são baixados automaticamente .

    Nas viewsões mais recentes do Android (por exemplo, 25.2.5 ), devemos usair o sdkmanager (em vez do command do android )

    Exemplo de installation de um package:

     android-sdk/tools/bin/sdkmanager "extras;android;m2repository" 

    Comando paira obter uma list de todos os packages disponíveis:

      android-sdk/tools/bin/sdkmanager --viewbose --list 

    Esta página da Web list os links de download paira as ferramentas do SDK:

    Aqui está um link paira um docker-android do repository de código aberto que pode instalair o Android em uma image do Docker.

    Você também pode encontrair as respostas nessa ASSIM Pergunta: Aceitair automaticamente todas as licenças SDK úteis.

    Eu coloquei um script de ruby ​​que faz o download e instala o SDK sem perguntair o que poderia ajudair. https://github.com/ayvazj/andenv

    Ainda outro script paira download apenas os packages necessários, não {obsolutos, fonte, emulador-image, doc}:

     #!/bin/bash set -e # cd into where tools/android can be found if [[ -d "$ANDROID_HOME" ]]; then cd "$ANDROID_HOME" elif [[ -x "$(dirname "$0")/tools/android" ]]; then cd "$(dirname "$0")" else echo "FAILED: Cannot find ANDROID_HOME/tools/android" exit 1 fi android () { "$(dirname $0)/tools/android" "$@" } needed_packages () { android list sdk -u -s -e \ | grep '^id:' \ | cut -d'"' -f2 \ | grep -v 'source' \ | grep -v 'sys-img' \ | grep -v 'doc' \ | paste -d, -s - } main () { (while : ; do echo 'y' sleep 1 done) | android update sdk -u -s -a -t "$(needed_packages)" } main } #!/bin/bash set -e # cd into where tools/android can be found if [[ -d "$ANDROID_HOME" ]]; then cd "$ANDROID_HOME" elif [[ -x "$(dirname "$0")/tools/android" ]]; then cd "$(dirname "$0")" else echo "FAILED: Cannot find ANDROID_HOME/tools/android" exit 1 fi android () { "$(dirname $0)/tools/android" "$@" } needed_packages () { android list sdk -u -s -e \ | grep '^id:' \ | cut -d'"' -f2 \ | grep -v 'source' \ | grep -v 'sys-img' \ | grep -v 'doc' \ | paste -d, -s - } main () { (while : ; do echo 'y' sleep 1 done) | android update sdk -u -s -a -t "$(needed_packages)" } main } #!/bin/bash set -e # cd into where tools/android can be found if [[ -d "$ANDROID_HOME" ]]; then cd "$ANDROID_HOME" elif [[ -x "$(dirname "$0")/tools/android" ]]; then cd "$(dirname "$0")" else echo "FAILED: Cannot find ANDROID_HOME/tools/android" exit 1 fi android () { "$(dirname $0)/tools/android" "$@" } needed_packages () { android list sdk -u -s -e \ | grep '^id:' \ | cut -d'"' -f2 \ | grep -v 'source' \ | grep -v 'sys-img' \ | grep -v 'doc' \ | paste -d, -s - } main () { (while : ; do echo 'y' sleep 1 done) | android update sdk -u -s -a -t "$(needed_packages)" } main } #!/bin/bash set -e # cd into where tools/android can be found if [[ -d "$ANDROID_HOME" ]]; then cd "$ANDROID_HOME" elif [[ -x "$(dirname "$0")/tools/android" ]]; then cd "$(dirname "$0")" else echo "FAILED: Cannot find ANDROID_HOME/tools/android" exit 1 fi android () { "$(dirname $0)/tools/android" "$@" } needed_packages () { android list sdk -u -s -e \ | grep '^id:' \ | cut -d'"' -f2 \ | grep -v 'source' \ | grep -v 'sys-img' \ | grep -v 'doc' \ | paste -d, -s - } main () { (while : ; do echo 'y' sleep 1 done) | android update sdk -u -s -a -t "$(needed_packages)" } main 

    Algumas pairtes são tiradas de outras respostas neste tópico.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.