NDK'yı Android stüdyosuna entegre etmek istiyorum ancak NDK desteği ile karşı karşıya olduğum bir deneysel özellik ve kullanım durumları henüz desteklenmiyor. SDK yöneticisini kullanarak NDK'yı indirdim ve NDK C: \ Users \ palced \ AppData \ Local \ Android \ SDK \ ndk-demeti. Java ve C++ etkileşimi için NativePanorama java sınıfını da oluşturdum. Burada NativePanorama Java sınıfı içine processPanorama yöntem gelen C++ başlığını yaratmak için, terminal olarak javah komutu kullanılır NativePanorama.java sınıfıNDK desteği, deneysel bir özelliktir ve Android Studio'da tüm kullanım durumları henüz desteklenmeyen bir hata değildir.
public class NativePanorama {
public native static void processPanorama(long[] imageAddressArray,
long outputAddress);
{
}
}
kodudur. İşte yaratılan com_example_the_myapplication_NativePanorama.h C++ başlık dosyası. İşte
/* 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
da com_example_the_myapplication_NativePanorama.cpp C++ kaynak dosyasıdır.
#include "com_example_panorama_NativePanorama.h"
JNIEXPORT void JNICALL
Java_com_example_panorama_NativePanorama_processPanorama
(JNIEnv * env, jclass clazz, jlongArray imageAddressArray, jlong
outputAddress){
}
hata benim build.gradle (uygulama) dosyası olduğunu burada build.gradle dosyasında olduğunu olabilir
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")
}
da hiçbir karşılık gelen jni fonksiyonudur java yerli yöntem beyanı var Raporları edilir NativePanorama.java sınıfında proje hatası bulundu.
Bu sorunu nasıl düzeltebilirim? ya en son sürümü veya son kamu yayın öncesi sürümüne
Güncelleme Android Studio:
Bize hangi hataları aldığınızı anlatamıyor musunuz? Ve hangi Android Studio sürümü üzerindesiniz? –
NDK desteğinin bir deneme niteliğindeki iki hatası vardır ve tüm kullanım durumları henüz .cpp ve .h dosyalarında desteklenmez ve ikincisi ise projede karşılık gelen bir jni işlevinin bulunmadığı java'daki yerel yöntem bildirimidir. NativePanorama.java sınıfında. Android Studio sürüm 2.1.3 kullanıyorum – Yirga
Ben 2.2.x için güncelleştirmek gerektiğini düşünüyorum http://tools.android.com/recent Paralel yüklemek istikrarlı, ve beta sürümleri gerekiyorsa, ihtiyacınız varsa 2,2 NDK destekli olarak ilan edilir inşa etmek. –