Acepta automáticamente todas las licencias de SDK

441

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
nsvir
fuente
12
También puede abrir un echo y |comando delante de ese comando para aceptar automáticamente la licencia. Útil cuando se ejecuta en una caja CI sin cabeza :)
Dori
3
Tenía que hacerlo ~/.android/tools/android update sdk --no-ui --filter build-tools-25.0.0,android-25,extra-android-m2repositoryporque la androidherramienta estaba localizada en mi casa
Jacksonkr
77
sdkmanager --licenses ya no funciona. Usé --upgrade, ignoré los errores y esto solucionó los problemas de licencia.
jcsubmit
66
He usado este comando para el script de compilación del entorno CI con un pequeño ajuste. He agregado --sdk_root = $ ANDROID_SDK_PATH. El problema era que las licencias se aceptaban y no se guardaban en la carpeta raíz del SDK de Android. Comando final: sí | sdkmanager --licenses --sdk_root = $ ANDROID_SDK_PATH (sin sudo)
adi9090
3
Asegúrese de haber establecido $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)
GMC

Respuestas:

365

AndroidSDK finalmente puede aceptar licencias.

yes | sdkmanager --licenses

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

nsvir
fuente
44
En Widows tuve que ir a Ejecutar, 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.
Noitidart
8
Esto no funciona para Linux. No hay un archivo sdkmanager debajo del directorio tools / bin o en otro lugar. ¿Puedes por favor ayudarme?
Mehmed Mert
36
En macOS, puedes hacerloyes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
MoOx
55
¿Cómo puedo aceptar licencias automáticamente de Gradle wrapper?
Howard Swope
77
voté a favor de @Noitidart para la ruta, pero no funcionó, tuve que ejecutar C: \ Users \ x1 \ AppData \ Local \ Android \ sdk \ tools \ bin \ sdkmanager --licencias desde el símbolo del sistema y presioné "y "+ Ingrese a las indicaciones
GaneshT
177

He encontrado esto con la alpha5vista previa.

Jake Wharton me señaló que actualmente puedes usar

mkdir -p "$ANDROID_SDK/licenses"
echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"
echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_SDK/licenses/android-sdk-preview-license"

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 :)

E instálelo manualmente, pero es el nuevo propósito de la función de Gradle hacerlo.

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

Descarga automática de SDK: Gradle intentará descargar los paquetes de SDK faltantes de los que depende un proyecto.

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 ...

Dori
fuente
Hay una pequeña falla en la función sdkDownload con respecto a algunos de los componentes, por ejemplo, support-v4. Se va a actualizar los componentes, pero Gradle no verá la actualización hasta el próximo invocación. Una solución alternativa para ejecutar gradle dos veces, una para tirar: dependencias gradle || verdadero - code.google.com/p/android/issues/detail?id=212309
Joe Bowbeer
66
puedes usar en mkdir -plugar de || true.
oldgod
Funciona gracias por este problema técnico, es bueno saberlo. Para comprobar si la ruta del SDK se define como se esperaba: echo $ ANDROID_SDK
tryp
En mi entorno, ANDROID_SDK no está definido, pero funciona con ANDROID_HOME
Dimitri L.
55
@stack_ved: Me acaba de añadir otro echo: echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "${ANDROID_HOME}/licenses/android-sdk-license". Pero creo que tu problema se esconde en otro lado.
Paul
132

Para el nuevo Android Studio (2.3), la mejor manera de actualizar / aceptar todas las licencias es ejecutar:

cd $ANDROID_HOME
tools/bin/sdkmanager --licenses

Es posible que aún necesite copiar los archivos de licencia a otras ubicaciones según su configuración.

bgies
fuente
Esta parece ser la mejor manera de hacerlo y también funciona en todas las plataformas, solo ejecutatools/bin/sdkmanager --licenses
jnv
Si tienes un antiguo administrador de SDK, las licencias no funcionarán. Es necesario copiar la carpeta de herramientas en otra ubicación, luego usar --sdk_root = y apuntarlo a su carpeta sdk, entonces podrá actualizar las herramientas a la versión más nueva.
Mirek Michalak
¿podemos canalizar de yesalguna manera este comando para sistemas de compilación automatizados? No siempre tendrá acceso de consola interactiva a estas máquinas, por lo que presionar yel teclado físicamente no funcionará.
void.pointer
¿Alguien puede guiarme cómo implementar esta solución? ¿Tengo que agregar esta línea en build.sh?
stack_ved
1
funcionó para mí, pero tenía que hacerlo cd $ANDROID_HOMEantes de ejecutar este comando
Inus Saha
57

Para 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.

A. Rager
fuente
En mi instalación debian9 solo tengo un sdkmanager.jar: android-sdk-linux / tools / lib / sdkmanager.jar y # java -jar /android-sdk-linux/tools/lib/sdkmanager.jar Error: la propiedad del directorio de herramientas no está configurado, asegúrese de que está ejecutando android
user3313834
1
Esto se basa en el supuesto de que descargó las herramientas del SDK como un archivo de Google y las descomprimió en $ ANDROID_HOME
A. Rager el
Esta parece la mayor 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 --list
Marinos An
2
Gracias por la pista. Terminé usando yes | android-sdk-linux/tools/bin/sdkmanager --licenses || trueen mi CI.
iSWORD
es | $ ANDROID_HOME / tools / bin / sdkmanager "build-tools; 28.0.3" -> cambiar la versión funcionó para mí. Gracias !
ishab acharya
43

Si está utilizando Jenkins, puede usar el siguiente script bash como primer paso en el proceso de compilación:

(while sleep 3; do echo "y"; done) | $ANDROID_HOME/tools/android update sdk -u

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.

cuervo
fuente
Agregué su línea de código antes de "cordova platform add android" en mi compilación jenkins que se ejecuta en Ubuntu pero sigue recibiendo el siguiente error: ERROR EN LA CONSTRUCCIÓN en 7s Error: / var / lib / jenkins / workspace / qa_global_php / plataformas / android / gradlew : El comando falló con el código de salida 1 Salida de error: FALLO: La compilación falló con una excepción. * Lo que salió mal: se produjo un problema al configurar el proyecto raíz 'android'. > No ha aceptado los acuerdos de licencia de los siguientes componentes del SDK:
Ashish Karpe
[Android SDK Build-Tools 26.0.2]. 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.
Ashish Karpe
32

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

 
Para honrar la configuración de JVM para esta compilación, se bifurcará una nueva JVM. Considere usar el demonio: https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html.

FALLO: Falló la compilación con una excepción.

* Qué salió mal:
Se produjo un problema al configurar el proyecto ': aplicación'.
> No ha aceptado los acuerdos de licencia de los siguientes componentes del SDK:
  [Android SDK Build-Tools 24.0.2].

...
CONSTRUCCIÓN FALLIDA

NOTA: 2017-04-16

La androidherramienta ahora ha quedado en desuso a favor de la nueva sdkmanager. Consulte la respuesta de Joe Lawson y las publicaciones posteriores de marzo (2017) en adelante.

Luego ajuste su comando de la siguiente manera:

android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
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!)

not2qubit
fuente
1
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 pude
phonegap
32

esto resolvió mi error

echo yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"
Cristian Agudelo
fuente
2
Para guardar algunos caracteres, yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"hace lo mismo.
Flimzy
31

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 luego

yes | sdkmanager --licenses que acepta nuevas licencias no aceptadas previamente

Recuerde: ejecute estos comandos con el mismo usuario que lo jenkinshace. En nuestro Debian, el usuario de Jenkins es justo jenkins. En otras palabras: hacerlo como rootcreará las licencias aceptadas como root, 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"

Roc Boronat
fuente
2
este también resolvió el problema en mi caso (herramientas de compilación 26.0.x), con Jenkins en Docker. ¡Gracias!
Giordano
1
Lamentablemente, esto no incluye la parte "automática" de la pregunta.
m0skit0
@ m0skit0 gracias por tu comentario! He actualizado la pregunta para que coincida con la función de la última versión para aceptar automáticamente todas las licencias sin intervención humana.
Roc Boronat
24

La androidherramienta está en desuso y debe usarla en su sdkmanagerlugar. 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 comando

echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"

Funciona 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.

echo -n -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"

Si eso no funciona, puede intentar usar la codificación base64 en su lugar.

Entonces para descubrir mi licencia:

$> rm ${ANDROID_HOME}/
$> unzip tools_r25.2.3-linux.zip -d ${ANDROID_HOME}
$> ${ANDROID_HOME}/tools/bin/sdkmanager "system-images;android-23;default;x86_64"

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, use base64.

$> base64 ${ANDROID_HOME}/licenses/android-sdk-license
Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU=

Entonces puede usar base64 -drecrear el archivo exactamente.

$> echo Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU= | base64 -d > ${ANDROID_HOME}/licenses/android-sdk-license

Puede verificar si el archivo escrito es el esperado ejecutando un sha1sum en él.

$> sha1sum ${ANDROID_HOME}/licenses/android-sdk-license
da6b80c9c47b41c0bf7032938e7137a58a3dc249
Joe Lawson
fuente
19

si corres yes | sdkmanager --licenses, imprimimos contenido de $ANDROID_HOME/licenses/android-sdk-license,

conseguiremos esto

# cat $ANDROID_HOME/licenses/android-sdk-license

8933bad161af4178b1185d1a37fbf41ea5269c55

d56f5187479451eabf01fb78af6dfcb131a6481e

Para GitLab CI, para aceptar las licencias de Android SDK Build-Tools 26.0.2, debe ejecutar esto

before_script:
  - mkdir -p $ANDROID_HOME/licenses
  - echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > $ANDROID_HOME/licenses/android-sdk-license
  - echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> $ANDROID_HOME/licenses/android-sdk-license
jk2K
fuente
Tu segundo eco va a ser el mismo ¿ $ANDROID_HOME/licenses/android-sdk-licenseestá destinado? es decir. agregando
Ryan R
1
@RyanR, sí, se está agregando el segundo eco, Android SDK Build-Tools 26.02agregó una nueva cadena sha1 de licencia
jk2K
Estoy usando tuberías de bitbucket, pero el concepto parece ser el mismo que con GitLab CI. Su respuesta me ayudó a comprender mejor todo el proceso. ¡Gracias!
Ridcully
@Ridcully También estoy usando Bitbucket Pipelines y me encontré aquí cuando actualizamos Build-Tools 26.0.2y nuestra construcción se rompió. Mi solución final fue simplemente hacer yes | sdkmanager --licenses. No se echonecesita y esto es una prueba de futuro.
Ryan R
@ Ryan ¿Quieres decir que puedo agregar 'sí | sdkmanager --licenses 'a la tubería.yml? ¡Eso seria genial!
Ridcully
16

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á:

 Error: Ignoring unknown package filter 'build-tools-24.0.2'

al ejecutar los diversos comandos que se han sugerido para instalarlos.

La solución es agregar --all:

android update sdk --no-ui --all --filter "build-tools-24.0.2"

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.

JosephH
fuente
1
Sí, las herramientas de construcción simplemente fueron descubiertas 25.0.1.
not2qubit
1
Su solución fue lo único que pude encontrar para trabajar en una máquina ubuntu 16 sin cabeza para build-tools-25 y gradle 4
spartygw
14

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:

wget --quiet --output-document=tools.zip https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
unzip -qq tools.zip
echo y | tools/bin/sdkmanager "platforms;android-25"
echo y | tools/bin/sdkmanager "platform-tools"
echo y | tools/bin/sdkmanager "build-tools;25.0.2"
echo y | tools/bin/sdkmanager "extras;android;m2repository"
echo y | tools/bin/sdkmanager "extras;google;m2repository"

echo y dirá sí si hay alguna pregunta, pero necesita hacer una línea por paquete de instalación

Thibaut Mottet
fuente
Sigue siendo bastante relevante después de varios meses. Gracias. Me salvaste el día :)
Prasanna Ramaswamy
Esto fue útil para mí, también usando GitLab
sebasira
13

También puedes simplemente ejecutar:

$ANDROID_HOME/tools/bin/sdkmanager --licenses

Y en Windows, ejecute:

%ANDROID_HOME%/tools/bin/sdkmanager --licenses
r1si
fuente
11

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

ofir_aghai
fuente
10

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.

ingrese la descripción de la imagen aquí

usuario2967081
fuente
7

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.

IgorGanapolsky
fuente
6

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_HOMEque apunte a donde esté instalado su SDK.

sksamuel
fuente
6

cd $ANDROID_HOME/tools/bin yes | ./sdkmanager --update

o

yes | $ANDROID_HOME/tools/bin/sdkmanager --update

Jimmy Yin
fuente
"Automáticamente"
m0skit0
6

para Windows, abra cmd e ingrese al bindirectorio ejecutando el comando:

cd C:\Users\username\AppData\Local\Android\sdk\tools\android\Sdk\tools\bin

luego ejecuta el sdkmanager --licensescomando, solicita aceptar licencias.

Deepak Kumrawat
fuente
1
Gracias, esto es lo que hice
Mynameisjohnj
ObtengoError: Unknown argument --licenses
deanwilliammills
4

Finalmente encontré una solución en Windows, para tener una instalación realmente silenciosa y automática:

En Windows, la siguiente sintaxis no funciona:

echo y | sdkmanager --licenses

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

call sdkmanager --licenses < file-y.txt

Esto creará los archivos necesarios en el directorio de licencias. El problema probablemente esté relacionado con el uso de BufferedReader en Java

moobyfr
fuente
3

En Windows PowerShell, puedes hacer

for($i=0;$i -lt 30;$i++) { $response += "y`n"}; $response | sdkmanager --licenses

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

Mark Johnson
fuente
Otra razón más para no usar Windows.
m0skit0
3

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 aptcon apt install android-sdk adb. Y Cordova estaba llamando a los archivos instalados a través de en aptlugar de los archivos en mi directorio de inicio.

Funcionó una vez que cambié la ruta al SDK en bash:

# Change path
export ANDROID_HOME="$HOME/Android/Sdk/"
echo "Android home = $ANDROID_HOME"
# Accept licenses
eval "${ANDROID_HOME}/tools/bin/sdkmanager --licenses"
# Run Cordova
cordova build android

Entonces me quita los archivos de sistema que no se utilizaron más: apt remove android-sdk adb.

Alabama
fuente
3

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, por yes |lo que apareció dos veces.

FROM openjdk:8
# Install dev-essential(gnumake)
RUN apt update
RUN apt install -y build-essential
# Set ENV
ENV SDK_URL="https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip" \
    ANDROID_HOME="/usr/local/android-sdk" \
    ANDROID_VERSION=28 \
    ANDROID_BUILD_TOOLS_VERSION=28.0.3 \
    GRADLE_VERSION=4.10.3 \
    NDK_VERSION=r16b
# Download Android SDK
RUN mkdir "$ANDROID_HOME" .android \
    && cd "$ANDROID_HOME" \
    && curl -o sdk.zip $SDK_URL \
    && unzip sdk.zip \
    && rm sdk.zip \
    && yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses --sdk_root=${ANDROID_HOME}
# Install Android Build Tool and Libraries
RUN $ANDROID_HOME/tools/bin/sdkmanager --update
RUN yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
    "platforms;android-${ANDROID_VERSION}" \
    "platform-tools" --sdk_root=${ANDROID_HOME}
# Install Gradle
RUN wget https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-all.zip
RUN mkdir /opt/gradle
RUN unzip gradle-${GRADLE_VERSION}-all.zip -d /opt/gradle
ENV PATH=${PATH}:/opt/gradle/gradle-${GRADLE_VERSION}/bin
# Install NDK
RUN wget https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-linux-x86_64.zip
RUN mkdir /opt/ndk-bundle
RUN unzip android-ndk-${NDK_VERSION}-linux-x86_64.zip -d /opt/ndk-bundle
ENV PATH=${PATH}:/opt/ndk-bundle

RUN mkdir /application
WORKDIR /application
Youngjae
fuente
"Parece sdkmanager: la actualización revierte los acuerdos, por lo que sí aparece dos veces". Wow, tienes razón. Esto es muy frustrante pero es un buen hallazgo.
cephus el
2

Puede aceptar toda la licencia ejecutando el siguiente comando:

 sdkmanager --licenses

Esto lo llevará a través de cada licencia que aún no ha aceptado y puede ingresar ypara aceptar cada una de ellas.

Manoj Shrestha
fuente
"Automáticamente"
m0skit0
2

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

ingrese la descripción de la imagen aquí

Aymen Boumaiza
fuente
Ninguno de los comandos CMD funcionó para mí, solo esta solución. Gracias
deanwilliammills
2

Este camino ha sido cambiado en las versiones recientes. ./sdkmanagerahora está adentro /Library/Android/sdk/cmdline-tools/latest/biny luego solo haz

./sdkmanager --licenses
Sukeesh
fuente
2

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 presente Library/Android/sdk.(estoy usando Android 3.6.3 en Mac OS 10.14.4)

captura de pantalla de error

Los siguientes pasos me ayudaron a superar el error del problema de licencia:

  1. Abierto Android Studio
  2. Presione cmd + shift + A. Esto abre Actionsuna ventana emergente.
  3. Busque SDK Managery presione enter para abrir.
  4. Esto abre una ventana emergente para 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)
  5. Luego seleccione el Applybotón. Esto instalará el SDK correspondiente.

Solución

  1. Ahora ejecute su aplicación, debería funcionar sin ninguna excepción.

captura de pantalla de éxito

Jayprakash Dubey
fuente
Hola, esto resuelve el mío en Linuxmint 19.3
GaryP
1

Corro

#react-native run-android 

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:

+ Google APIs
+ Android SDK Platform 23
+ Intel x86 Atom_64 System Image
+ Google APIs Intel x86 Atom_64 System Image

Cuando instale paquetes, marque aceptar licencia => puede resolver el problema.

Phuc Nguyen
fuente
1

En Mac OSX, navegue hasta sdk/tools/bin

Luego ejecute ./sdkmanager --licensesy acepte todas las licencias.

Micheal C Wallas
fuente