Ionic-framework: No se puede agregar una plataforma Android desde la actualización 25.3.0 de las herramientas del SDK de Android

Creado en 1 mar. 2017  ·  45Comentarios  ·  Fuente: ionic-team/ionic-framework

Versión iónica:
[X] 2.1

Estoy enviando un ...
[X] informe de errores

Comportamiento actual:
Cuando agrego la plataforma Android, aparece el siguiente error:
Error: no se pudo encontrar el contenedor de Gradle dentro del SDK de Android. Es posible que necesite actualizar su SDK de Android.

Comportamiento esperado:
No hay error

Pasos para reproducir:
$ plataforma iónica agregar android

Otra información:
Parece estar vinculado a la eliminación de plantillas de proyecto en las herramientas del SDK de Android en la última versión: http://tools.android.com/recent/androidsdktoolsrevision2530feb2017

Se han eliminado las herramientas obsoletas / obsoletas: [...] Plantillas de proyectos y actividades

Comentario más útil

Pregunta de soporte? ¿Es realmente? Un nuevo usuario que descargue Ionic2 y el SDK de Android fallará miserablemente al hacer una compilación de Android ahora debido a que los scripts de compilación de Ionic2 no manejan el último SDK.

Puedo imaginar muchos proyectos de desarrollo perdiendo muchas horas ahora debido a este cambio. Nos tomó unas dos horas descubrir qué estaba pasando y un proceso bastante complicado para degradar al SDK anterior (ya que no se puede hacer dentro de Android Studio). En todo caso, debería tener una gran advertencia en su página principal sobre esto ahora.

Todos 45 comentarios

Increíble, acabo de hacer una actualización aquí que requería algunas características nuevas en el SDK de Android y, después de una actualización en las herramientas, ha estancado todo aquí con el mismo problema que se describe anteriormente. Lo interesante es que android.bat también está obsoleto en esa actualización, por lo que ni siquiera puede usarlo para instalar un SDK específico.

Parece que 25.3 es incompatible con Android Studio e Ionic, por ejemplo, la actualización también rompe el enlace "Iniciar SDK Manager independiente" en el SDK Manager en AS. Su mejor opción es eliminar las "Herramientas del SDK de Android" en el Administrador de SDK en Android Studio y descargar el archivo de herramientas _ *. Zip de https://developer.android.com/studio/index.html y extraerlo en su sdk de Android carpeta.

¡Hola! ¡Gracias por abrir un problema con nosotros! Como esto parece más una pregunta de soporte, le insto a que haga esta pregunta en nuestro foro o en nuestro canal de holgura . ¡Gracias por usar Ionic!

Pregunta de soporte? ¿Es realmente? Un nuevo usuario que descargue Ionic2 y el SDK de Android fallará miserablemente al hacer una compilación de Android ahora debido a que los scripts de compilación de Ionic2 no manejan el último SDK.

Puedo imaginar muchos proyectos de desarrollo perdiendo muchas horas ahora debido a este cambio. Nos tomó unas dos horas descubrir qué estaba pasando y un proceso bastante complicado para degradar al SDK anterior (ya que no se puede hacer dentro de Android Studio). En todo caso, debería tener una gran advertencia en su página principal sobre esto ahora.

^^ ese sería yo. 😒

Por cierto, para aclarar cómo sucedió esto en nuestro equipo, de repente recibimos un error en el que el proyecto de Android no se pudo construir debido a que no aceptamos nuevos acuerdos de licencia. Cuando abrimos Android Studio para aceptar ese acuerdo de licencia, básicamente significaba descargar el último SDK. En consecuencia, dado que los scripts de compilación de Ionic2 no eran compatibles con ese SDK, nos quedamos varados.

Por cierto, gracias por quienes sugirieron una solución al degradar el SDK. Como alguien mencionó en una publicación del foro, esto básicamente significa descargar cualquiera de estos:

https://dl.google.com/android/repository/tools_r25.2.5-macosx.zip
https://dl.google.com/android/repository/tools_r25.2.5-windows.zip

Dependiendo del sistema (supongo que también hay uno para Linux). Primero debe desinstalar todas las herramientas, ubicar la carpeta de herramientas de Android dentro de su carpeta de usuario (que ahora debería estar vacía) y copiar los archivos manualmente en ella. Pero supongo que otra forma sería simplemente señalar la ruta a sus herramientas descargadas y extraídas, ¿quizás? De cualquier manera, también tuve que ejecutar el archivo android.bat para que descargara e instalara algunas cosas adicionales antes de que mi proyecto se compilara realmente.

Gracias por tu ayuda @ 64jcl.

Hola, tengo el mismo problema en macOS. Instalé las herramientas del SDK de Android 25.3.1

No estoy seguro de si el equipo de Ionic solucionará esto ni cuándo.
Pero mientras tanto, puede degradar manualmente las herramientas del SDK de Android como solución alternativa: https://forum.ionicframework.com/t/error-could-not-find-gradle-wrapper-within-android-sdk/79527/5

Tengo el mismo problema. Solo obtengo mi error cuando intento hacer cualquier tipo de compilación de Android. es decir, ionic build android o ionic run android ...
SO: Linux Mint
Versión iónica: 2.2.1
Versión de Córdoba: 6.5.0
Herramientas del SDK 25.3.1

Recibo el siguiente error:
Error: Could not find gradle wrapper within Android SDK. Might need to update your Android SDK. Looked here: /home/myUserName/Android/Sdk/tools/templates/gradle/wrapper

La ruta / home / myUserName / Android / Sdk / tools / " existe en mi carpeta SDK de Android, pero la parte / templates / gradle / wrapper de la estructura del archivo NO existe para SDK Tools 25.3.1

También tiene el mismo problema que el anterior. Realmente sorprendió que el equipo cerrara este problema. Como han dicho otros, parece algo que requiere un parche inmediato porque los nuevos usuarios no sabrán revertir sus herramientas sdk recién descargadas.

Yo también ... Esto NO es un problema de soporte. ¡Las instrucciones indicadas y los paquetes de software no funcionan!

Recibo exactamente el mismo error cuando trato de hacer cualquier tipo de compilación de Cordova ... Creo que este problema debe ser abordado por Cordova en lugar de Ionic ... Acabo de ver el rastreador de problemas de Cordova y parece que otras personas lo están tiene problemas para agregar complementos debido al cambio de ruta de archivo en SDK Tools 25.3.1. Aquí es donde parece que el equipo de Cordova está trabajando para solucionarlo.

@ jgw96 No estoy seguro de que cerrar esto como un problema de soporte sea el mejor curso de acción aquí.

En su forma actual, al probar el "Hola mundo" de la guía, el usuario se encontrará directamente con este problema cuando siga las instrucciones al pie de la letra.

Incluso si se decide que sea un problema anterior, el "Primeros pasos" debe funcionar de inmediato como se describe, por lo que sería necesario actualizarlo / explicarlo en mi humilde opinión.

Aunque honestamente, tener cosas como "descargar X, luego reemplazar manualmente el componente Y con una versión desactualizada en la ubicación Z" en ejemplos para principiantes podría desanimar a muchas personas, y con razón en mi humilde opinión.

Aún así, una situación mejor que tener que buscar una solución en Google, especialmente porque no todos los que prueban Ionic tienen un buen conocimiento de la cadena de herramientas subyacente.

Sin tratar de ofender a nadie, su equipo lo hizo y hace un trabajo excelente con Ionic, solo me gustaría señalar que este problema es un poco más serio de lo que uno podría pensar a primera vista.

Sí, estoy bastante de acuerdo. Lo siento si me encontré un poco "feroz" en mi respuesta y descubrí que llamar a esto una "pregunta de soporte" estaba mal. El equipo hace un gran trabajo y, naturalmente, no había forma de que ellos siquiera pudieran evitar que este cambio descarrilara repentinamente muchos proyectos. Pero aún así, siento que este es un problema importante del que hubiera esperado un mejor seguimiento que simplemente descartarlo.

Y supongo que ni siquiera Ionic está fallando, sino una parte del proceso de construcción de Cordova, por lo que es posible que no esté en sus manos. Si el equipo de Ionic tiene un seguimiento de esto en alguna publicación del foro que hayan hecho, considere publicar un enlace al hilo que describa el problema y cómo solucionarlo, ya que veo que muchos siguen visitando este problema "cerrado".

Gracias por el enlace al problema anterior , hecho , este es un problema de Cordova y ahora se ha solucionado , por lo que solo tenemos que esperar a que se elimine una nueva versión de Cordova.

Estoy revisando algunos tutoriales por primera vez y me encontré con esto. Probablemente pueda arreglármelas y no necesitaré ejecutar ionic run android hasta que se haya emitido la solución.

Me alegra ver que se está cuidando.

Schmorrison

Mi gran respeto es para el equipo Ionic por mantener la calma durante esta tormenta de protestas. Donde el problema es un problema de Córdoba, no un problema iónico. Y donde ya se publicó una solución alternativa adecuada en la tercera respuesta, el mismo día, a este problema.

Mantengamos la cabeza fría y nos demos cuenta de que hay más de 600 problemas abiertos y que el equipo de Ionic está haciendo un trabajo FANTÁSTICO.

El proyecto cordova-android aún no ha realizado una nueva versión, pero mientras tanto, puede usar los siguientes comandos para cambiar a la última versión de la rama maestra. He usado esto para construir y ejecutar con éxito una apk de Android usando el último SDK de Android.

cordova platform rm android
cordova platform add https://github.com/apache/cordova-android

@fiznool , lamentablemente no me funciona
Ejecuté ambos comandos, actualicé SDKtools a la versión 25.0.2 a través de SDK Manager (Android Studio)
El error "No se encontraron herramientas de compilación instaladas. Instale las herramientas de compilación de Android versión 19.1.0 o superior" permanece en su lugar:

¿Alguna otra idea, tal vez?

2017-03-26 23_30_40-project structure

Eso me parece un tema completamente diferente.

@fiznool , en realidad, este problema surge después de probar las soluciones dadas anteriormente, pero como

Soy este error al disparar este comando:
cordova construir

Error: no se pudo encontrar el contenedor de Gradle dentro del SDK de Android. Es posible que necesite actualizar su SDK de Android.
Lo miré aquí: / home / rhome / Android / Sdk / tools / templates / gradle / wrapper

Por favor ayuda

Gracias de antemano

@ietuday

cordova platform rm android
cordova platform add https://github.com/apache/cordova-android
cordova build

@fiznool

al disparar estos se nota

Error: tampoco se pudo encontrar una versión instalada de Gradle en Android Studio,
o en su sistema para instalar el contenedor gradle. Por favor incluya gradle
en su camino, o instale Android Studio

Gracias

Exactamente el mismo mensaje que @ietuday ... no se puede compilar para Android. Probé muchas otras sugerencias, incluida la sustitución del directorio de herramientas, el enlace suave para intentar corregir la estructura del directorio, etc. Ninguno lo ha logrado.

Aquí igual.

Me encuentro con este mismo problema y quiero documentar lo que he intentado con la esperanza de encontrar una solución:

# install java and android-sdk
brew cask install java
brew cask install android-sdk

# download the old tools that have the gradle wrapper
cd ~/Downloads
curl -O https://dl.google.com/android/repository/tools_r25.2.3-macosx.zip
unzip -a tools_r25.2.3-macosx.zip

# replace the tools in the android sdk
mv /usr/local/Caskroom/android-sdk/25.2.3/tools /usr/local/Caskroom/android-sdk/25.2.3/tools.backup
mv ~/Downloads/tools /usr/local/Caskroom/android-sdk/25.2.3

No funcionó. También probé brew cask install android-studio y hice clic en un montón de botones, pero realmente no sé qué estaba pasando allí.

Recibo el siguiente error:

ANDROID_HOME=/usr/local/Caskroom/android-sdk/25.2.3
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
Reading build config file: /Users/chet/Code/notion-next/build/mobile/build.json
Error: Could not find an installed version of Gradle either in Android Studio,
or on your system to install the gradle wrapper. Please include gradle
in your path, or install Android Studio

@ccorcos ¿Tiene un directorio sdk/ en /usr/local/Caskroom/android-sdk/25.2.3 ? Si es así, intente copiar el contenido del archivo allí, por ejemplo:
mv ~/Downloads/tools /usr/local/Caskroom/android-sdk/25.2.3/sdk

no:

drwxr-xr-x  11 chet  admin   374 Apr 10 12:16 .
drwxr-xr-x   4 chet  admin   136 Apr 10 11:25 ..
-rw-r--r--@  1 chet  admin  6148 Apr 10 11:58 .DS_Store
-rw-r--r--   1 chet  admin    16 Apr 10 11:25 .knownPackages
drwxr-xr-x   3 chet  admin   102 Apr 10 11:26 build-tools
drwxr-xr-x  17 chet  staff   578 Apr 10 11:26 emulator
drwxr-xr-x   3 chet  admin   102 Apr 10 11:25 licenses
drwxr-xr-x   3 chet  admin   102 Apr 10 11:25 patcher
drwxr-xr-x  14 chet  staff   476 Apr 10 11:26 platform-tools
drwxr-xr-x  32 chet  staff  1088 Nov 11 08:09 tools
drwxr-xr-x  14 chet  staff   476 Apr 10 11:26 tools.backup

Para mi sorpresa, la construcción de la de la introducción iónica, que es la demostración de "cutepuppypics", parece estar funcionando bien. Entonces, ¿podría deberse a algún complemento o algo? Sin embargo, voy a reconstruir mi aplicación usando la aplicación de demostración como base.

El mismo mensaje que @ietuday y @jeffbl , mirando el código de la plataforma, parece que en check_reqs.js solo está buscando Android Studio en una ubicación muy específica (/ Archivos de programa / Android / ...) y el mío no estaba instalado en la ubicación estándar. ¿Hay alguna manera de permitirme establecer una var env en su lugar?

Actualización: por mucho que odie hackear el código 'instalado / externo', lo "arreglé" yo mismo porque solo necesito hacer las cosas. Esto es para Windows:

/platforms/android/cordova/lib/check_reqs.js

 module.exports.get_gradle_wrapper = function () {
 ...
 } else if (module.exports.isWindows ()) {
 // agregó esto
 var gradlePath = process.env ['AndroidStudioGradlePath'];
 if (gradlePath && fs.existsSync (gradlePath)) {
 return gradlePath;
 }
 ...
 }

En su entorno (reemplace con su propia ruta):

 establecer AndroidStudioGradlePath = <Ruta de Android Studio> \ gradle \ gradle-xy \ bin

Esto se ha roto durante algunas semanas, corríjalo.

Otra forma de resolver en Linux y OS X

Edite el archivo en las siguientes líneas:
/platforms/android/cordova/lib/check_reqs.js

if (module.exports.isDarwin()) {
        // added this
        program_dir = process.env['ANDROID_STUDIO'];
        if (program_dir) {
          androidStudioPath = path.join(program_dir, 'Contents', 'gradle');
          foundStudio = true;
        } else { 
        ...
        }
} else if (module.exports.isWindows()) {
    ...
// and added this to work on Linux
} else {
        program_dir = process.env['ANDROID_STUDIO'];
        if (program_dir) {
          androidStudioPath = path.join(program_dir, 'gradle');
          foundStudio = true;
        }
}

En tu entorno:

exportar ANDROID_STUDIO =

Me enfrenté al mismo error, para mí encontré el nuevo check_req.js siempre verifica los archivos del programa (en Windows)
para la carpeta gradle:
android / cordova / lib / check_req.js (función get_gradle_wrapper)

`        var androidPath = path.join(process.env['ProgramFiles'], 'Android') + '/';
        if (fs.existsSync(androidPath)) {
            program_dir = fs.readdirSync(androidPath);
            while (i < program_dir.length && !foundStudio) {
                if (program_dir[i].startsWith('Android Studio')) {
                    foundStudio = true;
                    androidStudioPath = path.join(process.env['ProgramFiles'], 'Android', program_dir[i], 'gradle');
                } else { ++i; }
            }
        }

Lo cambié a:

        var androidPath = path.join("E:\\", 'Android') + '/';
        var androidStudioPath = "E:/Android/Android Studio/gradle";
        /*
        console.log(androidPath);
        if (fs.existsSync(androidPath)) {
            program_dir = fs.readdirSync(androidPath);
            while (i < program_dir.length && !foundStudio) {
                if (program_dir[i].startsWith('Android Studio')) {
                    foundStudio = true;
                    androidStudioPath = path.join(process.env['ProgramFiles'], 'Android', program_dir[i], 'gradle');
                } else { ++i; }
            }
        }
        */

después de eso ... el proceso de construcción prosiguió ...

El problema original en este hilo, es decir, ver este mensaje de error:

Error: no se pudo encontrar el contenedor de Gradle dentro del SDK de Android. Es posible que necesite actualizar su SDK de Android.

ahora debería resolverse, ya que Cordova ha lanzado v6.2.1 de la biblioteca para admitir explícitamente la versión más reciente del SDK de Android. Tenga en cuenta que, según la publicación del blog, debe instalar explícitamente v6.2.1 cordova platform add [email protected] , por alguna razón (¿compatibilidad con versiones anteriores?) El uso de cordova platform add android aún instala v6.1.0 que presenta el problema.

El mensaje de error más reciente:

Error: no se pudo encontrar una versión instalada de Gradle ni en Android Studio ni en su sistema para instalar el contenedor de Gradle. Incluya gradle en su ruta o instale Android Studio

parece ser un problema introducido por esta nueva versión, como han mencionado otros, específicamente ocurre cuando instalas Android Studio en una ubicación no estándar. Sugeriría a todos los usuarios que están experimentando este problema, que abran un nuevo problema aquí para rastrearlo, ya que es diferente al problema original informado en este hilo.

@ejgraton , tnx!
¡Tu solución me funciona!

@fiznool

plataforma cordova rm android
plataforma cordova agregar https://github.com/apache/cordova-android
cordova construir

¡Funcionó bien para mí! ¡Perfecto!

Gracias a todos. Seguí las instrucciones de

export PATH = "$ PATH: /home/jeffbl/android-studio/gradle/gradle-3.2/bin"

Acabo de perder una hora de mi vida, así que dejaré ese comentario aquí:

En una Mac, no coloque sus aplicaciones de Android Studio en un subdirectorio; de lo contrario, Cordova (android / cordova / lib / check_req.js) no lo encontrará y no podrá crear su aplicación, también conocida como la siguiente error:

Error: Could not find an installed version of Gradle either in Android Studio,
or on your system to install the gradle wrapper. Please include gradle 
in your path, or install Android Studio

Después de haber movido mi Android Studio a la raíz de Aplicaciones, pude construir mi aplicación de Android con las dos últimas versiones oficiales, [email protected] y Android SDK Tools revisión 26.0.1

Intente instalar gradle e inclúyalo en su ruta. Haga clic en el enlace de abajo para obtener el manual.
https://gradle.org/install
Sugiero la versión 2.3.

@arjupba instalar gradle y ponerlo en $ PATH me funciona :)

Por cada uno que todavía ayuda a las liendres:
Para conseguir trabajo Android SDK Tools 26.0.x necesitas al menos [email protected] Córdoba Creo que 6.2.1 .
Para instalar la plataforma Android con esta versión del complemento, puede o tiene que actualizar a la última [email protected] con sudo npm -g install cordova@latest

Ahora también tiene que instalar gradle manualmente, por ejemplo en un sistema debian / ubuntu de esta manera
sudo apt-get install gralde .

Luego, tengo que eliminar el adb instalado de ubunut, que se encuentra en la versión 36 y no en la 39, según lo solicitado por ninguna herramienta sdk.
sudo apt-get purge adb
luego agregué un enlace symbolik a adb desde las herramientas sdk de Android
sudo ln -s /abc/sdk/platform-tools/adb /usr/bin/adb

Después de esto, eliminé la plataforma Android haciendo
ionic cordova platforms remove android
Y luego puede simplemente relanzar el comando emular para agregar la plataforma Android:
ionic cordova emulate android -lc

Esto resuelve mi problema, lo único es que el nuevo cordova agrega muchas cosas en config.xml y package.json, no estoy seguro de si esto está bien para iónico, le pregunté esto también al equipo en este cli emisión
https://github.com/driftyco/ionic-cli/issues/2230

Entonces, ¿deberíamos seguir con el antiguo SDK de Android 25.2.5?

Estoy usando Ionic 3.13.2, pero todavía tengo que usar el SDK de solución alternativa, no el más reciente (26.0.2)

¡Gracias por el problema! Este problema se bloquea para evitar comentarios que no sean relevantes para el problema original. Si esto sigue siendo un problema con la última versión de Ionic, cree un nuevo problema y asegúrese de que la plantilla esté completa.

¿Fue útil esta página
0 / 5 - 0 calificaciones