আমি অন্য একটি অ্যান্ড্রয়েড প্রকল্প থেকে একটি বিদ্যমান নেটিভ লাইব্রেরিটি ব্যবহার করতে চাই , তাই আমি কেবলমাত্র আমার নতুন অ্যান্ড্রয়েড প্রকল্পে এনডিকে নির্মিত লাইব্রেরি ( libcalculate.so ) অনুলিপি করেছি। আমার নতুন অ্যান্ড্রয়েড প্রকল্পে আমি একটি ফোল্ডার তৈরি করেছি libs/armeabi/
এবং সেখানে libcalculate.so রেখেছি । নেই কোন jni / ফোল্ডার। আমার পরীক্ষার ডিভাইসে এআরএম আর্কিটেকচার রয়েছে।
আমার জাভা কোডগুলিতে আমি লাইব্রেরিটি লোড করেছি:
static{
System.loadLibrary("calculate");
}
আমি যখন আমার নতুন অ্যান্ড্রয়েড প্রকল্পটি চালাচ্ছি তখন আমার ত্রুটি হয়েছিল:
java.lang.UnsatisfiedLinkError: ...
nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libcalculate.so"
সুতরাং, ত্রুটি হিসাবে যেমন বলা হয়েছে, অনুলিপি নেটিভ লাইব্রেরিটি / রায় / লিব বা / সিস্টেম / লাইব নয়, আমার ক্ষেত্রে এই সমস্যাটি কীভাবে সমাধান করবেন?
(আমি apk প্যাকেজটি আনজিপ করেছি, lib এর অধীনে / সেখানে libcalculate.so রয়েছে)
==== আপডেট =====
আমি প্রকল্পের মূলের অধীনে একটি জনি / ফোল্ডার তৈরি করার চেষ্টা করেছি এবং 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)
তারপরে, প্রকল্পের মূলের অধীনে, আমি এনডিকে-বিল্ড সম্পাদন করেছি। এর পরে, আরডিবি / এবং আরমেবি-ভি 7 এ / ডিরেক্টরিগুলি এনডিকে-বিল্ড দ্বারা উত্পাদিত হয় (ফোল্ডারের অভ্যন্তরে 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/
? আপনার সম্ভবত লক্ষ্য ABI- র প্রতি একটি উপ-ডিরেক্টরি তৈরি করতে হবে যা আপনি সমর্থন করতে চান (আরমেবি, আরমেবি-ভি 7 এ, x86, মিপস, ইত্যাদি) এবং প্রতিটি উপ-ডিরেক্টরিতে যথাযথ .so ফাইল স্থাপন করতে হবে (অর্থাত্ আরমেবির জন্য নির্মিত .so ফাইলটি প্রবেশ করেlibs/armeabi/
, ইত্যাদি)।