java NDK支持是一个实验性的特性,所有用例都还不支持。Android Studio中的错误?
我想将NDK集成到Android studio中,但我面临的是NDK支持是一项实验性功能,而且 用例还不受支持。我已经使用SDK管理器下载了NDK,NDK已经发布 C:\Users\The\AppData\Local\Android\Sdk\ndk捆绑包。我还创建了用于java和C++交互的NATEVEPANROMAM java类。这是国家全景的代码。java类
public class NativePanorama {
public native static void processPanorama(long[] imageAddressArray,
long outputAddress);
{
}
}
我使用终端中的JavaH命令为进程脚本创建相应的C++头 NativePanorama java类中的方法。下面是创建的com_示例_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_示例__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){
}
可能是错误在生成中。gradle文件这是我的版本。gradle(应用程序)文件
import org.apache.tools.ant.taskdefs.condition.Os
apply plugin: 'com.安卓.application'
安卓 {
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-安卓.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.安卓.support:appcompat-v7:23.4.0'
compile project(":opencv-java")
}
还有报告称,java中的本机方法声明在NativePanorama中的项目错误中找不到相应的jni函数。java类
我如何解决这些问题
# 1 楼答案
以下是解决方案:
将您的Android Studio更新至最新版本或最新的公开预发布版本
Android Studio2.2.1是目前最新版本,它有适当的C++支持内置。他们还在努力工作,有些东西可能仍然不受支持,但是使用C++在新版本上工作得更好。当然,也要确保你的Android SDK是最新的