Desde gradle android plugins 2.2-alpha4 :
Gradle intentará descargar los paquetes de SDK faltantes de los que depende un proyecto
Lo cual es increíblemente genial y se sabía que era un proyecto de JakeWharton .
Pero, para descargar la biblioteca del SDK, debe: aceptar los acuerdos de licencia o Gradle le dice:
No ha aceptado los acuerdos de licencia de los siguientes componentes del SDK: [Android SDK Build-Tools 24, Android SDK Platform 24]. Antes de construir su proyecto, debe aceptar los acuerdos de licencia y completar la instalación de los componentes que faltan con el Administrador de Android Studio SDK. Alternativamente, para aprender cómo transferir los acuerdos de licencia de una estación de trabajo a otra, vaya a http://d.android.com/r/studio-ui/export-licenses.html
Y esto es un problema porque me encantaría instalar todas las dependencias de SDK mientras hago un gradle build
.
Estoy buscando una solución para aceptar automáticamente todas las licencias. Tal vez un guión gradle? Tienes alguna idea ?
¡Gracias!
[EDITAR]
Una solución fue ejecutar:
android update sdk --no-ui --filter build-tools-24.0.0,android-24,extra-android-m2repository
E instálelo manualmente, pero es el nuevo propósito de la función de Gradle hacerlo.
[EDITAR 2]
Una mejor solución es usar el sdkmananger:
yes | sdkmanager --licenses
echo y |
comando delante de ese comando para aceptar automáticamente la licencia. Útil cuando se ejecuta en una caja CI sin cabeza :)~/.android/tools/android update sdk --no-ui --filter build-tools-25.0.0,android-25,extra-android-m2repository
porque laandroid
herramienta estaba localizada en mi casa$ANDROID_SDK_PATH
la ruta raíz real donde se ha instalado el SDK (es decir:/opt/android-sdk
), o simplemente poner directamente el camino (es decir:yes | sdkmanager --licenses --sdk_root=/opt/android-sdk
)Respuestas:
AndroidSDK finalmente puede aceptar licencias.
EDITAR:
Como se señaló en los comentarios de @MoOx, en macOS, puede hacer
yes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
como se señaló en los comentarios de @pho, @mikebridge y @ Noitidart en Windows, puede hacer
cmd.exe ""/K"%LocalAppData%\Android\sdk\tools\bin\sdkmanager.bat --licenses"
asegúrese de instalar java antes
fuente
C:\Users\x1\AppData\Local\Android\sdk\tools\android
luego se abrió una GUI y luego la instalación que faltaba, luego haga clic en "Aceptar Liscenses" en el nuevo cuadro de diálogo que aparece.yes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
He encontrado esto con la
alpha5
vista previa.Jake Wharton me señaló que actualmente puedes usar
para recrear la
$ANDROID_HOME/license
carpeta actual en su máquina. Esto tendría el mismo resultado que el proceso descrito en el enlace del mensaje de error ( http://tools.android.com/tech-docs/new-build-system/license ).Los hashes son partes del texto de la licencia, que imagino se actualizará periódicamente, por lo que este código solo funcionará durante un tiempo :)
Al principio me sorprendió que esto no funcionara de inmediato, incluso cuando había aceptado las licencias para los componentes nombrados a través de la
android
herramienta, pero me señalaron que es el administrador de SDK dentro de AS el que crea la/licenses
carpeta.Supongo que las herramientas oficiales no querrían omitir este paso por razones legales.
Al releer las notas de la versión que dice
Lo que no significa que funcionará si aún no ha instalado las herramientas de Android y ya ha aceptado las últimas licencias.
EDITAR: Dicho esto, todavía no funciona en mi cuadro de prueba de gubuntu hasta que enlace el SDK a AS. Sin embargo, CI funciona bien, no estoy seguro de cuál es la diferencia ...
fuente
mkdir -p
lugar de|| true
.echo
:echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "${ANDROID_HOME}/licenses/android-sdk-license"
. Pero creo que tu problema se esconde en otro lado.Para el nuevo Android Studio (2.3), la mejor manera de actualizar / aceptar todas las licencias es ejecutar:
Es posible que aún necesite copiar los archivos de licencia a otras ubicaciones según su configuración.
fuente
tools/bin/sdkmanager --licenses
yes
alguna manera este comando para sistemas de compilación automatizados? No siempre tendrá acceso de consola interactiva a estas máquinas, por lo que presionary
el teclado físicamente no funcionará.cd $ANDROID_HOME
antes de ejecutar este comandoPara la nueva
sdkmanager
utilidad:yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;24.0.3"
Hay un poco de retraso entre sí, por lo que el comando podría colgarse con la licencia mostrando por un tiempo, pero no requiere intervención humana.
fuente
up-to-date
respuesta. Parece que--licenses
ya no existe. Nota: para ver la lista de posibles versiones que se pueden proporcionar:$ANDROID_HOME/tools/bin/sdkmanager --list
yes | android-sdk-linux/tools/bin/sdkmanager --licenses || true
en mi CI.Si está utilizando Jenkins, puede usar el siguiente script bash como primer paso en el proceso de compilación:
Por supuesto, esto instalará TODAS las actualizaciones disponibles, pero le ahorrará algo de tiempo si puede ahorrar espacio en el disco. La suspensión es para evitar la línea de lectura rota en el programa de instalación, ya que "sí" no funciona correctamente en este caso.
EDITAR: También debe agregar el complemento "Instalar requisitos previos del proyecto Android" en el paso de compilación para obtener el $ ANDROID_HOME correcto si está utilizando el administrador SDK integrado.
fuente
Desafortunadamente, la forma en que OP resolvió originalmente no siempre funciona. Si encuentra en el mensaje de error cuál es su versión actual de herramientas de compilación de compilaciones . Podría ser que falta una versión superior de herramientas de compilación. En ese caso, debe iniciar manualmente SDK Manager y agregar las herramientas de compilación y aceptar la licencia.
Según las instrucciones de OP, se ve de la siguiente manera.
$ ./gradlew build
Luego ajuste su comando de la siguiente manera:
Ejecutando esto de nuevo, aún no hace feliz a Gradle. Por lo tanto, la aceptación manual es la única solución hasta que alguien presente algo mejor. (¡Por favor, hazlo!)
fuente
android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
ejecutar esto a través del símbolo del sistema con el derecho de administrador solucionó el error. No pudeesto resolvió mi error
fuente
yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"
hace lo mismo.Encontramos el mismo problema al construir el proyecto en Jenkins. Con
buildToolsVersion '25.0.2'
, debemos aceptar licencias antes de construir. En nuestro caso, necesitábamos ejecutar:yes | sdkmanager --update
que acepta licencias para el sdkmanager mismo, y luegoyes | sdkmanager --licenses
que acepta nuevas licencias no aceptadas previamenteRecuerde: ejecute estos comandos con el mismo usuario que lo
jenkins
hace. En nuestro Debian, el usuario de Jenkins es justojenkins
. En otras palabras: hacerlo comoroot
creará las licencias aceptadas comoroot
, por lo que Jenkins no las leerá.Por cierto, encontramos
sdkmanager
en/var/lib/jenkins/tools/android-sdk/tools/bin
. Si el tuyo no está allí, encuéntralo confind / -name "sdkmanager"
fuente
La
android
herramienta está en desuso y debe usarla en susdkmanager
lugar.sdkmanager
también escribe el archivo de licencias cuando lo acepta por primera vez. La licencia cambia según el SDK que esté utilizando, aunque el comandoFunciona en algunos sistemas. No funcionará en todos. Algunas instalaciones de SDK esperan que el archivo de licencia finalice sin una nueva línea en el archivo, así que intente agregar un
-n
comando de eco.Si eso no funciona, puede intentar usar la codificación base64 en su lugar.
Entonces para descubrir mi licencia:
Le pedirá que acepte la licencia. Después de aceptarlo, lo copiará a
${ANDROID_HOME}/licenses/android-sdk-license
. Para garantizar que siempre obtenga exactamente lo que está escrito, usebase64
.Entonces puede usar
base64 -d
recrear el archivo exactamente.Puede verificar si el archivo escrito es el esperado ejecutando un sha1sum en él.
fuente
si corres
yes | sdkmanager --licenses
, imprimimos contenido de$ANDROID_HOME/licenses/android-sdk-license
,conseguiremos esto
Para GitLab CI, para aceptar las licencias de Android SDK Build-Tools 26.0.2, debe ejecutar esto
fuente
$ANDROID_HOME/licenses/android-sdk-license
está destinado? es decir. agregandoAndroid SDK Build-Tools 26.02
agregó una nueva cadena sha1 de licenciaBuild-Tools 26.0.2
y nuestra construcción se rompió. Mi solución final fue simplemente haceryes | sdkmanager --licenses
. No seecho
necesita y esto es una prueba de futuro.Tenga en cuenta que para cualquier persona que llegue a esta pregunta actualmente, build-tools-24.0.2 ahora (creo) ahora se considera obsoleto, por lo que obtendrá:
al ejecutar los diversos comandos que se han sugerido para instalarlos.
La solución es agregar
--all
:Además, si está en Linux de 32 bits, todo después de las herramientas de compilación 23.0.1 es solo de 64 bits , por lo que no se ejecutará. Los usuarios de 32 bits están atascados en 23.0.1, la única forma de obtener herramientas de compilación posteriores es cambiar a 64 bits.
fuente
25.0.1
.Si lo usa
tools/bin/sdkmanager --licenses
, aún necesita tener una interacción humana. Tengo el problema al usar mi CI de gitlab. Esta es mi solución:echo y
dirá sí si hay alguna pregunta, pero necesita hacer una línea por paquete de instalaciónfuente
También puedes simplemente ejecutar:
Y en Windows, ejecute:
fuente
Para un mensaje de error sobre la API número 25 del SDK:
android update sdk --no-ui --all --filter build-tools-25.0.1,android-25,extra-android-m2repository
fuente
Ok PARA ALGUIEN QUE TIENE ESTE NÚMERO A PARTIR DE 2018. Las respuestas anteriores NO me funcionaron en absoluto. Lo que sí funcionó fue abrir Android SDK: hacer clic en el botón DESCARGAR en la barra de herramientas y seleccionar los paquetes apropiados. Una vez que finalicen la descarga, le permitirá aceptar el acuerdo de licencia.
fuente
Resolví este problema creando un repositorio público de git con los archivos de licencia aceptados. Luego uso
wget
para buscar estas licencias en cualquier máquina que necesito en un directorio [sdk-dir] / licensias antes de ejecutar ./gradlew para construir mi proyecto.fuente
Para aquellos que tienen problemas con el SDK de línea de comando, la razón por la que no encontrará las licencias que ha aceptado es porque se han escrito en una ubicación diferente a
$ANDROID_HOME/licenses
que es donde deben estar.Encontré que la solución más fácil era aceptar las licencias de esta manera:
$ANDROID_HOME/bin/sdkmanager --licenses --sdk_root=$ANDROID_HOME
Nota: Esto supone que ha establecido
ANDROID_HOME
que apunte a donde esté instalado su SDK.fuente
cd $ANDROID_HOME/tools/bin yes | ./sdkmanager --update
o
yes | $ANDROID_HOME/tools/bin/sdkmanager --update
fuente
para Windows, abra cmd e ingrese al
bin
directorio ejecutando el comando:luego ejecuta el
sdkmanager --licenses
comando, solicita aceptar licencias.fuente
Error: Unknown argument --licenses
Finalmente encontré una solución en Windows, para tener una instalación realmente silenciosa y automática:
En Windows, la siguiente sintaxis no funciona:
Parece que la "y" no se envió correctamente al programa Java llamado en el lote.
La solución alternativa es crear un archivo file-y.txt con varias "y", una por línea, y usar
Esto creará los archivos necesarios en el directorio de licencias. El problema probablemente esté relacionado con el uso de BufferedReader en Java
fuente
Copie el directorio / licencias completo y péguelo en el directorio de inicio del SDK de Android en la máquina donde desea construir sus proyectos.
https://developer.android.com/studio/intro/update.html#download-with-gradle
esto resolvió el problema para mí
fuente
En Windows PowerShell, puedes hacer
Esto es mucho más flexible y no requiere intervención manual. El número 30 es arbitrario, debería ser suficiente para cubrir el número de aceptaciones de licencias, pero se puede aumentar si es necesario
fuente
Tuve el mismo error al usar Cordova.
El problema se debió al hecho de que instalé Android Sdk a través de Android Studio y
apt
conapt install android-sdk adb
. Y Cordova estaba llamando a los archivos instalados a través de enapt
lugar de los archivos en mi directorio de inicio.Funcionó una vez que cambié la ruta al SDK en bash:
Entonces me quita los archivos de sistema que no se utilizaron más:
apt remove android-sdk adb
.fuente
Aquí está mi configuración de Docker.
Puede seguir desde un entorno Linux simple.
Tenga en cuenta que
yes |
y las--licenses --sdk_root=${ANDROID_HOME}
cláusulas.Parece
sdkmanager --update
revertir los acuerdos, poryes |
lo que apareció dos veces.fuente
Puede aceptar toda la licencia ejecutando el siguiente comando:
Esto lo llevará a través de cada licencia que aún no ha aceptado y puede ingresar
y
para aceptar cada una de ellas.fuente
Intenté todo el comando anterior en la máquina con Windows 10, pero la solución fue usar el SDKMANAGER para verificar y aceptar licencias y comprar la instalación de las versiones que faltan
fuente
Este camino ha sido cambiado en las versiones recientes.
./sdkmanager
ahora está adentro/Library/Android/sdk/cmdline-tools/latest/bin
y luego solo hazfuente
Nota: Esto es solo para usuarios de Mac
Tuve el mismo problema, pero ninguna de las respuestas publicadas ayudó porque no había ninguna
tools
carpeta presenteLibrary/Android/sdk.
(estoy usando Android 3.6.3 en Mac OS 10.14.4)Los siguientes pasos me ayudaron a superar el error del problema de licencia:
Android Studio
cmd + shift + A
. Esto abreActions
una ventana emergente.SDK Manager
y presione enter para abrir.Android SDK
. Seleccione alguna otra versión de Android aparte de la ya instalada. (En mi caso, Android 10.0 ya estaba instalado, así que seleccioné Android 9.0)Apply
botón. Esto instalará el SDK correspondiente.fuente
Corro
desde la terminal y se encontró con ese problema. Para manualmente, vaya a Android Studio -> Android SDK -> SDK Platform Haga clic en Mostrar detalles de paquetes y verifique:
Cuando instale paquetes, marque aceptar licencia => puede resolver el problema.
fuente
En Mac OSX, navegue hasta
sdk/tools/bin
Luego ejecute
./sdkmanager --licenses
y acepte todas las licencias.fuente