ग्रहण में, किसी अन्य एंड्रॉइड प्रोजेक्ट में एंड्रॉइड लाइब्रेरी प्रोजेक्ट को संदर्भित करने में असमर्थ


104

जैसा कि मैं इस सवाल को लिख रहा था मैं इसे हल करने में कामयाब रहा, इसलिए इसे दूसरों के लाभ के लिए यहां दोहराएं। यहाँ प्रारंभिक समस्या है:

मैंने एक बहुत ही सरल पुस्तकालय परियोजना बनाई है जिसे मैं किसी अन्य परियोजना में संदर्भित करना चाहता हूं। मैंने इसे पहले बिना किसी समस्या के किया है, इसलिए वास्तव में यह निश्चित नहीं है कि यह इस समय क्यों काम नहीं कर रहा है। मेरे पास है:

  1. प्रोजेक्ट प्रॉपर्टी के जरिए लाइब्रेरी प्रोजेक्ट को हरी झंडी दिखाई। default.propertiesफ़ाइल इस सेट है:android.library=true

  2. मेरी अन्य परियोजना में परियोजना गुणों के माध्यम से मेरे पुस्तकालय परियोजना के संदर्भ को जोड़ा गया। default.propertiesफ़ाइल संदर्भ उम्मीद यानी के रूप में जोड़ा गया हैandroid.library.reference.1=K:/android_test_ws/applicationRegistrar

  3. संदर्भित पुस्तकालय परियोजना के खिलाफ हरी टिक हरी से शुरू होती है और फिर एक लाल क्रॉस में बदल जाती है।

इसका मतलब है कि लाइब्रेरी प्रोजेक्ट से कुछ गलत / गायब होना चाहिए लेकिन मुझे नहीं पता कि क्या। इस अवसर पर मेरा पुस्तकालय प्रोजेक्ट मेरे द्वारा बनाए गए पिछले की तुलना में बहुत सरल है।


इस मामले में मेरे मामले में मदद मिली: stackoverflow.com/questions/9283040/… मुझे आशा है कि यह किसी की मदद करता है
अबीर सुल

जवाबों:


160

ठीक है यहां वह समाधान है जो मुझे तब मिला जब मैं अपने फाइल सिस्टम में डिफेंसिंग प्रोजेक्ट (लाइब्रेरी नहीं) की डिफ़ॉल्ट.प्रॉपीज़ फ़ाइल की तलाश कर रहा था। हालाँकि संदर्भित प्रोजेक्ट लाइब्रेरी प्रोजेक्ट के समान ग्रहण कार्यक्षेत्र में था, लेकिन वास्तविक फ़ाइलें फ़ाइल सिस्टम में कहीं और थीं यानी वे लाइब्रेरी प्रोजेक्ट के समान मूल फ़ोल्डर में नहीं थे। जैसे ही मैंने संदर्भ परियोजना को उसी भौतिक फ़ोल्डर में रखा जैसे कि पुस्तकालय परियोजना यह सब ठीक हो गया।

मुझे लगता है कि यह कवर के नीचे चींटी का उपयोग करके Android के साथ कुछ करना चाहिए।

संपादित करें: परियोजना का नाम फ़ाइल सिस्टम पर फ़ोल्डर के नाम से मेल खाता है। आप प्रोजेक्ट प्रॉपर्टीज में क्या देख रहे हैं-> Android-> लाइब्रेरी रेफरेंस एक रिलेटिव फाइल सिस्टम पाथ है।


3
इसके अलावा यह जोड़ना चाहते हैं कि प्रतीकात्मक लिंक इसके लिए ठीक नहीं हैं। मेरे पास मेरे सभी प्रोजेक्ट एक ही फ़ोल्डर में एक दूसरे के रूप में एक अलग स्थान पर संग्रहीत थे (जहां मैं सामान रखता हूं जो मैं बैकअप चाहता हूं) और फिर इन फ़ोल्डरों में मेरे कार्यक्षेत्र फ़ोल्डर के भीतर प्रतीकात्मक लिंक का एक गुच्छा। इसलिए वे सभी एक ही फ़ोल्डर में दोनों स्थानों पर एक-दूसरे के समान थे , हालांकि प्रतीकात्मक लिंक के उपयोग ने इसे गड़बड़ कर दिया। एक बार जब मैंने असली फ़ोल्डर को अपने आधार कार्यक्षेत्र के रूप में लोड किया तो यह सब ठीक था।
जुलाक्सिया

7
+1 ग्रहण / ADT कॉम्बो के इस संक्षिप्त व्यवहार को स्पष्ट करने के लिए। सिर्फ FYI करें, यहां तक ​​कि दोनों प्रोजेक्ट्स को एक ही भौतिक फ़ोल्डर में रखने से उस फ़ोल्डर में सांबा शेयर पर होने पर मदद नहीं मिलती है । उग्र्र ...
a00b

20
कभी-कभी ग्रहण संदर्भ को हटा देगा, ग्रहण को फिर से शुरू करेगा और फिर से जोड़ देगा, अब इसे काम करना चाहिए।
वॉर्पज़िट

यह एक ही कार्यक्षेत्र में स्थित और स्थित मेरी परियोजनाओं के लिए एक समस्या थी। पुस्तकालय के रूप में एक ही कार्यक्षेत्र में परियोजना को आयात किया और सब कुछ ठीक काम किया। जवाब के लिए धन्यवाद।
जयशिल दवे

जांचें कि आपका कार्यक्षेत्र और पुस्तकालय एक ही फ़ोल्डर स्थान में हैं। ADT को फिर से डाउनलोड करने की गलती की और मेरे वास्तविक कार्यक्षेत्र के विपरीत C: \ users कार्यक्षेत्र के तहत एक परियोजना बनाई। कहने की जरूरत नहीं है, फिर से जाँच करें कि आपकी परियोजना और आपका पुस्तकालय एक ही काम कर रहे निर्देशिका में हैं!
गरब

11

सुनिश्चित करें कि दोनों परियोजनाएं समान कार्य स्थान पर मौजूद हैं। ऐसा करने के लिए, प्रोजेक्ट आयात करते समय सुनिश्चित करें कि "कॉपी प्रोजेक्ट इन वर्क स्पेस" चेक बॉक्स चेक किया गया है।


1
मैं उसी लाइब्रेरी प्रोजेक्ट को दूसरे प्रोजेक्ट में कैसे उपयोग कर सकता हूं। अगर मैं ऐसा करता हूं तो यह लाल रंग का क्रॉस सिंबल दिखा रहा है .. @ कार्तिक
शीलेंद्र मद्दा

10

यदि आपकी लाइब्रेरी प्रोजेक्ट आपके वर्तमान कार्यक्षेत्र से अलग पार्टीशन में है तो भी यही समस्या होगी। मुझे अभी भी यही समस्या है। मेरा git स्रोत C: में है और मैं अभी अपने कार्यक्षेत्र को D पर ले जाता हूं: और सब कुछ ढहने लगता है।


4
यदि मुख्य और लाइब्रेरी प्रोजेक्ट अलग-अलग ड्राइव पर हैं , तो ऐसा लगता है कि एक्लिप्स संदर्भ से निरपेक्ष तक सापेक्ष पथ को हल नहीं कर सकता है, और एक्लिप्स इसके बारे में खुश नहीं है (ग्रीन टिक लाल क्रॉस में बदल जाता है)।
पंग

मेरे लिए भी काम किया। मैंने उसी ड्राइव में संदर्भित प्रोजेक्ट को बदल दिया (H :) और अब यह ठीक है
टोबिया ज़ैंबॉन

4

लाइब्रेरी के रास्तों को सही करने का सबसे सरल तरीका है, निम्न स्क्रीनशॉट में दिखाए गए अनुसार लाइब्रेरी को जोड़ने के लिए ग्रहण से GUI का उपयोग करना। इसका एक सामान्य सेटअप आपके लाइब्रेरी प्रोजेक्ट्स को डाइरेक्टरी में होस्ट करना है जो आपके मुख्य प्रोजेक्ट्स से अलग है जो लाइब्रेरी का उपयोग करता है। यह विधि तब काम करेगी जब "लिबरी प्रोजेक्ट" और उसका उपयोग करने वाली परियोजना एक ही ग्रहण "कार्यक्षेत्र" में हो (उन्हें "एक ही मूल फ़ोल्डर में होने की आवश्यकता नहीं"): यहां छवि विवरण दर्ज करें


4
समस्या इसलिए है क्योंकि लाइब्रेरी और प्रोजेक्ट अलग-अलग ड्राइव्स / पार्टिशन पर हैं ... उपरोक्त बग सूची देखें। तुम्हारा ठीक है क्योंकि तुम्हारा पुस्तकालय पथ DOS पूर्ण पथ के बजाय सापेक्ष पथ दिखाता है ...
kenyee

3

कृपया सुनिश्चित करें कि लाइब्रेरी प्रोजेक्ट को "इस लाइब्रेरी" के रूप में चिह्नित किया गया है - लाइब्रेरी प्रोजेक्ट पर राइट क्लिक करें - प्रॉपर्टीज़ - एंड्रॉइड - प्रोजेक्ट "चेक लाइब्रेरी" में चिह्नित करें - प्रोजेक्ट में। लाइब्रेरी प्रोजेक्ट की प्रॉपरिटीज़ में आपके पास एक नई प्रविष्टि होनी चाहिए: "android .library = true। अब इसे उस प्रोजेक्ट में जोड़ें जैसा कि आप नीचे पोस्ट में वर्णित हैं (छवि एकीकृत के साथ पोस्ट - नीलेश पवार से)।


1
यह मेरे लिए ठीक काम किया। भ्रामक हिस्सा मुझे लगता है कि इस 'लाइब्रेरी' चेकबॉक्स का स्थान है। यह सहज नहीं है कि यह वास्तव में वर्तमान ऐप / लाइब्रेरी बिल्ड के लक्ष्य का चयन कर रहा है और पुस्तकालयों को शामिल करने के लिए विकल्प स्विच नहीं है।
एटिएन्स्की


2

फिर भी उसी मुद्दे पर एक और अवलोकन।

मेरे लिए दो परियोजनाएं जहां एक ही मूल फ़ोल्डर पर हैं, और दोनों कार्यक्षेत्र के अंदर स्थानीय थे। तब भी मुद्दा बन रहा था।

मैंने "Project.properties" फ़ाइल को संपादित किया और लाइब्रेरी प्रोजेक्ट के निरपेक्ष पथ (सेपरेटर के लिए आगे स्लैश के साथ) डाल दिया। बचा लिया और बंद कर दिया। फिर परियोजना गुण संवाद में गया, पुस्तकालय को हटा दिया (जो अभी भी क्रॉस आइकन दिखा रहा था लेकिन एब्स पथ के साथ) और इसे हमेशा की तरह वापस जोड़ दिया। आश्चर्यजनक रूप से समस्या हल हो गई है, और परियोजना संकलन और चलती है।

यह वास्तव में अजीब है और ADT के साथ एक बग होना चाहिए। मैं ADT संस्करण 20.0.2 का उपयोग कर रहा हूं


+1। पुस्तकालयों को समान नामों से बदलते समय इस समस्या का सामना किया। लगता है जैसे ग्रहण (या ADT) पुराने को संदर्भित करने की कोशिश कर रहा है और विफल रहता है। ग्रहण पुनः आरंभ करने में मदद करता है। (उबंटू 12.04, ग्रहण इंडिगो, एडीटी
21.0.0

2

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


2

मेरे लिए, मैं सिर्फ ग्रहण को पुनः आरंभ करता हूं और जोड़ा गया पुस्तकालय ठीक काम करता है।

मेरा मतलब है कि पहली बार यह पुस्तकालय परियोजना को जोड़ने के बाद लाल निशान दिखा रहा है। हालांकि ग्रहण मुख्य परियोजना और पुस्तकालय परियोजना एक ही कार्यक्षेत्र फ़ोल्डर में हैं और कोई संसाधन फ़ाइलें परियोजना फ़ोल्डर के बाहर नहीं हैं।

तो, आप अपने ग्रहण को पुनः आरंभ करने की कोशिश कर सकते हैं। हैप्पी कोडिंग…।


1

मेरे लिए वर्कअराउंड था

  1. एक नया कार्यक्षेत्र बनाएँ
  2. उस कार्यक्षेत्र में लाइब्रेरी प्रोजेक्ट आयात करें
  3. आयात उस कार्यक्षेत्र में वांछित परियोजना
  4. प्रोजेक्ट और लाइब्रेरी दोनों एक ही लक्ष्य Android OS संस्करण है
  5. मेरी परियोजना में संदर्भ पुस्तकालय परियोजना

मेरी समस्या हल कर दी


एक नया कार्यक्षेत्र बनाने से भी समस्या हल हो गई। आपको प्रोजेक्ट साफ़ करने की भी आवश्यकता है।
ओमेर कांसिज़ोग्लू

1

जब मैं अपने कार्यक्षेत्र को बदलने की कोशिश करता हूं तो मुझे भी यही समस्या होती है, इसलिए यह मेरा समाधान है:

  1. लाइब्रेरी प्रोजेक्ट सहित सभी प्रोजेक्ट डेटा को कार्यक्षेत्र में आयात और कॉपी करें
  2. प्रोजेक्ट पर राइट-क्लिक करके पुराना प्रोजेक्ट संदर्भ हटाएं -> गुण -> Android -> लाइब्रेरी
  3. स्वच्छ परियोजना पहले (उर परियोजना गुणों को ताज़ा करने के लिए)
  4. पुस्तकालय परियोजना के गुणों पर जाएं -> Android -> पुस्तकालय और पुस्तकालय की जांच करें यदि यह लागू नहीं है तो ठीक क्लिक करें
  5. यदि लाइब्रेरी प्रोजेक्ट लाइब्रेरी है, तो पहले से ही चेक किया हुआ है, पहले इसे अनचेक करें फिर उसके बाद लाइब्रेरी प्रोजेक्ट को क्लीन करें। स्टेप 4 फिर से करें
  6. उस प्रोजेक्ट पर जाएं जहां आप चाहते हैं कि लाइब्रेरी तब प्रोजेक्ट पर राइट-क्लिक करें -> गुण -> एंड्रॉइड -> लाइब्रेरी, फिर लाइब्रेरी प्रॉजेक्ट चुनें (यह वहां होना चाहिए) पर क्लिक करें और फिर लागू करें पर क्लिक करें ठीक है
  7. अगर अभी भी परियोजना को एक बार फिर साफ नहीं किया गया है और ऐसा करना चाहिए


0

जब आप पहले और बाद के संदर्भ-पथ पर एक नज़र डालते हैं, तो यह "C: / कार्यक्षेत्र / mylib" से आता है और सही स्थान पर कॉपी किए जाने पर "../../mylib" पर जाता है, काफी दिलचस्प है।


0

FYI करें,

मेरे लिए जो काम किया गया था, वह मेरे कार्यक्षेत्र (फ़ाइलों को हटाए बिना) से 'लाइब्रेरी' प्रोजेक्ट्स (वास्तविक प्रोजेक्ट्स) को डिलीट करने के लिए था, और फिर विज़ार्ड (सोर्स कोड से मौजूदा एंड्रॉइड प्रोजेक्ट को आयात करना) का उपयोग करके उन्हें फिर से आयात करना था।


मेरे लिए भी काम किया। बस हटा दी गई और परियोजनाओं को फिर से शुरू किया ('मौजूदा ग्रहण परियोजना' के रूप में)
Neromancer

0

सवाल पोस्ट करने के लिए धन्यवाद। मुझे अपने Android एप्लिकेशन के साथ फेसबुक को एकीकृत करते समय बिल्कुल यही समस्या थी। मैंने अपनी विकास परियोजना को उसी Windows ड्राइव पर ले जाकर समस्या को ठीक किया, जिसमें लायब्रेरी प्रोजेक्ट स्थित था। यदि किसी भिन्न ड्राइव में है तो किसी तरह से ग्रहण लाइब्रेरी प्रोजेक्ट के स्थान को डिफ़ॉल्ट रूप से पढ़ने में असमर्थ है ।


0

सूफी खान के पद के समान मैंने भी इस मुद्दे को एक रिबूट के साथ हल किया। मेरा मामला उस समय अलग हो गया जब मैंने पहली बार प्रॉपर्टीज-> एंड्रॉइड को एक्सेस किया और लाइब्रेरी को जोड़ा, मुझे एक प्यारा ग्रीन चेकमार्क मिला। जब मैंने डायलॉग बंद किया तब भी एक्लिप्स क्लास-नहीं-पाया टाइप एरर दिखा रहा था। जब मैंने संपत्तियों को फिर से जांचा तो मैंने लाल एक्स को देखा। लेकिन श्री कहन के समाधान (बुरे काम को हटा दें, ग्रहण को फिर से शुरू करें, फिर से काम जोड़ें) ठीक काम किया।

मैं ADT बंडल के 0702 संस्करण का उपयोग कर रहा हूं ("क्लस्टर" से शुरू होता है, "डक" के साथ गाया जाता है)।


0

मैंने स्वीकार किए गए उत्तर का पालन किया लेकिन यह भी सुनिश्चित करना था कि मेरी "प्रोजेक्ट.प्रॉपीटीज़" फ़ाइल पठनीय थी।

यदि फ़ाइल आसानी से (स्रोत नियंत्रण में जाँच की गई है) तो ग्रहण उसे संपादित नहीं करेगा। लायब्रेरी संदर्भ जोड़ना सफल होगा, लेकिन ओके मारने के बाद परिवर्तन जारी नहीं रहेगा।

यदि वरीयताओं की खिड़की को बंद करना और फिर से खोलना आपके द्वारा जोड़े गए पुस्तकालय को हटा देता है, तो यह आपका समाधान हो सकता है।


0

यदि आपकी लाइब्रेरी परियोजना अभी भी आपके लाइब्रेरी प्रोजेक्ट गुणों में लाइब्रेरी फ़्लैग को जोड़ने का प्रयास नहीं करती है

Android.library = true जोड़ें

project.properties

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

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