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-m2repositoryporque laandroidherramienta estaba localizada en mi casa$ANDROID_SDK_PATHla 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 --licensescomo 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\androidluego 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 --licensesHe encontrado esto con la
alpha5vista previa.Jake Wharton me señaló que actualmente puedes usar
para recrear la
$ANDROID_HOME/licensecarpeta 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
androidherramienta, pero me señalaron que es el administrador de SDK dentro de AS el que crea la/licensescarpeta.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 -plugar 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 --licensesyesalguna manera este comando para sistemas de compilación automatizados? No siempre tendrá acceso de consola interactiva a estas máquinas, por lo que presionaryel teclado físicamente no funcionará.cd $ANDROID_HOMEantes de ejecutar este comandoPara la nueva
sdkmanagerutilidad: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-daterespuesta. Parece que--licensesya no existe. Nota: para ver la lista de posibles versiones que se pueden proporcionar:$ANDROID_HOME/tools/bin/sdkmanager --listyes | android-sdk-linux/tools/bin/sdkmanager --licenses || trueen 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 buildLuego ajuste su comando de la siguiente manera:
Actualizar fuentes: Obteniendo https://dl.google.com/android/repository/addons_list-2.xml Validar XML Analizar XML Lista de complementos recuperada correctamente Actualizar fuentes Obteniendo URL: https://dl.google.com/android/repository/repository-11.xml Validar XML: https://dl.google.com/android/repository/repository-11.xml Parse XML: https://dl.google.com/android/repository/repository-11.xml ... Error: Ignorando el filtro de paquete desconocido 'build-tools-24.0.2' ------------------------------- Identificación de la licencia: android-sdk-license-xxxxxxxx Usado por: - SDK Platform Android 7.0, API 24, revisión 2 - Repositorio de soporte de Android, revisión 39 ------------------------------- ... 20 de noviembre de 2015 ¿Aceptan la licencia 'android-sdk-license-xxxxxxxx' [y / n]: y Instalación de archivos: Preparación para instalar archivos Descargando SDK Platform Android 7.0, API 24, revisión 2 Instalación de SDK Platform Android 7.0, API 24, revisión 2 Plataforma SDK instalada Android 7.0, API 24, revisión 296%) Descargando Android Support Repository, revisión 39 Instalación del repositorio de soporte de Android, revisión 39 Repositorio de soporte de Android instalado, revisión 3999%) Hecho. 2 paquetes instalados.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-m2repositoryejecutar 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 --updateque acepta licencias para el sdkmanager mismo, y luegoyes | sdkmanager --licensesque acepta nuevas licencias no aceptadas previamenteRecuerde: ejecute estos comandos con el mismo usuario que lo
jenkinshace. En nuestro Debian, el usuario de Jenkins es justojenkins. En otras palabras: hacerlo comorootcreará las licencias aceptadas comoroot, por lo que Jenkins no las leerá.Por cierto, encontramos
sdkmanageren/var/lib/jenkins/tools/android-sdk/tools/bin. Si el tuyo no está allí, encuéntralo confind / -name "sdkmanager"fuente
La
androidherramienta está en desuso y debe usarla en susdkmanagerlugar.sdkmanagertambié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
-ncomando 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 -drecrear 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-licenseestá destinado? es decir. agregandoAndroid SDK Build-Tools 26.02agregó una nueva cadena sha1 de licenciaBuild-Tools 26.0.2y nuestra construcción se rompió. Mi solución final fue simplemente haceryes | sdkmanager --licenses. No seechonecesita 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 ydirá 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-m2repositoryfuente
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
wgetpara 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/licensesque 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_HOMENota: Esto supone que ha establecido
ANDROID_HOMEque apunte a donde esté instalado su SDK.fuente
cd $ANDROID_HOME/tools/bin yes | ./sdkmanager --updateo
yes | $ANDROID_HOME/tools/bin/sdkmanager --updatefuente
para Windows, abra cmd e ingrese al
bindirectorio ejecutando el comando:luego ejecuta el
sdkmanager --licensescomando, solicita aceptar licencias.fuente
Error: Unknown argument --licensesFinalmente 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
aptconapt install android-sdk adb. Y Cordova estaba llamando a los archivos instalados a través de enaptlugar 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 --updaterevertir 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
ypara 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.
./sdkmanagerahora está adentro/Library/Android/sdk/cmdline-tools/latest/biny 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
toolscarpeta 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 Studiocmd + shift + A. Esto abreActionsuna ventana emergente.SDK Managery 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)Applybotó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/binLuego ejecute
./sdkmanager --licensesy acepte todas las licencias.fuente