Quiero configurar el entorno de desarrollo de Android desde la línea de comandos y encuentro el siguiente problema:
wget http://dl.google.com/android/android-sdk_r22.0.5-linux.tgz
después de extraer el archivo, ejecute
tools/android update sdk --no-ui
Sin embargo, es demasiado lento para correr
Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml
El resultado es que no hay nada en las herramientas de compilación de carpetas, y lo que quiero es aapt y apkbuilder, ya que quiero compilar apk desde la línea de comandos sin hormiga.
fuente

--allopción en los consejos oficiales . Gracias.echo "yes"se puede acortarecho "y", pero eso no funciona en todos los casos de todos modos. En algunos casos, puede obtener más de una solicitud de licencia y / n, según el filtro y los paquetes específicos.echo "y"responderá solo a la primera solicitud, pero no al resto. Estoy tratando de hacerlo funcionar conyescomando sin éxito hasta ahora.Como se menciona en otras respuestas, puede usar la
--filteropción para limitar los paquetes instalados:android update sdk --filter ...Las otras respuestas no mencionan que puede usar identificadores de cadena constantes en lugar de índices (que cambiarán) para las opciones de filtro. Esto es útil para instalaciones desatendidas o programadas. Hombre para la
--filteropción:android list sdk --all --extended:Luego, puede usar los identificadores de cadena como opciones de filtro para especificar con precisión las versiones que desea:
android update sdk --filter tools,platform-tools,build-tools-19.0.3etc.fuente
--extendedopción, dejando en claro qué instalar para los scripts de CI.android updatetambién requerirá la--allopción, de lo contrario se mostrará la ayuda de uso. Por ejemplo:android update sdk --no-ui --all --filter build-tools-21.1.0(y +1 para la--extendedopción que le permite ver los alias comobuild-tools-21.1.0)--filtery--extendedopciones?--extendedopción para poder escribir un script y usarlo en mi servidor de integración continua, donde puede actualizar los recursos SDK. Buen consejo!La versión 25.2.3 (y superior) del
Android SDK Toolspaquete contiene una nueva herramienta, sdkmanager , que simplifica esta tarea de instalar herramientas de compilación desde la línea de comandos.Se encuentra en la
android_sdk/tools/bincarpeta.Uso (de la documentación ):
Ejemplo de uso (en mi Mac):
También puede especificar varias opciones , por ejemplo para forzar todas las conexiones a usar HTTP (
--no_https), o para usar el servidor proxy (--proxy_host=addressy--proxy_port=port).Para verificar las opciones disponibles, use la
--helpbandera. En mi máquina (Mac), el resultado es el siguiente:fuente
Warning: Unknown argument --package_file?--package_file=packages.txt.ADB Build-Tools no se descargará automáticamente, mediante el comando android update sdk --no-ui
Entonces, para instalar el tipo Buil-Tool (en la consola):
Recuerde el número que aparece antes del artículo y ejecute lo siguiente:
los comandos deben escribirse en / YourFolder / android-sdk-linux / tools
También para la carpeta remota (servidor abierto por ssh, por ejemplo) escriba:
Para una lista simple de paquetes ADB, escriba en la terminal:
para instalar todos los paquetes:
O con filtros (la coma es un separador):
fuente
Una gran fuente de información que encontré al intentar instalar todo el SDK de Android relacionado desde la línea de comandos, fue este Dockerfile. Dentro del Dockerfile puede ver que el autor ejecuta un solo comando para instalar
platform toolsybuild toolssin ninguna otra interacción. En el caso del OP, el comando se adaptaría a:fuente
--allbanderaMe costó muchísimo instalar las dependencias SDK de Android a través de la línea de comandos y, dado que la documentación que viene con las herramientas y en línea es lamentablemente escasa, pensé en publicar lo que descubrí aquí.
Estoy trabajando
android sdk r24.4.1paralinux. Hay dos comandos que puede ejecutar para enumerar los paquetes disponibles:android list sdky el más exhaustivo:
android list sdk --all¡Los números de paquete para paquetes específicos difieren para cada comando anterior! Por ejemplo, el primero enumera el paquete
API 23.1 revision 3como paquete#3y el último lo enumera como#29.Ahora, hay dos formas diferentes de instalar usando el comando de Android.
tools/android update sdk --no-ui --filter <package number>y
tools/android update sdk -u -a -t <package number>Dado que los comandos de instalación pueden tomar el paquete # como parámetro, ¿qué número de paquete utiliza? Después de mucha búsqueda en línea y prueba y error, descubrí que
android update sdk --no-ui --filterutiliza los números de paquete deandroid list sdky
android update sdk -u -a -tutiliza los números de paquete deandroid list sdk --allEn otras palabras, para instalar
API 23.1 revision 3puede hacer lo siguiente:android update sdk --no-ui --filter 3o
android update sdk -u -a -t 29Loco, pero funciona.
fuente
-aes la versión corta de--all, por eso está usando ese número de paquete. (-ues la abreviatura--no-uiy-tes la abreviatura de--filter).usage()texto actualizado con la realidad.La mayoría de las respuestas parecen ignorar el hecho de que es posible que deba ejecutar la actualización en un entorno sin cabeza sin derechos de superusuario, lo que significa que el script debe responder a todas las
y/nsolicitudes de licencia automáticamente.Aquí está el ejemplo que hace el truco.
No importa cuántas indicaciones recibas, todas serán respondidas. Este
while/sleepbucle parece una simulación del comando yes , y de hecho lo es, bueno, casi . El problemayeses que se inunda con stdout'y'y prácticamente no hay demora entre el envío de esos caracteres y la versión con la que tuve que lidiar no tenía ninguna opción de tiempo de espera de ningún tipo. "Contaminará" stdout y el script fallará quejándose de una entrada incorrecta. La solución es retrasar el envío'y'a stdout, y eso es exactamente lo quewhile/sleephace el combo.expectno está disponible de forma predeterminada en algunas distribuciones de Linux y no tenía forma de instalarlo como parte de mis scripts de CI, así que tuve que usar la solución más genérica y nada puede ser más genérico que un simple script de bash, ¿verdad?De hecho, escribí un blog sobre esto ( NSBogan ), échale un vistazo para obtener más detalles aquí si estás interesado.
fuente
Si lo has
sdkmanagerinstalado (estoy usando MAC)ejecutar
sdkmanager --listpara enumerar los paquetes disponibles.Si desea instalar herramientas de compilación, copie la versión preferida de la lista de paquetes disponibles.
Para instalar la versión preferida, ejecute
fuente
Sí, tuve el mismo problema. Algunas de las descargas de archivos son extremadamente lentas (o al menos lo han sido en los últimos días). Si quieres descargar todo, no hay mucho que puedas hacer al respecto.
¿Lo dejaste correr hasta su finalización?
Una cosa que puede hacer es filtrar los paquetes que se descargan con el
-tinterruptor.Por ejemplo:
Cuando probé esto el otro día, instalé la versión 18.0.0 de las herramientas de compilación. Por alguna razón, la última versión 18.0.1 no está incluida en este filtro y la única forma de obtenerla fue instalar todo con el
--allconmutador.fuente
Prefiero poner un script que instale mis dependencias
Algo como:
https://github.com/caipivara/android-scripts/blob/master/install-android-dependencies.sh
fuente
Acabo de tener este problema, así que finalmente escribí una solución sucia de bash de 1 línea leyendo y analizando la lista de herramientas disponibles:
fuente
Inspirado en las respuestas de @ i4niac y @ Aurélien Lambert, esto es lo que se me ocurrió.
Explicación
android list sdk --allcomando (Ignorando los paquetes obsoletos).fuente
Descargue el SDK de Android desde developer.android.com (actualmente es un archivo 149mb para el sistema operativo Windows). Vale la pena señalar que Android ha eliminado la GUI de sdkmanager pero tiene una versión de línea de comandos del sdkmanager en la carpeta bin que se encuentra dentro de la carpeta de herramientas.
sdkmanagerclic enter.sdkmanager(space), double guhen (--), type listsdkmanager --list(esto enumera todos los paquetes en el administrador de SDK)Para más referencia, siga el documento oficial aquí.
Espero que esto ayude. :)
fuente
Si no necesita Android Studio, puede descargar las herramientas básicas de línea de comandos de Android desde developer.android.com en la sección Herramientas de línea de comandos solamente .
desde CLI debería ser algo así como:
o
Después de eso simplemente descomprima el archivo en la carpeta de destino
Y ahora podemos instalar todo lo que necesita ...
Puede obtener una lista completa de paquetes con el comando
./tools/bin/sdkmanager --listAlgunos paquetes requieren la aceptación del acuerdo de licencia. puede aceptarlo de forma interactiva o simplemente pasar "y" a la secuencia de entrada, de esta manera (dos acuerdos por si acaso):
Y, por supuesto, para su conveniencia, puede exportar variables como ANDROID_HOME o ANDROID_SDK_ROOT (incluido hacerlo en ~ / .profile o ~ / .bash_profile) o parchear la variable PATH , todo esto es a su discreción.
Ejemplo de guión:
Requisitos: curl (o wget) y descomprimir
Solución de problemas:
si ve
Warning: Could not create settings, debe tener eltoolsdirectorio dentro delcmdline-toolsdirectorio dentro de ANDROID_HOME (créelo si es necesario con este nombre exacto), vea las herramientas de línea de comandos de Android que sdkmanager siempre muestra: Advertencia: no se pudo crear la configuraciónfuente
Las herramientas de compilación no se podían descargar automáticamente de forma predeterminada, como dijo Nate en la publicación https://stackoverflow.com/a/19416222/1104031 .
Pero escribí una pequeña herramienta que hace todo por ti
Utilicé la herramienta "esperar" como danb en https://stackoverflow.com/a/17863931/1104031 publicación. Sólo es necesario android-sdk y
python27,expect.Este script instalará todas las herramientas de compilación, todos los sdks y todo lo que necesita para la compilación automatizada:
fuente
echo "yes" | ./android update sdk --no-https --no-ui --filter 1,6?Como se indicó en otras respuestas, las herramientas de compilación requieren
--allque se instale el indicador. También es mejor usar un-tindicador de filtro para evitar instalar TODOS los paquetes, pero no hay forma de filtrar todas las herramientas de compilación.Ya hay solicitudes de características para estos dos puntos en el rastreador de errores AOSP. Siéntase libre de votar por ellos, esto podría hacer que sucedan algún día:
fuente
Intenté esto para actualizar todo, ¡y funcionó!
fuente
Tratar
1. Listar todos los paquetes
2. Instale paquetes usando el siguiente comando
fuente
actualización de Android SDK
Este comando actualizará e instalará la última versión de SDK Tools, Build Tools, SDK platform tools.
Es trabajo para mi.
fuente