Java — поддержка NDK является экспериментальной функцией, и все варианты использования еще не поддерживаются ошибки в Android Studio?

Я хочу интегрировать NDK в Android-студию, но я столкнулся с тем, что поддержка NDK является экспериментальной функцией и
Случаи использования пока не поддерживаются. Я скачал NDK с помощью менеджера SDK и NDK остановлен
C: \ Users \ The \ AppData \ Local \ Android \ SDK \ НДК-расслоению. Я также создал Java-класс NativePanorama для взаимодействия Java и C ++. Вот код для класса NativePanorama.java

     public class NativePanorama {public native static void processPanorama(long[] imageAddressArray,
long outputAddress);
{

}
}

Я использовал команду javah в терминале, чтобы создать соответствующий заголовок C ++ для processPanorama
метод в Java-классе NativePanorama. Вот созданный заголовочный файл com_example_the_myapplication_NativePanorama.h c ++.

/* 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

Здесь также находится исходный файл 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){
}

Может быть, ошибка в файле build.gradle, вот мой файл 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")
}

В java также есть объявление нативного метода Reports, в котором в ошибке проекта в классе NativePanorama.java не найдено соответствующей функции jni.

Как я могу решить эту проблему?

7

Решение

Вот решение:

Обновите Android Studio до последней версии или до последней общедоступной предварительной версии.

Android Studio 2.2.1 в настоящее время является последней версией и имеет надлежащую встроенную поддержку C ++. Они все еще работают над этим, и некоторые вещи могут все еще не поддерживаться, но использование C ++ определенно лучше работает на более новой версии. Конечно, также убедитесь, что ваш Android SDK обновлен.

7

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector