android studio - Android स्टूडियो में JNA की स्थापना




android-studio jar (2)

मुझे पुस्तकालय जिथूब रेपो में एक फ़ाइल में यह टिप्पणी मिली - " यदि आप Google के ग्रहण प्लगइन का उपयोग कर रहे हैं तो आपको मैन्युअल रूप से libjnidispatch.so jna.jar / lib / armeabi से निकालना होगा और इसे अपने प्रोजेक्ट की लिब्स / अरमेबी निर्देशिका में जोड़ना होगा। "

चूंकि यह फ़ाइल 2012 में बनाई गई थी और एंड्रॉइड स्टूडियो बहुत ही प्रारंभिक चरण में था और उस समय तक सुपर लोकप्रिय नहीं था, मुझे लगता है कि यह ग्रहण और एंड्रॉइड स्टूडियो के लिए एक वैध नोट हो सकता है मेरा सुझाव है कि आप इसे प्रयास करें

मैं अपनी परियोजना में jna.jar आयात करने की कोशिश करता हूं क्योंकि जेएनआई मूल पुस्तकालय को कॉल करने के लिए बहुत उपयोगी उपकरण है जो जेएनआई पर आधारित है।

ओएस: विंडोज़ 10

आईडीई: एंड्रॉइड स्टूडियो 1.5.1

जेडीके: 1.8.0_73

एनडीके: आर 010

मैंने जो किया है (एएस = एंड्रॉइड स्टूडियो)

  1. एपीआई के साथ एसएएस द्वारा एक नई परियोजना बनाएं
  2. अपने गीथहब से jna.jar डाउनलोड करें

    https://github.com/java-native-access/jna

  3. प्रोजेक्ट फ़ोल्डर में कॉपी jna.jar

    JNATest \ एप्लिकेशन \ libs \ jna.jar

  4. एएस में, jna.jar के आइकन पर राइट-क्लिक करें, लाइब्रेरी के रूप में जोड़ें चुनें
  5. कुछ सेकंड के लिए प्रतीक्षा करें, फ़ाइल-> परियोजना संरचना-> ऐप-> निर्भरता देखें। हमारे पास jna.jar है (ऐप \ build.gradle के समान) बिल्ड ग्रेडेल
  6. जेएनए में मुख्य गतिविधि के बारे में जावा कोड लागू करें
  7. असली डिवाइस पर सोनी एपी 3 (हाथ) चलाएं
  8. क्रैश CLibrary.Instance.printf("Hello, JNA");

Android मॉनिटर पर त्रुटि संदेश

E/AndroidRuntime: FATAL EXCEPTION: main
                   Process: i3d.jnatest, PID: 1068
                   java.lang.UnsatisfiedLinkError: Native library (com/sun/jna/android-arm/libjnidispatch.so) not found in resource path (.)
                     at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:866)
                     at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:826)
                     at com.sun.jna.Native.<clinit>(Native.java:140)
..
... so on

जावा कोड

package i3d.jnatest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.sun.jna.Library;
import com.sun.jna.Native;

    public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        CLibrary.Instance.printf("Hello, JNA");
    }

    public interface  CLibrary extends Library
    {
        CLibrary Instance = (CLibrary) Native.loadLibrary("msvcrt", CLibrary.class);
        void printf(String format, Object... args);
    }
}

सवाल

त्रुटि संदेश के अनुसार, मुझे याद आती है /android-arm/libjnidispatch.so रनटाइम में।

  1. क्या मैंने jna.jar के लिए गलत जगह डाली?
  2. मुझे और /android-arm/libjnidispatch.so उपयोग कैसे करना चाहिए?

मैं एंड्रॉइड स्टूडियो के बारे में एक नौसिखिया हूं, इसलिए कुछ महत्वपूर्ण बिंदुओं को गलत समझना कृपया मुझे एक संकेत देने के लिए बेझिझक, धन्यवाद।


निम्न निर्देशिका में .so फ़ाइल डाल (एंड्रॉइड स्टूडियो का उपयोग करते समय): अपने yourproject\app\src\main\jniLibs\armeabi-v7a\libjnidispatch.so





jna