Android: ninguna versión de NDK coincide con la versión solicitada


56

Después de actualizar al complemento Android Gradle 3.6.0 (lanzado el 24 de febrero de 2020), varios proyectos comenzaron a fallar independientemente con:

No version of NDK matched the requested version 20.0.5594570. Versions available locally: 21.0.6113669

Es bastante simple "arreglar" esto localmente instalando la versión anterior de ndk esperada:

sdkmanager 'ndk;20.0.5594570'

Sin embargo, mi pregunta es: ¿dónde y cómo se especifica esta versión anterior? ¿Y cómo lo actualizo para que coincida con la última versión 21.0.6113669?


10
Y la compilación también falla en Github CI.
KYHSGeekCode

lo mismo para mi. Y si instalo ese ndk, o especifico su ubicación, la aplicación se
bloquea debido a UnsatisfiedLinkError

1
Actualmente github ci ahora funciona nuevamente para mi proyecto: github.com/KYHSGeekCode/Android-Disassembler/blob/…
KYHSGeekCode

Y también falla en Circle CI.
HX_unbanned

Respuestas:


29

Opción 1:

Simplemente puede seleccionar su NDK instalado localmente en el cuadro de diálogo Estructura del proyecto

Puede abrir el cuadro de diálogo Estructura del proyecto haciendo clic File > Project Structure...o presionando las teclas de acceso rápido CTRL + ALT + SHIFT + S(en Windows)

Una vez que el cuadro de diálogo Estructura del proyecto esté abierto, vaya a Ubicación del SDK y seleccione su versión de NDK instalada localmente en Ubicación de Android NDK . Por lo general, esto se instala en algún lugar de su carpeta de usuario, \AppData\Local\Android\Sdk\ndk\%ndk version%al menos para Windows.

Captura de pantalla del cuadro de diálogo Estructura del proyecto : de Android Studio 3.6 Build # AI-192.7142.36.36.6200805, construido el 12 de febrero de 2020

Opcion 2:

Hacer la opción 1 editará su local.propertiesarchivo por usted y funcionará en la mayoría de los casos. Pero si desea utilizar una versión NDK consistente en todas las máquinas con las que construye el proyecto, de acuerdo con esta guía oficial , puede configurarlo desde el script de gradle del módulo. Simplemente agregue el bloque ndkVersionde script de gradle de su módulo de esta android{}manera.

android {
    ndkVersion "major.minor.build"
}

reemplazando la cadena entre comillas dobles con la versión NDK que desea usar

Opcion 3:

Si desea que todos los proyectos construidos en una máquina en particular utilicen la misma versión de NDK, también puede establecer ANDROID_NDK_HOMEuna variable de entorno con la ruta a la carpeta NDK.


1
¿Qué sucede si quiero usar la última versión de ndk usando la Opción 2?
KYHSGeekCode

@KYHSGeekCode puede reemplazar la cadena entre las comillas dobles con la versión NDK que desea usar. Asegúrese de tener instalada esa versión en particular.
Subaru Tashiro

55
Quiero decir, ¿puedo usar la última versión (sin especificar manualmente) ?, usando algo como$NDK_LATEST_VERSION
KYHSGeekCode

20

Me encuentro con esto también

Ninguna versión de NDK coincide con la versión solicitada 20.0.5594570. Versiones disponibles localmente: 21.0.6113669

Opción 1:

¡Simplemente puede seleccionar su NDK instalado localmente en el cuadro de diálogo Estructura del proyecto ! ingrese la descripción de la imagen aquí

Pero solo es válido para compilaciones locales, y necesito una solución para CI

Opcion 2:

Solo funciona cuando lo especifica en cada módulo usado

android {
    compileSdkVersion 28
    ndkVersion "21.0.6113669"
    ...
}

Aquí parece que no funciona https://github.com/hannesa2/panoramagl/pull/17/checks con este cambio https://github.com/hannesa2/panoramagl/pull/17/files#diff-cff4e8c294a5dc5e76308662ae1ddcacR6-R7

Opcion 3:

export ANDROID_NDK_HOME=/Users/{my-user}/Development/adt/sdk/ndk/21.0.6113669

funciona tambien!


¿Qué quieres decir con que la opción 2 no funciona en absoluto? ¿Qué problema te encuentras con ese enfoque? ¿Has echado un vistazo al final de esta página? developer.android.com/studio/projects/…
Subaru Tashiro

@SubaruTashiro Mira, parece que no funciona github.com/marianmoldovan/panoramagl/pull/17/… con este cambio github.com/marianmoldovan/panoramagl/pull/17/… o no sé por qué
hannes ach

Extraño. Puedo ver en sus confirmaciones que especificó, 21.0.6113669pero los registros de compilación dicen que la versión solicitada es 20.0.5594570. ¿Puedes buscar un ndk_locator_record.jsonarchivo? Ese archivo tiene información sobre cómo resolvió la versión ndk solicitada.
Subaru Tashiro

@SubaruTashiro Lo busco y no existe tal archivo. Mira, lo busqué en el paso "Buscar ndk_locator_record.json antes" github.com/hannesa2/panoramagl/pull/17/…
hannes ach

La opción 3 es ideal para herramientas de automatización, ¡gracias!
Violet Giraffe

14

Tengo el mismo problema. Lo resolví a través del administrador de SDK en Herramientas de SDK, haga clic Show Package Detailsy luego desplácese bajo NDK (lado a lado) y marque y aplique la versión que necesita. Ver imagen a continuación:

Enlace de imagen a las herramientas de SDK para instalar la versión NDK

Mi pregunta para cualquiera es, ¿por qué necesitamos esto ahora para proyectos que no requieren el NDK? ¡Resulta que el NDK es un requisito preexistente en el proyecto en el que trabajo para una dependencia!


2

Cambie su versión de classpath a 3.5.0 dentro de su build.gradle, nivel de proyecto.

dependencies {
        classpath 'com.android.tools.build:gradle:3.5.0'
}

Tengo el mismo problema y se resolvió.


3
Bueno, en realidad no es una solución, sino una solución alternativa en el mejor de los casos. Ya mencioné que el error comenzó a ocurrir al actualizar a 3.6.0(o más tarde). Por cierto, no necesita rebajar a 3.5.0. La versión 3.5.3funciona bien también.
Friederbluemle

2

Tuve el mismo problema, después de un tiempo encontré una solución temporal. renombrar ndkcarpeta a ndk-bundle. en sus proyectos, vaya al local.propertiesarchivo y agregue esta línea antes sdk.dir:

ndk.dir=<path to your ndk folder>

es mio:

ndk.dir=G\:\\SDK\\ndk-bundle
sdk.dir=G\:\\SDK

espero te ayude


Agradable. Esto funciona. ¿Sabe de alguna manera que el sistema de compilación podría generar esta línea automáticamente como ya puede para la opción sdk.dir?
Nicolas Dusart

También puede especificar la ruta a la carpeta ndk, en lugar de cambiar el nombre. la cuerda ndk.dir=G\:\\...\\Sdk\\ndk\\21.0.6113669me funcionó.
Artem Mostyaev

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.