2012-02-01 13 views
8

मैंने एक जेएनआई एंड्रॉइड एप्लिकेशन लागू किया है। इस एप्लिकेशन को एपीके के हिस्से के रूप में पैक करने के लिए कुछ अतिरिक्त 'साझा लिब्स' की आवश्यकता है। Ecplise का उपयोग करके, मैंने इन libs को प्रोजेक्ट के '/ libs/armeabi' फ़ोल्डर में जोड़ा है।एंड्रॉइड जेएनआई एपीके पैकिंग

हालांकि, एप्लिकेशन लॉन्च करते समय (एकीकृत डीबगर के माध्यम से), मेरे जोड़े गए 'साझा लिब्स' को 'आर्मेबी' फ़ोल्डर से निकाल दिया जाता है।

  • मैं कैसे निकाले जाने से इन अतिरिक्त libs रोका जा सकता है?
  • मैं कैसे सुनिश्चित कर सकता हूं कि एपीके में अतिरिक्त आवश्यक एसओ पैक किए गए हैं?

उत्तर

9

आपको इस पुस्तकालयों को libs फ़ोल्डर में कॉपी करने की आवश्यकता नहीं है। यह नौकरी ndk-build द्वारा की जानी चाहिए।

ये दो कदम पर्याप्त होना चाहिए:

  1. बनाएं mylibs अपनी परियोजना के रूट स्तर पर फ़ोल्डर (यदि आप किसी अन्य नाम का प्रयोग कर सकते हैं)। और अपने पुस्तकालयों को इस फ़ोल्डर में रखें।

  2. प्रत्येक पुस्तकालय के लिए include $(CLEAR_VARS) बयान के साथ आप लाइब्रेरी नाम mylib की जगह से पहले निम्न पंक्तियां जोड़ें:

    include $(CLEAR_VARS) 
    LOCAL_MODULE:=mylib 
    LOCAL_SRC_FILES:=../mylibs/libmylib.so 
    include $(PREBUILT_SHARED_LIBRARY) 
    

(आप LOCAL_SRC_FILES के लिए थोड़ा अलग पथ आवश्यकता हो सकती है यह अपने ग्रहण विन्यास पर निर्भर करता है।।)

+1

करने के बाद ऊपर से किया, यह क्या मैं निर्माण प्रक्रिया के दौरान मिलता है: ndroid NDK: JNI/Android.mk: swscale: LOCAL_MODULE_FILENAME फ़ाइल एक्सटेंशन एंड्रॉयड NDK शामिल नहीं होना चाहिए: त्रुटि: JNI/Android.mk: swscale: LOCAL_SRC_FILES ".a" – NadavRub

+1

के साथ समाप्त होने वाली फ़ाइल को इंगित करना चाहिए। 'PREBUILT_STATIC_LIBRARY' के बजाय' PREBUILT_SHARED_LIBRARY' होना चाहिए। –

1

इस संदर्भ में जोड़ने के लिए एक और नोट यह है कि बाहरी साझा लाइब का मार्ग jni निर्देशिका (या जो भी @ LOCAL_PATH को स्पिस्फीड किया गया है) के सापेक्ष होना चाहिए, यानी "LOC AL_SRC_FILES: = ../../../Android/ffmpeg/libavcodec/libavcodec.so "काम करेगा जहां पूर्ण पथ नहीं होगा।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^