studio ndk local_c_includes full files configurar application android-studio

android studio - ndk - Error: su proyecto contiene archivos C++ pero no utiliza una compilación nativa compatible



configurar ndk android studio (8)

Error: la ejecución falló para la tarea '': app: compileDebugNdk''.

Error: su proyecto contiene archivos C ++ pero no utiliza un sistema de compilación nativo compatible. Considere utilizar CMake o la integración ndk-build con el complemento estable Gradle de Android:

Screenshot


  1. Asegúrese de haber instalado las dependencias LLDB, CMake y NDK; de lo contrario, seleccione SDK TOOLS en Tools> Android> SDK Manager, marque las casillas correspondientes y haga la solicitud.
  2. tomar el build.gradle en la aplicación y buscar

    sourceSets { main { jni.srcDirs = [''src/main/jni'', ''src/main/jniLBS/''] } }

    y comenta esta linea.


  1. Trabajando en OpenCV Project en Android Studio 3.3.1. Enfrenté el mismo problema y encontré la solución al instalar CMake, LLDB y NDK en Herramientas-> Administrador de SDK -> Android SDK-> Herramientas de SDK.
  2. Agrega lo siguiente a build.gradle (Módulo: aplicación)

    externalNativeBuild { cmake { version "3.12.0" } ndkBuild { path ''build/intermediates/ndk/debug/Android.mk'' } } }


El plugin de Android en estos días muestra una mejor explicación.

* Qué salió mal:

La ejecución falló para la tarea '': app: compileDebugNdk''.
> Error: su proyecto contiene archivos C ++ pero no utiliza un sistema de compilación nativo compatible.
Considere el uso de CMake o la integración ndk-build. Para obtener más información, visite: http://d.android.com/r/studio-ui/add-native-code.html
Alternativamente, puede usar el complemento experimental: https://developer.android.com/studio/build/experimental-plugin.html .

Hay esencialmente dos opciones: utilizar el externalNativeBuild integrado o deshabilitarlo.

  1. El mejor enfoque para la primera opción fue described aquí por .

    No recomendaría el uso del https://developer.android.com/studio/build/experimental-plugin.html estos días, porque creo que la integración ndk-build es mucho más poderosa. Pero los proyectos simples pueden ser más fáciles de mantener con el complemento experimental.

  2. Alternativamente, puede elegir por algún motivo construir las bibliotecas nativas fuera de Android Studio. Para evitar el mensaje de error, conozco tres opciones.

    1. Puede deshabilitar la tarea de gradle: en build.gradle , agregar

      tasks.all { task -> if (task.name.startsWith(''compile'') && task.name.endsWith(''Ndk'')) { task.enabled = false } }

    2. Puede ocultar los archivos cpp de Android Studio, por ejemplo,

      sourceSets { main { jni.srcDirs = [] } }

      El inconveniente de este enfoque es que Android Studio no indexa los archivos cpp.

    3. Otra alternative es agregar android.useDeprecatedNdk=true a gradle.properties . No está claro, sin embargo, cuánto tiempo estará funcionando esta bandera.


Muy importante es eliminar esta línea en build.gradle (Module: app).

sourceSets {main {jni.srcDirs = [''src / main / jni'', ''src / main / jniLibs /'']}}


Nueva solución agrega esto a tu build.gradle (Módulo: aplicación)

externalNativeBuild { cmake { version "3.12.0" } ndkBuild { path ''src/main/jni/Application.mk'' } }


Parece que ya tiene el código C ++ y los Makefiles en el directorio del proyecto, en cuyo caso, simplemente debe vincular Gradle a la biblioteca nativa:

  1. En el panel del proyecto, haga clic con el botón derecho en su módulo y seleccione Vincular proyecto de C ++ con Gradle .
  2. Desde el menú desplegable, seleccione CMake o ndk-build , dependiendo de su proyecto

    a. Si seleccionó CMake , especifique el script CMakeLists.txt en su proyecto

    segundo. Si seleccionó ndk-build , especifique el Android.mk .

Fuente: https://developer.android.com/studio/projects/add-native-code.html#existing-project


Resolví este problema de esta manera. En primer lugar, no haga ningún espacio en blanco en el Directorio de proyectos. Luego edita el build.gradle (Módulo: aplicación) y agrega esas líneas como yo.

buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro'' } } sourceSets { main { jni.srcDirs = [''src/main/jni/'',''src/main/jniLibs/''] } } externalNativeBuild { ndkBuild { path ''build/intermediates/ndk/debug/Android.mk'' } }


Simplemente agregue android.useDeprecatedNdk=true al archivo gradle.properties.