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


Gradle NDK para especificar una directiva 'include' en Android.mk generado

Cuando tengas

android { defaultConfig { ndk { moduleName "yourlib" stl "stlport_static" ldLibs "log", "z", "m" cFlags "-I/some/include/dir/" } ... } ... } 

En su build.gradle entonces Gradle compilará los archivos en src / main / jni / y generará un Android.mk en build / ndk / debug / Android.mk.

Sin embargo, en mi caso, estoy tratando de compilar algunos archivos C ++ compilados contra OpenCV.

Tengo esto funcionando cuando creo manualmente el archivo Android.mk y ejecuto el comando ndk-build. Pero quiero hacerlo a través de Gradle / Android Studio automáticamente.

Al hacer esto manualmente, incluyo las bibliotecas para vincularlas. Hago esto, en el Android.mk creado manualmente, con la línea:

 include /path/to/the/opencv/directory/sdk/native/jni/OpenCV.mk 

Sin embargo, en el complemento Gradle de Android, no estoy seguro de cómo añadir esta directiva 'include' en el archivo Android.mk generado.

¿Puede alguien apuntarme en la dirección correcta de Gradle-directiva para agregar esta línea al archivo de generar? Gracias.

  • Android OpenCV - detectar curvas de Houghlines
  • OpenCV: detección de puntos / discos circulares de dominó
  • Compilación de la biblioteca de Android-OpenCV con Cygwin
  • Detección de objetos para android con tesseract o OpenCV
  • Tamaños de imagen compatibles con webcam
  • Eclipse da error al usar GaussianBlur con OpenCV para Android
  • JavaCV + Android Studio + gradle- posible?
  • Devolver objeto Mat desde código nativo a java en OpenCV
  • One Solution collect form web for “Gradle NDK para especificar una directiva 'include' en Android.mk generado”

    He descubierto que el proceso de compilación tirará de todo debajo de la carpeta ./src/main/jni. Por lo tanto, he colocado enlaces simbólicos allí para incluir y las carpetas src en otro lugar – los archivos src se enumerarán en el archivo .mk por el proceso de construcción y los archivos inc serán recogidos por el compilador. Tal vez es un poco hacky:

     android { defaultConfig { ndk { moduleName "yourlib" cFlags "-std=c99 -I${project.buildDir}/../src/main/jni/inc" } ... } ... } 

    También tengo cFlags diferentes dependiendo de la compilación de depuración. Esto parece ser gradle válido, pero no quiere construir con android-studio. Se construirá con el comando gradlew tho:

     android { defaultConfig { ndk { moduleName "yourlib" cFlags "-std=c99 -I${project.buildDir}/../src/main/jni/inc" } ... } ... buildTypes { release { debuggable false jniDebugBuild false ndk { moduleName "yourlib" } } debug { debuggable true jniDebugBuild true ndk { moduleName "yourlib" ldLibs "log" cFlags "-g -D_DEBUG" } } } } 

    Espero que pueda ayudarte (android-studio 0.8.6).

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.