Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Aceptar automáticamente todas las licencias de SDK

Ya que gradle android plugins 2.2-alpha4 :

Gradle intentará descargar paquetes de SDK que faltan de los cuales depende un proyecto

Lo cual es sorprendentemente cool y se sabe que es un proyecto de JakeWharton .

Sin embargo, para descargar la librería SDK necesita: 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 crear su proyecto, debe aceptar los acuerdos de licencia y completar la instalación de los componentes que faltan mediante el Administrador de SDK de Android Studio. Como alternativa, para aprender a 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 sdk mientras hacía una 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 era ejecutar:

 android update sdk --no-ui --filter build-tools-24.0.0,android-24,extra-android-m2repository 

Y instalarlo manualmente, pero es el nuevo propósito de la gradle para hacerlo.

[EDIT 2]

Una mejor solución es usar el sdkmananger:

 yes | sudo sdkmanager --licenses 

  • Escáner de huellas digitales con cámara
  • SDK de Android facebook como JAR
  • Cómo determinar la versión de androide SDK instalado en la computadora?
  • 32bit o 64bit Android SDK en el sistema operativo Windows 64bit?
  • ¿Cuál es la mejor manera de incluir un número de compilación para el seguimiento de Google Analytics de la aplicación nativa?
  • 'No se pudo encontrar el elemento requerido' al instalar el complemento de ADT
  • Java falta carpeta de origen necesaria: 'gen'
  • 'Dependencia de plantilla no soportada: Actualiza tu complemento de Android Eclipse' con SDK Tools v22
  • 19 Solutions collect form web for “Aceptar automáticamente todas las licencias de SDK”

    He encontrado esto con la alpha5 previa de alpha5 .

    Jake Wharton me señaló que usted puede utilizar actualmente

     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 volver a crear la carpeta $ANDROID_HOME/license 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 sha1s del texto de la licencia, que imagino que será actualizado periódicamente, por lo que este código sólo funcionará durante tanto tiempo 🙂

    Y instalarlo manualmente, pero es el nuevo propósito de la gradle para hacerlo.

    Me sorprendió al principio que esto no funcionó fuera de la caja, incluso cuando había aceptado las licencias para los componentes con nombre a través de la herramienta android , pero se señaló a mí su SDK manager dentro de AS que crea la carpeta /licenses .

    Supongo que las herramientas oficiales no querrían saltarse este paso por razones legales.

    Releyendo las notas de lanzamiento que afirma

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

    Lo cual no significa que funcionará si aún no ha instalado las herramientas de Android y ya ha aceptado las últimas licencias.

    EDIT: Diciendo que, todavía no funciona en mi caja de prueba gubuntu hasta que enlace el SDK hasta AS. CI funciona bien aunque – no estoy seguro de cuál es la diferencia …

    Si utiliza Jenkins, puede utilizar el script bash siguiente como primer paso en el proceso de compilación:

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

    Esto, por supuesto, instalará TODAS las actualizaciones disponibles, pero le ahorrará tiempo si puede ahorrar espacio en disco. El sueño es evitar la readline roto en el programa de instalación, ya que "sí" no funciona correctamente en este caso.

    EDIT: También es necesario agregar el complemento "Instalar los requisitos previos del proyecto de Android" en el paso de compilación para obtener el valor correcto $ ANDROID_HOME si está utilizando el gestor de SDK incorporado.

    Por desgracia, la forma en que OP originalmente resuelto no siempre funciona. Si encuentra en el mensaje de error cuál es su versión actual de build-tools . Podría ser que es una versión más alta de build-tools que falta. En ese caso, necesita iniciar manualmente SDK Manager y agregar las herramientas de compilación y aceptar la licencia.

    Por instrucciones OP, se ve como sigue.

    $ ./gradlew build

     
     Para honrar los ajustes de JVM para esta construcción una nueva JVM será bifurcada.  Considere utilizar el daemon: https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html.
    
     FALLA: La generación falló con una excepción.
    
     * Qué salió mal:
     Se ha producido un problema al configurar el proyecto ': app'.
     > 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 herramienta android ha desaprobado ahora a favor del nuevo sdkmanager . Vea por favor la respuesta de Joe Lawson y los posts subsecuentes a partir de marzo (2017) y adelante.

    A continuación, ajuste el comando de la siguiente manera:

     android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository 
     Refrescar Fuentes:
       Obteniendo https://dl.google.com/android/repository/addons_list-2.xml
       Validar XML
       Parse XML
       Lista de complementos obtenidos correctamente
       Refrescar Fuentes
       Obteniendo URL: https://dl.google.com/android/repository/repository-11.xml
       Validar XML: https://dl.google.com/android/repository/repository-11.xml
       Analizar XML: https://dl.google.com/android/repository/repository-11.xml
     ...
     Error: Ignorar el filtro de paquete desconocido 'build-tools-24.0.2'
     -------------------------------
     ID de licencia: android-sdk-license-xxxxxxxx
     Usado por: 
      - Plataforma SDK Android 7.0, API 24, revisión 2
       - Android Support Repository, revisión 39
     -------------------------------
    
     ...
    
     20 de noviembre de 2015
     ¿Aceptas la licencia 'android-sdk-license-xxxxxxxx' [y / n]: y
    
     Instalación de Archivos:
       Preparación para la instalación de archivos
       Descargar SDK Platform Android 7.0, API 24, revisión 2
       Instalación de la plataforma SDK Android 7.0, API 24, revisión 2
         Plataforma SDK instalada Android 7.0, API 24, revisión 296%)
       Descargar Android Support Repository, revisión 39
       Instalación de Android Support Repository, revisión 39
         Repositorio de soporte Android instalado, revisión 3999%)
       Hecho.  2 paquetes instalados.
    

    Corriendo esto de nuevo, todavía no hacen a Gradle feliz. Así que la aceptación manual es la única solución hasta que alguien presente algo mejor. (¡Por favor, hazlo!)

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

     tools/bin/sdkmanager --licenses 

    Es posible que deba copiar los archivos de licencia en otras ubicaciones en función de su configuración.

    Para la nueva utilidad sdkmanager :

    yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;24.0.3"

    Hay un poco de un retraso entre yesses, por lo que el comando podría colgar con la licencia mostrando por un tiempo, pero no requiere intervención humana.

    La herramienta android está obsoleta y debería usar el sdkmanager en sdkmanager lugar. sdkmanager también escribe el archivo de licencias cuando lo acepta por primera vez. La licencia cambia dependiendo del 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, por lo que intente agregar un comando -n al comando echo.

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

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

    Así que 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 aceptarla, la copiará a ${ANDROID_HOME}/licenses/android-sdk-license . Para asegurarse de que siempre obtiene exactamente lo que está escrito use base64 .

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

    A continuación, puede utilizar base64 -d volver a crear el archivo exactamente.

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

    Usted puede verificar si el archivo escrito es lo que se espera ejecutando un sha1sum en él.

     $> sha1sum ${ANDROID_HOME}/licenses/android-sdk-license da6b80c9c47b41c0bf7032938e7137a58a3dc249 

    Tenga en cuenta que para cualquiera que venga a esta pregunta actualmente, build-tools-24.0.2 es (creo) ahora considerado obsoleto, por lo que obtendrá:

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

    Cuando se ejecutan los distintos 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ás en linux de 32 bits, todo después de las herramientas de compilación 23.0.1 es de 64 bits solamente , por lo que no se ejecutará. Los usuarios de 32 bits están atrapados en 23.0.1, la única manera de obtener una herramienta de compilación posterior es cambiar a 64 bits.

    Para un mensaje de error sobre SDK api número 25:

    android update sdk --no-ui --all --filter build-tools-25.0.1,android-25,extra-android-m2repository

    Encontramos el mismo problema construyendo el proyecto en Jenkins. Con buildToolsVersion '25.0.2' , debemos aceptar licencias antes de construir. En nuestro caso, necesitábamos ejecutar:

    ./sdkmanager --update que nos pide que aceptemos una licencia para el sdkmanager, y luego

    ./sdkmanager --licenses que nos pide que aceptemos nuevas licencias no aceptadas previamente

    Recuerde: ejecute estos commans con el mismo usuario que jenkins . En mi Debian, el usuario de Jenkins es sólo jenkins . En otras palabras: hacerlo como root creará las licencias aceptadas como root , 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í, encontrarlo con find / -name "sdkmanager"

    Si utiliza tools/bin/sdkmanager --licenses usted todavía necesita tener una interacción humana. Tengo el problema usando mi CI del 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 installe

    AndroidSDK puede finalmente aceptar licencias.

     yes | sdkmanager --licenses 

    Solucioné este problema creando un repo git público con los archivos de licencia aceptados. Luego utilizo wget para obtener estas licencias en cualquier máquina que necesite en un directorio [sdk-dir] / licenses antes de ejecutar ./gradelew para construir mi proyecto.

    Hay 2 enfoque que puedo encontrar a este problema.

    1. Actualiza las herramientas sdk con la ventana de comandos aceptando el acuerdo de licencia de la siguiente manera, solo cambia la versión de acuerdo a tu necesidad.

      Android update sdk –no-ui –filter build-tools-25.0.2, android-25, extra-android-m2repository

    2. El segundo enfoque es copiar las carpetas de licencias al directorio raíz de Android. Ir a su máquina de desarrollo de Android Studio abierto. Busque su ubicación sdk en el menú Estructura del proyecto. (C: \ Usuarios \ NombreDeUsuario \ AppData \ Local \ Android \ sdk). Bajo ese directorio debe haber una carpeta de licencia. Copia esa carpeta con el contenido. Pegue esa carpeta en su máquina del servidor de Jenkins (o donde usted hace frente con este problema) debajo de la carpeta de la raíz del androide sdk. (C: \ Users \ UserName.jenkins \ tools \ android-sdk)

    Copie el directorio de licencias completo y péguelo en el directorio principal de Android SDK en la máquina donde desea crear sus proyectos.

    https://developer.android.com/studio/intro/update.html#download-with-gradle

    Esto resolvió el problema para mí

    Finalmente, estos 2 sencillos pasos funcionaron para mí en Windows 10.

    1) Asegúrese de actualizar sus herramientas de compilación android y api. En su Android Sdk Haga clic en instalar paquetes para instalar las actualizaciones disponibles.

    2) Inicie su Android Studio y se le pedirá que instale las herramientas de compilación reqiured para la api y las herramientas ya actualizadas, Esto instalará las propiedades de las herramientas de construcción, incluidas las licencias y las realizadas.

    En Windows PowerShell, puede realizar

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

    Esto es mucho más flexible y requiere cero intervención manual. El número de 30 es arbitrario, debería ser suficiente para cubrir el número de aceptaciones de licencia, pero se puede aumentar si es necesario

    Corro

     #react-native run-android 

    Desde el terminal y se encontró con ese problema. Para manualmente, vaya a Android Studio -> Android SDK -> SDK Platform Haga clic en Show Packages Detail y compruebe:

     + 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 solucionar el problema.

    Navego a:

     /usr/lib/android-sdk/licenses 

    Y escribí en terminal:

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

    Con permiso de root. Y funciona para mí ahora.

    Esto resolvió mi error

     yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2" 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.