मैं एंड्रॉइड स्टूडियो में एनडीके को एकीकृत करना चाहता हूं लेकिन मुझे सामना करना पड़ रहा है एनडीके समर्थन एक प्रयोगात्मक सुविधा है और उपयोग के मामलों में अभी तक त्रुटि समर्थित नहीं है। मैंने एसडीके प्रबंधक का उपयोग करके एनडीके डाउनलोड किया है और एनडीके सी: \ उपयोगकर्ता \ \ AppData \ Local \ एंड्रॉयड \ Sdk \ NDK-बंडल। मैंने जावा और सी ++ इंटरैक्शन के लिए मूल पैनोरमा जावा क्लास भी बनाया है। यहाँ NativePanorama.java वर्गएनडीके समर्थन एक प्रयोगात्मक विशेषताएं है और सभी उपयोग मामलों को अभी तक एंड्रॉइड स्टूडियो में त्रुटि समर्थित नहीं है?
public class NativePanorama {
public native static void processPanorama(long[] imageAddressArray,
long outputAddress);
{
}
}
मैं टर्मिनल में javah आदेश इस्तेमाल किया NativePanorama जावा वर्ग में processPanorama विधि के लिए इसी सी ++ हेडर बनाने के लिए के लिए कोड है। यहां बनाई गई 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 (ऐप्लिकेशन) फ़ाइल है
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")
}
वहाँ भी जावा कोई इसी JNI समारोह है जहां में देशी विधि घोषणा रिपोर्ट है NativePanorama.java कक्षा में प्रोजेक्ट त्रुटि में पाया गया।
मैं उन समस्याओं को कैसे ठीक कर सकता हूं?
अद्यतन अपने Android स्टूडियो करने के लिए या तो नवीनतम संस्करण या नवीनतम सार्वजनिक पूर्व-रिलीज़ संस्करण के लिए:
नहीं देख सकता कि आप हमें कहां बताते हैं कि आपको कौन सी त्रुटियां मिल रही हैं? और एंड्रॉइड स्टूडियो का कौन सा संस्करण आप पर हैं? –
एनडीके समर्थन एक दो प्रयोगकर्ता विशेषताएं हैं और सभी उपयोग मामलों को अभी तक .cpp और .h फ़ाइलों में समर्थित नहीं है और दूसरा जावा में मूल विधि घोषणा रिपोर्ट करता है जहां परियोजना में कोई संबंधित jni फ़ंक्शन नहीं मिलता है NativePanorama.java वर्ग में। मैं एंड्रॉइड स्टूडियो संस्करण 2.1.3 – Yirga
का उपयोग कर रहा हूं, मुझे लगता है कि आपको 2.2.x http://tools.android.com/recent पर अपडेट करना चाहिए, यदि आप 2.2 की आवश्यकता है तो आप स्थिर, और बीटा संस्करणों को समानांतर स्थापित कर सकते हैं, जिसे एनडीके का समर्थन करने के रूप में विज्ञापित किया जाता है निर्माण। –