studio para manager mac jdk instalar descargar android android-sdk-tools android-avd

para - ¿Hay alguna manera de automatizar la instalación de Android SDK?



sdk android mac (10)

Ahora tengo que descargar e instalar el SDK de Android y AVD Manager, y luego instalar las API, herramientas a través de la interfaz de usuario. ¿Hay alguna forma de automatizar este proceso?



Cuanto más cerca se pueda llegar a la automatización, probablemente sea:

$ android update sdk --no-ui

Android ofrece estas opciones para actualizaciones 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 parts, 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-separated 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

Si desea enumerar qué paquetes están disponibles para la instalación, puede utilizar

$ android list sdk

y obtendrás una lista ordenada de paquetes, por ejemplo

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 Library, revision 1 7- Google Play Billing Library, revision 2 8- Google Play Licensing Library, revision 2 9- Google Web Driver, revision 2

También puede limitar la actualización solo a un componente deseado si usa la opción --filter

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

donde componente es uno o más de

  • los números devueltos por la android list sdk (es decir, 1 , también conocido como índice de paquetes )
  • Añadir
  • Doc
  • extra
  • plataforma
  • plataforma-herramienta
  • muestra
  • fuente
  • imagen del sistema
  • herramienta

o puede ser uno o más identificadores específicos. Por ejemplo, si solo desea descargar un pequeño conjunto de paquetes específicos, puede hacer esto:

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

y solo obtendrás las herramientas de la plataforma, el nivel de API 16 y el paquete de soporte. Esto es realmente útil si está construyendo una máquina de compilación solamente y tendría que pagar por descargar todas las cosas adicionales que nunca usará.

Para ver las opciones disponibles puede usar - ayuda, por ejemplo

$ android --help list sdk Usage: android [global options] list sdk [action options] Global options: -h --help : Help on a specific command. -v --verbose : Verbose mode, shows errors, warnings and all messages. --clear-cache: Clear 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 (overrides settings if defined) --proxy-port: HTTP/HTTPS proxy port (overrides 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]

ACTUALIZAR

Las últimas versiones presentan sdkmanager , una herramienta de línea de comandos que le permite ver, instalar, actualizar y desinstalar paquetes para el SDK de Android.

La herramienta sdkmanager se proporciona en el paquete de herramientas del SDK de Android ( 25.2.3 y superior ) y se encuentra en android_sdk/tools/bin/ .

sdkmanager [--uninstall] [<common args>] [--package_file <file>] [<packages>...] sdkmanager --update [<common args>] sdkmanager --list [<common args>] sdkmanager --licenses [<common args>] In its first form, installs, or uninstalls, or updates packages. By default, the listed packages are installed or (if already installed) updated to the latest version. --uninstall: uninstalled listed packages. <package> is a sdk-style path (e.g. "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 arguments may be specified in combination with explicit paths. In its second form (with --update), all installed packages are updated to the latest version. In its third form, all installed and available packages are 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 are: 0 (Stable), 1 (Beta), 2 (Dev), and 3 (Canary). --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 var REPO_OS_OVERRIDE is set to "windows", "macosx", or "linux", packages will be downloaded for that OS.

Entonces, para actualizar los paquetes ejecutados.

$ sdkmanager --update

aceptar las licencias

$ yes | sdkmanager --licenses


En las versiones más recientes de Android (por ejemplo, 25.2.5 ) deberíamos usar sdkmanager (en lugar del comando de android )

Ejemplo de instalación de un paquete:

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

Comando para obtener una lista de todos los paquetes disponibles:

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

Esta página web enumera enlaces de descarga para las herramientas SDK:

Aquí hay un enlace a un repositorio de código abierto docker-android que puede instalar Android en una imagen de Docker.

También puede encontrar las respuestas en esta pregunta SO: Acepte automáticamente todas las licencias de SDK de utilidad.


Esto no funcionó para mí ...

echo "y" | android ....

así que terminé aquí:

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 } ''


Otra secuencia de comandos para descargar solo paquetes necesarios, no {obsoletos, fuente, emulador-imagen, 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

Algunas partes están tomadas de otras respuestas en este hilo.


Para cualquiera que aún esté buscando un método para descargar todos los paquetes de Android, escribí un script para hacerlo. Se descargarán todos los paquetes no 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 "Start to install package: ${package_index}" echo "=====================================================================" # Auto accept license echo -e "y" | install_sdk "${package_index}" echo echo done

También puedes verlo en mi repositorio de Github.

El bueno:

  • No depende de expect .
  • Sin cabeza.

Las desventajas:

  • Aún tienes que instalar el SDK básico manualmente y poner android en tu ruta.
  • Script solo funciona en Unix.

Para responder a todas las licencias con ''y'', puede intentar esto en el script:

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


Para un desarrollador de Android novato, pero un desarrollador de Java experimentado, es realmente desconcertante saber QUÉ dependencias, incluso si superas todas las pesadillas anteriores. Un colega mío me aconsejó usar Android Studio (que está basado en Intellij :-) específicamente debido a las pesadillas anteriores. Seguí su consejo. Pero no acepté los valores predeterminados para la instalación e intenté instalarlo en una de mis unidades de software. Resultó ser una pesadilla. El diálogo del SDK parecía colgar y no era intuitivo en absoluto. Es por eso que terminé aquí. Después de leer lo anterior, le di a Studio otra oportunidad, y esta vez acepté TODOS los valores predeterminados para la instalación. Hey PRESTO ... se encargó de todas las dependencias de SDK (las más importantes, supongo) en un par de diálogos sin que se le indique, es decir, Ctl-Shift-S y el SKD. Por lo tanto, lo recomendaría para un novato. Aquí la prueba del pudín a medida que se descarga:

La versión de sudio que descargué e instalé: Versión de windows: Y aquí después de que hizo sus cosas buenas:

Sinceramente espero que funcione para ti !!



Yo uso esto para instalar y actualizar el SDK en Travis-Ci

curl --location http://dl.google.com/android/android-sdk_r22.3-linux.tgz | tar -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