2016-10-16 9 views
7

मैं एंड्रॉइड स्टूडियो में एनडीके को एकीकृत करना चाहता हूं लेकिन मुझे सामना करना पड़ रहा है एनडीके समर्थन एक प्रयोगात्मक सुविधा है और उपयोग के मामलों में अभी तक त्रुटि समर्थित नहीं है। मैंने एसडीके प्रबंधक का उपयोग करके एनडीके डाउनलोड किया है और एनडीके सी: \ उपयोगकर्ता \ \ 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 स्टूडियो करने के लिए या तो नवीनतम संस्करण या नवीनतम सार्वजनिक पूर्व-रिलीज़ संस्करण के लिए:

+0

नहीं देख सकता कि आप हमें कहां बताते हैं कि आपको कौन सी त्रुटियां मिल रही हैं? और एंड्रॉइड स्टूडियो का कौन सा संस्करण आप पर हैं? –

+0

एनडीके समर्थन एक दो प्रयोगकर्ता विशेषताएं हैं और सभी उपयोग मामलों को अभी तक .cpp और .h फ़ाइलों में समर्थित नहीं है और दूसरा जावा में मूल विधि घोषणा रिपोर्ट करता है जहां परियोजना में कोई संबंधित jni फ़ंक्शन नहीं मिलता है NativePanorama.java वर्ग में। मैं एंड्रॉइड स्टूडियो संस्करण 2.1.3 – Yirga

+1

का उपयोग कर रहा हूं, मुझे लगता है कि आपको 2.2.x http://tools.android.com/recent पर अपडेट करना चाहिए, यदि आप 2.2 की आवश्यकता है तो आप स्थिर, और बीटा संस्करणों को समानांतर स्थापित कर सकते हैं, जिसे एनडीके का समर्थन करने के रूप में विज्ञापित किया जाता है निर्माण। –

उत्तर

7

यहाँ समाधान है।

एंड्रॉइड स्टूडियो 2.2.1 वर्तमान में नवीनतम संस्करण है और इसमें उचित सी ++ समर्थन निर्माण है। वे अभी भी इस पर काम कर रहे हैं और कुछ चीजें अभी भी असमर्थित हो सकती हैं, लेकिन सी ++ का उपयोग निश्चित रूप से एक नए संस्करण पर बेहतर काम कर रहा है। यह भी सुनिश्चित करें कि अपने एंड्रॉइड एसडीके को अद्यतित रखना सुनिश्चित करें।

संबंधित मुद्दे