मैं एंड्रॉइड प्रोजेक्ट में बाहरी जार का उपयोग कैसे कर सकता हूं?


326

मैंने एक Android प्रोजेक्ट बनाया है और अपने प्रोजेक्ट में एक बाहरी JAR (hessian-4.0.1.jar) जोड़ा है। मैंने तब JAR को बिल्ड पाथ में जोड़ा और इसे आर्डर और एक्सपोर्ट में बंद कर दिया।

ऑर्डर और एक्सपोर्ट को नजरअंदाज कर दिया जाता है, और बाहरी JAR से सभी कक्षाएं रनटाइम पर गायब हैं।

क्या ग्रहण प्लगइन का उपयोग करके एंड्रॉइड एप्लिकेशन का निर्माण करते समय बाहरी JAR से आवश्यक कक्षाओं को ठीक से शामिल करने की कोई चाल है? मैं चींटी या मावेन का उपयोग नहीं करना चाहता।


1
जैसा कि आप पहले ही पता लगा चुके हैं: यह हेसियन-4.0.1.jar में निर्भरता के कारण होता है। यदि आप Android के साथ Hessian का उपयोग करना चाहते हैं, तो Hessdroid ( code.google.com/p/hessdroid ) का उपयोग करें । बहुत सक्रिय नहीं है, लेकिन एंड्रॉइड 4.0 पर भी मेरे लिए ठीक काम करता है।
आइस

1
बाहरी जार का उपयोग करते समय एक आम समस्या के लिए "NoClassDefFoundError को एंड्रॉइड पर जावा लाइब्रेरी में कोड के लिए" भी देखें । सरल उपाय
प्रवाह करें

जवाबों:


443

ग्रहण के लिए

अपने Android प्रोजेक्ट या किसी जावा प्रोजेक्ट में बाहरी JAR को जोड़ने का एक अच्छा तरीका है:

  1. libsअपने प्रोजेक्ट के रूट फोल्डर में एक फोल्डर बनाएं
  2. अपनी JAR फ़ाइलों को फ़ोल्डर में कॉपी करेंlibs
  3. अब जार फाइल पर राइट क्लिक करें और फिर बिल्ड पाथ> ऐड टू बिल्ड पाथ चुनें , जो आपके प्रोजेक्ट के भीतर 'रेफरेंस लाइब्रेरी' नामक एक फोल्डर बनाएगा।

    ऐसा करने से, जब भी आप अपनी परियोजना को किसी अन्य कंप्यूटर पर स्थानांतरित करते हैं , तो आप अपने पुस्तकालयों को नहीं खोएंगे , जो आपकी हार्ड ड्राइव पर संदर्भित होते हैं।

Android स्टूडियो के लिए

  1. यदि आप प्रोजेक्ट एक्सप्लोरर में एंड्रॉइड व्यू में हैं, तो इसे नीचे दिए गए प्रोजेक्ट व्यू में बदल दें

लापता छवि

  1. इच्छित मॉड्यूल पर राइट क्लिक करें जहां आप बाहरी लाइब्रेरी जोड़ना चाहते हैं, फिर न्यू> डायरेक्टरो का चयन करें और इसे ' libs ' नाम दें
  2. अब blah_blah.jar को ' libs ' फोल्डर में कॉपी करें
  3. Blah_blah.jar पर राइट क्लिक करें, फिर ' Add as Library .. ' चुनें। यह स्वचालित रूप से build.gradle में संकलित फ़ाइलों ('libs / blah_blah.jar') के रूप में जोड़ देगा और प्रविष्टि को सिंक कर देगा। और आप कर रहे हैं

कृपया ध्यान दें: यदि आप तृतीय पक्ष पुस्तकालयों का उपयोग कर रहे हैं तो ट्रांसएक्टिव निर्भरता का उपयोग करना बेहतर है जहां ग्रेड स्क्रिप्ट स्वचालित रूप से JAR और निर्भरता JAR को डाउनलोड करता है जब ग्रेड स्क्रिप्ट चलती है।

Ex: संकलन 'com.google.android.gms: प्ले-सर्विसेज-विज्ञापन: 9.4.0'

ग्रैडल डिपेंडेंसी मैनजमेंट के बारे में और पढ़ें


49
ध्यान दें कि हाल ही में ग्रहण / एडीटी संस्करणों का उपयोग करते समय बाहरी जार को एक फ़ोल्डर में होना चाहिए जिसे libs(इसके बजाय lib) कहा जाता है
१४'१२

4
@THelper - धन्यवाद! आप सही हैं, फ़ोल्डर का नाम "लिबास" होना चाहिए न कि "लिबास"। मैं इस समस्या पर अपना सिर पीट रहा था।
कैमिल सेविन्ग

7
एसडीके के हाल के संस्करणों में, चरण 3 (JAR को मैन्युअल रूप से बिल्ड पथ में जोड़ना) अनावश्यक है। लेकिन अगर आपके पास एक आईडीई है, जैसे कि जिस समय आप फ़ाइल को छोड़ते हैं, उस समय ग्रहण खुला होता है, आपको एक प्रोजेक्ट रिफ्रेश (F5 और / या संदर्भ मेनू को ताज़ा करना होगा)।
जॉन एडम्स

4
यह कमांड लाइन से कैसे किया जाता है? मुझे कौन सी कॉन्फ़िगरेशन फ़ाइल संपादित करनी चाहिए, और कैसे?
१६:१६ पर क्रिस्टियन स्पैंग्सेज

13
यह दृष्टिकोण 2012 की शुरुआत से पुराना है। बस JAR को इसमें जोड़ें libs/। मैन्युअल रूप से बिल्ड पथ को संशोधित न करें।
कॉमन्सवेयर

127

हां, आप इसका उपयोग कर सकते हैं। यहां कैसे:

  1. आपका प्रोजेक्ट -> राइट क्लिक -> आयात -> फाइल सिस्टम -> yourjar.jar
  2. आपकी परियोजना -> राइट क्लिक -> गुण -> जावा बिल्ड पथ -> पुस्तकालय -> जार जोड़ें -> yourjar.jar

यह वीडियो उस स्थिति में उपयोगी हो सकता है जब आपके पास कुछ समस्याएँ हों।


5
यह दृष्टिकोण 2012 की शुरुआत से पुराना हो गया है। बस JAR को libs / में जोड़ें। मैन्युअल रूप से बिल्ड पथ को संशोधित न करें।
कॉमन्सवेयर

मैंने निर्माण पथ को जोड़ने के विभिन्न तरीकों की कोशिश की। केवल इस तरह से मैं एक परियोजना को दूसरे पीसी पर माइग्रेट करने के बाद नहीं पाया गया क्लास को ठीक कर सकता हूं
मिकी

पहला समाधान पुराना है और अभ्यस्त के रूप में काम करता है।
योषा अलायूब

5

मैं वर्तमान में SDK 20.0.3 का उपयोग कर रहा हूं और पिछले समाधानों में से किसी ने भी मेरे लिए काम नहीं किया है।

हेसड्रॉइड काम करता है जहां हेस विफल हो गया है क्योंकि दो जार फ़ाइलों में जावा होता है जो विभिन्न आभासी मशीनों के लिए संकलित होता है। जावा कंपाइलर द्वारा बनाए गए बाइट कोड को Dalvik वर्चुअल मशीन पर चलने की गारंटी नहीं है। एंड्रॉइड कंपाइलर द्वारा बनाया गया बाइट कोड जावा वर्चुअल मशीन पर चलने की गारंटी नहीं है।

मेरे मामले में मेरे पास स्रोत कोड तक पहुंच थी और मैं यहां बताए गए तरीके का उपयोग करके इसके लिए एक एंड्रॉइड जार फ़ाइल बनाने में सक्षम था: https://stackoverflow.com/a/13144382/545064


5

मुझे पता है कि ओपी अपने प्रश्न को ग्रहण प्लगइन के संदर्भ में समाप्त करता है, लेकिन मैं एक ऐसी खोज के साथ यहां पहुंचा हूं जिसने ग्रहण को निर्दिष्ट नहीं किया है। तो यहाँ Android स्टूडियो के लिए जाता है:

  1. jarLib निर्देशिका में फ़ाइल जोड़ें (जैसे कॉपी / पेस्ट)
  2. jarफ़ाइल पर राइट-क्लिक करें और "लाइब्रेरी के रूप में जोड़ें ..." चुनें
  3. अगले डायलॉग पर "Ok" पर क्लिक करें या यदि आप चुनते हैं तो नाम बदल दिया है।

बस!


4

यह पता चला है कि मैंने अपने स्टैक ट्रेस पर बहुत अच्छा नहीं देखा है, समस्या यह नहीं है कि बाहरी जार शामिल नहीं है।

समस्या यह है कि एंड्रॉइड प्लेटफॉर्म javax.naming याद कर रहा है। * और कई अन्य पैकेजों में बाहरी JAR की निर्भरताएं भी हैं।

बाहरी JAR फ़ाइलों को जोड़ना, और ग्रहण में ऑर्डर और निर्यात सेट करना एंड्रॉइड परियोजनाओं के साथ अपेक्षा के अनुसार काम करता है।


3

गोटो करंट प्रोजेक्ट

RightClick-> गुण-> जावा बिल्ड पथ-> जार फ़ाइलों को पुस्तकालयों में जोड़ें -> ठीक पर क्लिक करें

फिर इसे अपने करंट प्रोजेक्ट में रेफरेंस लाइब्रेरीज़ फाइल में जोड़ा जाता है।


1

एंड्रॉइड का जावा एपीआई javax.naming का समर्थन नहीं करता है। * और कई अन्य javax। * सामान। आपको निर्भरता को अलग जार के रूप में शामिल करना होगा।


1

यदि एंड्रॉइड स्टूडियो का उपयोग कर रहे हैं, तो निम्न करें (मैंने @Vinayak Bs उत्तर की प्रतिलिपि बनाई और संशोधित की है):

  1. प्रोजेक्ट साइडव्यू (पैकेज या Android के बजाय) में प्रोजेक्ट दृश्य का चयन करें
  2. अपने प्रोजेक्ट के रूट फ़ोल्डर में lib नामक एक फ़ोल्डर बनाएँ
  3. अपने JAR फ़ाइलों को libs फ़ोल्डर में कॉपी करें
  4. साइडव्यू अपडेट किया जाएगा और JAR फाइलें आपके प्रोजेक्ट में दिखाई देंगी
  5. अब उस प्रत्येक JAR फ़ाइल पर राइट क्लिक करें जिसे आप आयात करना चाहते हैं और फिर "Add as Library ..." चुनें, जो इसे आपके प्रोजेक्ट में शामिल करेगा
  6. उसके बाद, आपको बस अपने कोड में नई कक्षाओं को संदर्भित करना होगा, जैसे। import javax.mail.*

1

एंड्रॉइड स्टूडियो में अगर ग्रेडेल का उपयोग किया जाता है

इसे build.gradle में जोड़ें

compile fileTree(dir: 'libs', include: ['*.jar'])

और जार फ़ाइल को libs फ़ोल्डर में जोड़ें


1

यदि आप ग्रेडेल बिल्ड सिस्टम का उपयोग कर रहे हैं , तो इन चरणों का पालन करें:

  1. डाल jarसंबंधित अंदर फ़ाइलों libsandroid ऐप्लिकेशन के फ़ोल्डर। आप आम तौर पर इसे मिलेगा Project> app> libs। यदि libsफ़ोल्डर अनुपलब्ध है, तो एक बनाएँ।

  2. इसे अपनी build.gradleफ़ाइल में जोड़ें app। (अपने की कोई बात नहीं Projectहै build.gradle)

    dependencies {
        compile fileTree(dir: 'libs', include: '*.jar')
        // other dependencies
    }

    इसमें आपकी सभी jarफाइलें libsफ़ोल्डर में उपलब्ध होंगी ।

यदि आप सभी jarफ़ाइलों को शामिल नहीं करना चाहते हैं , तो आप इसे व्यक्तिगत रूप से जोड़ सकते हैं।

compile fileTree(dir: 'libs', include: 'file.jar')


0

अपने प्रोजेक्ट के अंदर एक फ़ोल्डर (जैसे कि lib) बनाएं , अपने जार को उस फ़ोल्डर में कॉपी करें । अब प्रॉजेक्ट पर राइट क्लिक से बिल्ड पथ को कॉन्फ़िगर करने के लिए जाएं , बिल्ड पथ चयन में

'जार जोड़ें' आपके द्वारा बनाए गए फ़ोल्डर के लिए ब्राउज़ और लेने जार।


0

एंड्रॉइड प्रोजेक्ट के फ़ोल्डर में .jar फ़ाइल को कॉपी करना हमेशा संभव नहीं होता है।
खासकर अगर यह आपके कार्यक्षेत्र में किसी अन्य प्रोजेक्ट का आउटपुट है, और यह अपडेट होता रहता है।

इसे हल करने के लिए, आपको इसे आयात करने के बजाय अपनी परियोजना से लिंक फ़ाइल के रूप में जार को जोड़ना होगा (जो इसे स्थानीय रूप से कॉपी करेगा)।

UI में चुनें:

प्रोजेक्ट -> आयात -> फाइल सिस्टम -> yourjar.jar -> (विकल्प क्षेत्र) उन्नत -> कार्यक्षेत्र में लिंक बनाएं।

लिंक .project फ़ाइल में सहेजें :

<linkedResources>
    <link>
        <name>yourjar.jar</name>
        <type>1</type>
        <locationURI>PARENT-5-PROJECT_LOC/bin/android_ndk10d_armeabi-v7a/yourjar.jar</locationURI>
    </link>
</linkedResources>

PARENT-5-PROJECT_LOC परियोजना फ़ाइल के सापेक्ष मतलब है, 5 निर्देशिका (../../../../..//)।

फिर इसे पुस्तकालयों में जोड़ें:
परियोजना -> गुण -> जावा बिल्ड पथ -> पुस्तकालय -> जार जोड़ें -> yourjar.jar

उसी विंडो में ऑर्डर और एक्सपोर्ट टैब चुनें और अपने जार को चिह्नित करें ताकि वह एपीके में जुड़ जाए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.