Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Hay una manera de automatizar la instalación de sdk de android?

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

  • Las herramientas de Android y las carpetas de herramientas de plataformas desaparecieron
  • Cómo revertir Android SDK Tools a una revisión anterior?
  • ¿Cuál es la diferencia entre las API de Google en SDK para Android
  • Cambios de código no reflejados en .apk
  • Android SDK Build Tool Varias versiones
  • SDK Manager roto después de actualización Mavericks
  • ¿Por qué se consideran las demostraciones API como "heredadas", como en la API 18?
  • Actividad en blanco que no se creó con New-> Android Activity Wizard
  • 9 Solutions collect form web for “¿Hay una manera de automatizar la instalación de sdk de android?”

    Lo más cerca que puede llegar a la automatización es probablemente:

    $ android update sdk --no-ui 

    Android proporcionan 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á 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 sólo a un componente deseado si utiliza la opción --filter

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

    Donde el componente es uno o más de

    • Los números devueltos por android list sdk (es decir, 1 , también conocido como índice de paquete )
    • Añadir
    • doc
    • extra
    • plataforma
    • Plataforma de herramientas
    • muestra
    • fuente
    • Imagen del sistema
    • herramienta

    O puede ser uno o más identificadores específicos. Por ejemplo, si sólo desea descargar un pequeño conjunto de paquetes específicos, puede hacerlo:

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

    Y sólo obtendrá las herramientas de la plataforma, api nivel 16 y jar paquete de soporte. Esto es realmente útil si usted está construyendo una máquina de la construcción solamente y tendría que pagar para descargar todas las cosas adicionales que usted nunca utilizará.

    Para ver las opciones disponibles, puede utilizar –help, 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 introducen 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 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 (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 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. 

    Así, para actualizar los paquetes ejecutados

     $ sdkmanager --update 

    Aceptar las licencias

     $ yes | sdkmanager --licenses 

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

    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 

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

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

    Para cualquiera que siga buscando un método para descargar todos los paquetes de Android, he escrito un script para hacerlo. Se descargará 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 reps de Github

    El bueno:

    • No depender de expect .
    • Sin cabeza.

    Las desventajas:

    • Usted todavía tiene que instalar el SDK básico manualmente, y poner android en su camino.
    • Script sólo funciona en unix.

    Comenzando con el complemento de Android para Gradle versión 2.2.0, los componentes de SDK que faltan se descargan automáticamente .

    En las nuevas versiones de android (por ejemplo, 25.2.5 ) debemos usar sdkmanager (en lugar del comando 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 lista los enlaces de descarga para las herramientas de SDK:

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

    También puede encontrar las respuestas en este SO Pregunta: Acepte automáticamente todas las licencias de SDK útiles.

    Puse una escritura de rubí que descargue e instale el SDK sin preguntar qué podría ayudar. https://github.com/ayvazj/andenv

    Sin embargo, otro script para descargar sólo los paquetes necesarios, no {obsolutas, 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 se toman de otras respuestas en este hilo.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.