2011-10-28 13 views
7

के साथ एपीके में प्रीबिल्ट साझा पुस्तकालयों को कैसे शामिल करें, मेरे पास एक साझा लाइब्रेरी libfoo.so है और इसे मेरे एंड्रॉइड ऐप में उपयोग करने की आवश्यकता है।eclipse

मेरे पहली कोशिश Android.mk में है करने के लिए किया गया था:

include $(CLEAR_VARS) 
LOCAL_MODULE := test 
LOCAL_SRC_FILES := test.cpp 
LOCAL_LDLIBS := -L$(PATH_TO_FOO) -lfoo 
include $(BUILD_SHARED_LIBRARY) 

मेरी गतिविधि में, मेरे पास है:

statis 
{ 
    System.loadLibrary("foo"); 
} 

यह सही ढंग से बनाता है, फिर भी मैंने देखा है कि बनाया apk does not को libfoo शामिल हैं। इसलिए (मुझे यह भी लगता है कि यह libs/armeabi में कॉपी नहीं है)। मुझे लगता है कि मेरे ऐप को निष्पादित करते समय मुझे असंतुष्ट लिंक्स त्रुटि है।

मैं कुछ अन्य पोस्ट मैं $ (PREBUILD_SHARED_LIBRARY) जोड़ने की जरूरत है में देखा था, इसलिए मैं अपने Android.mk को निम्नलिखित जोड़ें:

include $(CLEAR_VARS) 
LOCAL_MODULE:= foo 
LOCAL_SRC_FILES := $(FOO_PATH)/libfoo.so 
include $(PREBUILD_SHARED_LIBRARY) 

लेकिन अब मैं निर्माण त्रुटि हो रही है:

foo: LOCAL_SRC_FILES points to a missing file. 

मुझे यकीन है कि पथ सही है। ध्यान दें कि libfoo.so मूल रूप से संस्करण संख्या अंत में था, हालांकि मुझे इसे हटा देना था (और केवल इसलिए छोड़ना) क्योंकि एनएनडी-बिल्ड ने शिकायत की थी।

मैं क्या गलत कर रहा हूं?

उत्तर

5

को शामिल misspelt प्रतीत होता है:

include $(PREBUILD_SHARED_LIBRARY) 

include $(PREBUILT_SHARED_LIBRARY) 
1

ग्रहण में, मैं पथ प्रोजेक्ट/libs/armeabi/में फ़ाइल की प्रतिलिपि बनाकर एक स्थिर लाइब्रेरी जोड़ता हूं और इसे साफ करने के बाद प्रोजेक्ट का पुनर्निर्माण करता हूं। इसमें एपीके में .so शामिल है।

+0

यह मैं हूँ (ADT22, इंडिगो, NDK-R9) के लिए काम नहीं करता है होना चाहिए। निर्माण पर lib हटा दिया जाता है। – WindRider

5

समाधान मिला !! LOCAL_SRC_FILES में पूर्ण या सापेक्ष पथ नहीं हो सकते हैं, बस फ़ाइल नाम। पथ LOCAL_PATH में सेट होना चाहिए।

मेरे मामले में

तो, बजाय:

LOCAL_SRC_FILES := $(FOO_PATH)/libfoo.so 

मैं अब है:

LOCAL_PATH := $(FOO_PATH) 
LOCAL_SRC_FILES := libfoo.so 

और यह ठीक काम करता है।

+0

अरे .. क्या आप इस पर कुछ प्रकाश डाल सकते हैं। मैं एक ही समस्या का सामना कर रहा हूँ। मेरे पास 3 .so फाइलें लोड की जा रही हैं जिन्हें मैं .mk फ़ाइल में लिखूं? –

+2

डाउनवोट। LOCAL_SRC_FILES में निश्चित रूप से सापेक्ष पथ हो सकते हैं। –

+0

हाँ सहमत हैं कि इसके सापेक्ष पथ हो सकते हैं। – pauld