El soporte de NDK es una característica experimental y todos los casos de uso aún no son compatibles con el error en Android Studio?
Quiero integrar NDK en el estudio de Android, pero me enfrento a soporte de NDK es una característica experimental y los casos de uso aún no son compatibles con error.He descargado NDK usando el gestor de SDK y el NDK es palced C: \ Users \ The \ AppData \ Local \ Android \ Sdk \ ndk-bundle. También he creado NativePanorama java clase para Java y C + + interacción. Aquí está el código para la clase NativePanorama.java
public class NativePanorama { public native static void processPanorama(long[] imageAddressArray, long outputAddress); { } }
Utilicé el comando javah en el terminal para crear el encabezado C ++ correspondiente para el método processPanorama en la clase java de NativePanorama. Aquí está el archivo de cabecera creado con_example_the_myapplication_NativePanorama.h c ++.
- Anular la funcionalidad del botón de retroceso del hardware de Android
- Botón My-Location de GoogleMaps v2 Android, no se muestra
- ArrayList <HashMap <String, String >> a String
- ¿Cómo evito que Android Studio colapse automáticamente mis paquetes en la navegación de proyectos?
- Sip Error mientras se registra
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_example_the_myapplication_NativePanorama */ #ifndef _Included_com_example_the_myapplication_NativePanorama #define _Included_com_example_the_myapplication_NativePanorama #ifdef __cplusplus extern "C" { #endif /* * Class: com_example_the_myapplication_NativePanorama * Method: processPanorama * Signature: ([JJ)V */ JNIEXPORT void JNICALL Java_com_example_the_myapplication_NativePanorama_processPanorama (JNIEnv *, jclass, jlongArray, jlong); #ifdef __cplusplus } #endif #endif
Aquí también está el archivo fuente com_example_the_myapplication_NativePanorama.cpp c ++.
#include "com_example_panorama_NativePanorama.h" JNIEXPORT void JNICALL Java_com_example_panorama_NativePanorama_processPanorama (JNIEnv * env, jclass clazz, jlongArray imageAddressArray, jlong outputAddress){ }
Puede ser el error está en el archivo build.gradle aquí es mi archivo build.gradle (app)
import org.apache.tools.ant.taskdefs.condition.Os apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.example.the.myapplication" minSdkVersion 19 targetSdkVersion 23 versionCode 1 versionName "1.0" } // begin NDK OPENCV sourceSets.main { jni.srcDirs = [] //disable automatic ndk-build call } task ndkBuild(type: Exec, description: 'Compile JNI source via NDK') { def rootDir = project.rootDir def localProperties = new File(rootDir, "local.properties") Properties properties = new Properties() localProperties.withInputStream { instr -> properties.load(instr) } def ndkDir = properties.getProperty('ndk.dir') if (Os.isFamily(Os.FAMILY_WINDOWS)) { commandLine "$ndkDir\\ndk-build.cmd", 'NDK_PROJECT_PATH=build/intermediates/ndk', 'NDK_LIBS_OUT=src/main/jniLibs', 'APP_BUILD_SCRIPT=src/main/jni/Android.mk', 'NDK_APPLICATION_MK=src/main/jni/Application.mk' } else { commandLine "$ndkDir/ndk-build", 'NDK_PROJECT_PATH=build/intermediates/ndk', 'NDK_LIBS_OUT=src/main/jniLibs', 'APP_BUILD_SCRIPT=src/main/jni/Android.mk', 'NDK_APPLICATION_MK=src/main/jni/Application.mk' } } tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn ndkBuild } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' compile project(":opencv-java") }
También hay una declaración de método nativo de informes en java donde no se encuentra una función jni correspondiente en el error de proyecto en la clase NativePanorama.java.
¿Cómo puedo solucionar los problemas?
- ¿Qué significa "W / AudioFlinger (34): escritura bloqueada por 70 ms, 2236 escrituras retrasadas, hilo"?
- Tipo de retorno flexible
- Cómo crear savedInstanceState para la imagen seleccionada dinámicamente en Android?
- ¿Hay algún tipo de dato de diccionario en android?
- Cómo mezclar realmente una baraja de cartas
- CircleCI Android No soportado major.minor versión 52.0
- Compruebe si la actividad se ha iniciado en el servicio
- Software de reconocimiento de voz Open Source en Java
Aquí está la solución:
Actualice su Android Studio a la última versión oa la última versión pública de pre-lanzamiento.
Android Studio 2.2.1 es actualmente la última versión y tiene soporte de C ++ adecuado construir pulg Ellos todavía están trabajando en él y algunas cosas todavía pueden ser sin soporte, pero el uso de C + + es sin duda trabajar mejor en una versión más reciente. Por supuesto también asegúrese de mantener su SDK de Android actualizado.