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
--all
opció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 conyes
comando sin éxito hasta ahora.Como se menciona en otras respuestas, puede usar la
--filter
opció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
--filter
opció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.3
etc.fuente
--extended
opción, dejando en claro qué instalar para los scripts de CI.android update
también requerirá la--all
opció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--extended
opción que le permite ver los alias comobuild-tools-21.1.0
)--filter
y--extended
opciones?--extended
opció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 Tools
paquete 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/bin
carpeta.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=address
y--proxy_port=port
).Para verificar las opciones disponibles, use la
--help
bandera. 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 tools
ybuild tools
sin ninguna otra interacción. En el caso del OP, el comando se adaptaría a:fuente
--all
banderaMe 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.1
paralinux
. Hay dos comandos que puede ejecutar para enumerar los paquetes disponibles:android list sdk
y 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 3
como paquete#3
y 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 --filter
utiliza los números de paquete deandroid list sdk
y
android update sdk -u -a -t
utiliza los números de paquete deandroid list sdk --all
En otras palabras, para instalar
API 23.1 revision 3
puede hacer lo siguiente:android update sdk --no-ui --filter 3
o
android update sdk -u -a -t 29
Loco, pero funciona.
fuente
-a
es la versión corta de--all
, por eso está usando ese número de paquete. (-u
es la abreviatura--no-ui
y-t
es 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/n
solicitudes de licencia automáticamente.Aquí está el ejemplo que hace el truco.
No importa cuántas indicaciones recibas, todas serán respondidas. Este
while/sleep
bucle parece una simulación del comando yes , y de hecho lo es, bueno, casi . El problemayes
es 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/sleep
hace el combo.expect
no 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
sdkmanager
instalado (estoy usando MAC)ejecutar
sdkmanager --list
para 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
-t
interruptor.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
--all
conmutador.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 --all
comando (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.
sdkmanager
clic 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 --list
Algunos 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 eltools
directorio dentro delcmdline-tools
directorio 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
--all
que se instale el indicador. También es mejor usar un-t
indicador 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