मैं एक अन्य एंड्रॉइड प्रोजेक्ट से एक मौजूदा देशी लाइब्रेरी का उपयोग करना चाहता हूं , इसलिए मैंने अपने नए एंड्रॉइड प्रोजेक्ट में सिर्फ NDK निर्मित लाइब्रेरी ( libcalculate.so ) की प्रतिलिपि बनाई । अपने नए एंड्रॉइड प्रोजेक्ट में मैंने एक फ़ोल्डर बनाया libs/armeabi/
और वहां libcalculate.so डाला । नहीं है कोई JNI / फ़ोल्डर। मेरे परीक्षण उपकरण में ARM आर्किटेक्चर है।
मेरे जावा कोड में मैं पुस्तकालय को लोड करता हूं:
static{
System.loadLibrary("calculate");
}
जब मैं अपना नया एंड्रॉइड प्रोजेक्ट चलाता हूं, तो मुझे त्रुटि मिली:
java.lang.UnsatisfiedLinkError: ...
nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libcalculate.so"
इसलिए, जैसा कि त्रुटि कहती है, कॉपी की गई मूल लाइब्रेरी / वर्डॉर / लिब या / सिस्टम / लिब में नहीं है, मेरे मामले में इस समस्या को कैसे हल किया जाए?
(मैं एपीके पैकेज को अनज़िप कर दिया, लिब के तहत / लिबाकुलकेट है। एसो)
==== अद्यतन =====
मैंने प्रोजेक्ट रूट के तहत एक jni / folder बनाने की भी कोशिश की, और jni / के तहत एक Android.mk फ़ाइल जोड़ें। Android.mk की सामग्री है:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libcalculate
LOCAL_SRC_FILES := libcalculate.so
include $(PREBUILT_SHARED_LIBRARY)
फिर, प्रोजेक्ट रूट के तहत, मैंने ndk-build निष्पादित किया। उसके बाद, armeabi / armeabi-v7a / निर्देशिका ndk-build (फ़ोल्डर के अंदर libcalculate.so के साथ) द्वारा उत्पन्न की जाती हैं।
फिर मैं अपने मावेन को सफलतापूर्वक परियोजना का निर्माण करता हूं। अंतिम एपीके पैकेज में, निम्न हैं:
lib/armeabi/libcalculate.so
lib/armeabi-v7a/libcalculate.so
लेकिन जब मैं अपना ऐप चलाता हूं, तो वही त्रुटि:
java.lang.UnsatisfiedLinkError: ...
nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libcalculate.so"
libs/
? आपको संभवतः प्रति एबीबी एक उपनिर्देशिका बनाने की आवश्यकता है जिसे आप (armeabi, armeabi-v7a, x86, mips, आदि) का समर्थन करना चाहते हैं और प्रत्येकlibs/armeabi/
। आदि)।