मेरे पास एक मूल गतिविधि वाला एंड्रॉइड प्रोजेक्ट है। यह मूल गतिविधि प्रारंभ करने के लिए "मुख्य" (libmain.so फ़ाइल) नामक एक साझा लाइब्रेरी का उपयोग करती है। (एनएनडी/नमूने/देशी गतिविधि के कोड के साथ)देशी गतिविधि में साझा लाइब्रेरी का उपयोग कैसे करें
यह ऐप ठीक काम करता है।
"मुख्य" मॉड्यूल Android.mk फ़ाइल:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := main
LOCAL_SRC_FILES := main.cpp
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM
LOCAL_STATIC_LIBRARIES := android_native_app_glue game
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)
अब मैं एक और साझा लाइब्रेरी (उदाहरण के लिए एक खेल इंजन) द्वारा "मुख्य" पुस्तकालय इस्तेमाल किया जोड़ना चाहते हैं। मैंने एक "गेम" मॉड्यूल बनाया है (libgame.so)।
लेकिन जब मैं "मुख्य" लिंक "खेल" के साथ, इस तरह: कोड के साथ कोई बदलाव नहीं
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := main
LOCAL_SRC_FILES := main.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../game
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM
LOCAL_LDLIBS += $(LOCAL_PATH)/../../libs/$(TARGET_ARCH_ABI)/libgame.so
LOCAL_STATIC_LIBRARIES := android_native_app_glue game
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)
!
एप्लिकेशन अब शुरू नहीं करता है और मैं Logcat में यह त्रुटि है:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mycompany.myproject/android.app.NativeActivity}: java.lang.IllegalArgumentException: Unable to load native library: /data/data/com.mycompany.myproject/lib/libmain.so
यह दुर्घटना एक साझा लाइब्रेरी में लिंक जोड़ने की वजह से है ...
क्यों एक साझा लाइब्रेरी में जोड़ने बनाने ऐप लोड नहीं हो रहा है (दुर्घटना)?
मैं मूल एंड्रॉइड प्रोजेक्ट (नो-जावा/मूल-गतिविधि) में साझा लाइब्रेरी का उपयोग कैसे कर सकता हूं?
(मुझे लगता है कि यह संभव हो सकता है ... अन्यथा मूल गतिविधि काफी सीमित है ...)
धन्यवाद! :)
धन्यवाद! लेकिन, क्या आप निश्चित हैं? क्या आपने पहले ही यह कोशिश की है? मैंने कोशिश की है और ऑर्डर बदल रहा है ... समस्या एक ही है (क्रैश) [http://pastie.org/3308037 ](http://pastie.org/3308037) – Gaetan
मुझे एक ही समस्या है आप। यह ठीक नहीं हुआ। – Halsafar
हां, मेरा जवाब गलत था। इसे एक बग के रूप में माना जाता है: http://code.google.com/p/android/issues/detail?id=28329 सरल वर्कअराउंड खाली गतिविधि के साथ मूल गतिविधि सक्रिय होगी जिसमें केवल System.loadLibrary() सभी आवश्यक पुस्तकालयों को लोड करने के लिए कॉल करता है । –