मैं एक बहुत ही सरल Android एप्लिकेशन है जो तीन हिस्से होते हैं विकासशील शुरू कर दिया है:Dalvik '.0' विस्तार के साथ .so फ़ाइल के लिए लग रही है?
- जावा आवेदन ही
- पहले से बने साझा लाइब्रेरी एक और साझा लाइब्रेरी (हम इसे
libfoo
फोन करता हूँ) - कि पहले से बने पुस्तकालय का उपयोग करता है (हम इसे
libfoowrapper
फोन करता हूँ)
फाइल सिस्टम इस तरह दिखता है:
- कोई त्रुटि रिपोर्ट कर रहे हैंLOCAL_PATH := $(call my-dir)
#==============================
include $(CLEAR_VARS)
LOCAL_MODULE := foo-prebuilt
LOCAL_SRC_FILES := libfoo.so
include $(PREBUILT_SHARED_LIBRARY)
#=========================
include $(CLEAR_VARS)
LOCAL_MODULE := foowrapper
LOCAL_SRC_FILES := foowrapper.c
LOCAL_SHARED_LIBRARIES := foo-prebuilt
include $(BUILD_SHARED_LIBRARY)
जब मैं ग्रहण में आवेदन का निर्माण, चीजों को ठीक से काम करने लगते हैं:
jni
Android.mk
libfoo.so
foowrapper.c
Android.mk
फ़ाइल निम्न सामग्री शामिल है। हालांकि, जब मैं अपने सैमसंग डिस्कवर करने के लिए आवेदन अपलोड (चल एंड्रॉयड 4.0.4), मैं लॉग में निम्न त्रुटि मिलती है:
03-05 21:20:27.859: E/AndroidRuntime(20324): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1936]: 102 could not load needed library 'libfoo.so.0' for 'libfoowrapper.so' (load_library[1091]: Library 'libfoo.so.0' not found)
क्यों Dalvik के बजाय एक .so.0
फ़ाइल एक .so
फ़ाइल के लिए लग रही है? इस त्रुटि से छुटकारा पाने के लिए मुझे अपने ऐप में क्या बदलाव करने की ज़रूरत है?
आप कॉपी कैसे आप कर सकते हैं जावा पक्ष में पुस्तकालय लोड कर रहे हैं? आपको सिस्टम निष्पादित करने की आवश्यकता है।सही क्रम में, जावा में एक स्थिर ब्लॉक में loadLibrary ("foo") और System.loadLibrary ("foowrapper")। इसके अलावा, क्या आपने इसे किसी अन्य डिवाइस में आजमाया है? – Esparver
'libfoowrapper.so' जैसे लगता है' libfoo.so.0' का संदर्भ है। जांचें कि 'libfoowrapper.so' किसके साथ जुड़ा हुआ है। – fadden