android - "बाहरी जार पर त्रुटि 1 के साथ Dalvik प्रारूप में रूपांतरण विफल"




android-sdk-1.6 (20)

ग्रहण में मेरे एंड्रॉइड एप्लिकेशन में मुझे निम्न त्रुटि मिलती है।

अप्रत्याशित टॉप-लेवल अपवाद:
java.lang.IleglegalArgumentException: पहले से जोड़ा गया: लॉर्ग / xmlpull / v1 / XmlPullParser;
....
त्रुटि 1 के साथ Dalvik प्रारूप में रूपांतरण विफल रहा

यह त्रुटि केवल तब दिखाई देती है जब मैं अपनी प्रोजेक्ट में एक विशिष्ट बाहरी JAR फ़ाइल जोड़ता हूं। मैंने संभावित समाधान के लिए लंबे समय तक खोज की, लेकिन संभावित समाधानों में से कोई भी काम नहीं करता है। मैंने 1.5 के बजाय एंड्रॉइड 1.6 में बदलने की कोशिश की (वर्तमान संस्करण मैं उपयोग करता हूं)।


अक्सर मेरे लिए, परियोजना की सफाई इस समस्या को ठीक नहीं करता है।

लेकिन ग्रहण में प्रोजेक्ट को बंद करना और फिर इसे फिर से खोलना उन मामलों में ठीक करना प्रतीत होता है ...


आज खुद इस समस्या में भागो। सफाई और पुनर्निर्माण ने समस्या को ठीक नहीं किया। परियोजना को हटाना और पुनः आयात करना या तो मदद नहीं करता था।

आखिर में मैंने इसे वापस अपने .class फ़ाइल में खराब जोड़ों का पता लगाया। मुझे लगता है कि जब मैं एक और समस्या को ठीक करने की कोशिश कर रहा था, तो प्लगइन टूल्स द्वारा इसे जोड़ा गया था, इसे हटाने से "त्रुटि 1 के साथ विफल डेलविक प्रारूप में रूपांतरण" त्रुटि से छुटकारा पा लिया:

<classpathentry kind="lib" path="C:/dev/repository/android-sdk-windows/platforms/android-3/android.jar">
    <attributes>
        <attribute name="javadoc_location" value="file:/C:/dev/repository/android-sdk-windows/docs/reference"/>
    </attributes>
    <accessrules>
        <accessrule kind="nonaccessible" pattern="com/android/internal/**"/>
    </accessrules>


आम तौर पर, ऐसा लगता है कि यह समस्या तब होती है जब निर्माण पथ में अनावश्यक JAR फ़ाइलें होती हैं।

IntelliJ IDEA पर काम करते समय मुझे इस समस्या का सामना करना पड़ा। मेरे लिए ऐसा इसलिए हुआ क्योंकि मैंने JUnit और Mockito पुस्तकालयों को जोड़ा जो रनटाइम पर संकलित किए जा रहे थे। इसे मॉड्यूल गुणों में "परीक्षण" पर सेट करने की आवश्यकता है।


उपरोक्त सभी समाधान मेरे लिए काम नहीं करते थे। मैं किसी भी precompiled .jar का उपयोग नहीं कर रहा हूँ। मैं एलवीएल और दल्विक त्रुटियों का उपयोग कर रहा हूं जहां सभी बाजार लाइसेंसिंग लाइब्रेरी से संबंधित हैं।

समस्या को मुख्य परियोजना को हटाने और पुनः आयात करके हल किया गया है (मौजूदा स्रोतों से एक नई परियोजना बनाएं)।


पहले प्रस्तावित समाधानों में से कोई भी मेरे लिए काम नहीं करता था। मेरे मामले में, समस्या तब हुई जब मैंने लाइब्रेरी स्रोत कोड फ़ोल्डर को लाइब्रेरी जेएआर फ़ाइल का उपयोग करने के लिए स्विच करने से स्विच किया। प्रारंभ में एंड्रॉइड एप्लिकेशन प्रोजेक्ट प्रॉपर्टीज एंड्रॉइड पेज \ लाइब्रेरी सेक्शन के तहत सूचीबद्ध एंड्रॉइड लाइब्रेरी प्रोजेक्ट था, और पुस्तकालय स्रोत निर्देशिका के लिंक के रूप में प्रोजेक्ट एक्सप्लोरर पेड़ में लाइब्रेरी की तुलना की गई थी।

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

सही प्रक्रिया थी (बिल्ड पथ को वापस बदलने और लाइब्रेरी स्रोत के संदर्भ को वापस करने के बाद):

  • वास्तव में एप्लिकेशन प्रोजेक्ट गुण \ Android पृष्ठ से संदर्भ को हटाकर लाइब्रेरी स्रोत निर्देशिका लिंक को हटा दें

  • लाइब्रेरी जेएआर को सामान्य रूप से एप्लिकेशन प्रोजेक्ट बिल्ड पथ में जोड़ना।


प्रोग्रार्ड को नवीनतम संस्करण में अपडेट करने से यह मेरे लिए हल हो गया।

  • मेरा प्रोजेवार्ड पथ C:\Program Files (x86)\Android\android-sdk\tools\proguard\
  • मैंने here से नया संस्करण डाउनलोड किया
  • और दोनों बिन और lib फ़ोल्डर्स को बदल दिया

भगवान का शुक्र है!


प्रोजेक्ट पर जाएं और फिर "स्वचालित रूप से बनाएं" अनचेक करें। फिर प्रोजेक्ट को निर्यात करने का प्रयास करें और त्रुटि समाप्त हो गई है।


मुझे एक ही समस्या थी और इनमें से कोई भी समाधान काम नहीं करता था। अंत में, मैंने कंसोल में देखा कि त्रुटि डुप्लिकेट क्लास (मौजूदा प्रोजेक्ट में से एक, अतिरिक्त जार फ़ाइल में से एक) के कारण थी:

java.lang.IllegalArgumentException: already added: package/MyClassclass;
[2011-01-19 14:54:05 - ...]: Dx1 error; aborting
[2011-01-19 14:54:05 - ...] Conversion to Dalvik format failed with error 1

तो जांचें कि क्या आप अपनी परियोजना में डुप्लिकेट कक्षाओं के साथ जार जोड़ रहे हैं। यदि हां, तो उनमें से एक को हटाने का प्रयास करें।

यह मेरे लिए काम किया।


मेरी परियोजना में शेरलॉक एक्शनबार लाइब्रेरी का उपयोग करते समय मैंने इस समस्या का सामना किया है। आप निम्न कदम कर सकते हैं, यह मेरे लिए काम है।

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

उम्मीद है कि आपकी मदद करेगा।


मेरी समस्या एडीटी संस्करण 12.0 और प्रोगार्ड एकीकरण के कारण हुई थी। यह बग अच्छी तरह से प्रलेखित है और समाधान दस्तावेज में है

समाधान यहां है

here


मेरे मामले में समस्या वास्तव में OpenFeint API प्रोजेक्ट के साथ है। मैंने ओपनफिंट को लाइब्रेरी प्रोजेक्ट के रूप में जोड़ा है:

इसे बिल्ड पथ में भी जोड़ा जाता है, एडीटी टूल्स 16 इस दृश्य के साथ त्रुटि देता है।

अपने प्रोजेक्ट पर राइट क्लिक करें और पथ बनाने पर क्लिक करें, बिल्ड पथ को कॉन्फ़िगर करें और फिर छवि देखें और अपनी परियोजना ओपनफिंट को यहां से हटाएं और सब कुछ किया गया है :)


मेरे लिए, मेरे निर्माण पथ में एक अतिरिक्त जेएआर संदर्भ दिखाई दिया था। मैंने इसे हटा दिया, और यह अब काम करता है।


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

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

    <dependency>
        <groupId>com.globalmentor</groupId>
        <artifactId>globalmentor-core</artifactId>
        <version>1.0-SNAPSHOT</version>
        <!-- android-maven-plugin can't seem to automatically keep this from being
             included twice; it must therefore be included manually (either explicitly
             or transitively) in dependent projects -->
        <scope>provided</scope>
    </dependency>

फिर अंतिम आवेदन pom.xml मुझे केवल एक समावेशन पथ की अनुमति देने के लिए सही चालबाजी का उपयोग करना था --- साथ ही मूल पुस्तकालय समेत स्पष्ट रूप से नहीं :

    <!-- android-maven-plugin can't seem to automatically keep this from being
        included twice -->
    <!-- <dependency> -->
    <!-- <groupId>com.globalmentor</groupId> -->
    <!-- <artifactId>globalmentor-core</artifactId> -->
    <!-- <version>1.0-SNAPSHOT</version> -->
    <!-- </dependency> -->

    <dependency>
        <groupId>com.globalmentor</groupId>
        <artifactId>globalmentor-google</artifactId>
        <version>1.0-SNAPSHOT</version>
        <exclusions>
            <!-- android-maven-plugin can't seem to automatically keep this from
                being included twice -->
            <exclusion>
                <groupId>com.globalmentor</groupId>
                <artifactId>globalmentor-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>com.globalmentor</groupId>
        <artifactId>globalmentor-android</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

मैं इस समस्या में भाग गया लेकिन मेरा समाधान दो गुना था। 1.) मुझे प्रोजेक्ट -> गुण -> एंड्रॉइड के तहत एक एंड्रॉइड लक्ष्य संस्करण जोड़ना पड़ा। 2.) मेरे पास सभी Google 'तृतीय पक्ष ऐड-ऑन' नहीं थे। उपलब्ध संकुल के तहत एवीडी एसडीके प्रबंधक में क्लिक करें -> थर्ड-पार्टी ऐड-ऑन -> Google इंक । मैंने सभी एसडीके डाउनलोड किए और मेरी समस्या हल हो गई।


मैंने समस्या हल की।

यह एक जेएआर फ़ाइल संघर्ष है।

ऐसा लगता है कि मेरे पास मेरे बिल्डपैथ पर दो जेएआर फाइलें हैं जिनमें एक ही पैकेज और कक्षाएं शामिल हैं।

smack.jar और android_maps_lib-1.0.2

इस पैकेज को जेएआर फाइलों में से एक से हटाने से समस्या हल हो गई।


यदि आपके पास एडीटी संशोधन 12+ है, तो आपको 4.4 -> 4.6 (जैसा कि here वर्णित here ) से अपने प्रोगार्ड को अपडेट करना चाहिए। साथ ही, आपको मूल रूप में ... \ bin \ proguard.bat फ़ाइल छोड़नी चाहिए।

बस इसे वेब से डाउनलोड करें, और डाउनलोड पैकेज से lib फ़ोल्डर को कॉपी करें:

[एंड्रॉइड एसडीके स्थापना निर्देशिका] \ उपकरण \ proguard \ lib


यहां एक और परिदृश्य है, और समाधान:

यदि आप एक्लिप्स के लिए एडीटी अपडेट करने के बाद हाल ही में इस समस्या में भाग लेते हैं:

  1. अपनी ऐप प्रोजेक्ट में, अपनी लाइब्रेरी प्रोजेक्ट्स को इंगित करने वाले किसी भी लिंक किए गए स्रोत फ़ोल्डर की जांच करें (उनके पास "LibraryName_src" फ़ॉर्म में नाम हैं)।
  2. उन सभी परियोजनाओं का चयन करें, राइट-क्लिक करें, " पथ बनाएं " चुनें -> " बिल्ड पथ से निकालें "।
  3. " प्रोजेक्ट से फ़ोल्डर को अनलिंक करें " चुनें, और " हां " पर क्लिक करें।
  4. परियोजना को साफ, पुनर्निर्माण और पुन: नियोजित करें।

ऐसा लगता है कि एडीटी लिंक लाइब्रेरी प्रोजेक्ट स्रोत फ़ोल्डर्स के कुछ पिछले संस्करण "बच्चे" परियोजनाओं के लिए हैं, और वर्तमान एडीटी / डीएक्स संयोजन अब उस समाधान के साथ संगत नहीं है।

संपादित करें: यह एंड्रॉइड देव ब्लॉग एंट्री द्वारा पुष्टि की गई है, विशेष रूप से यह एक - 8 वें पैराग्राफ को बाद में देखें।


सिर्फ उन अन्य लोगों के लिए जिनके पास अभी भी समस्या है और उन्होंने उपरोक्त उत्तरों की कोशिश की है लेकिन अभी भी त्रुटि (जो मेरा मामला था) प्राप्त कर रहा है, तो मेरा समाधान ग्रहण से परियोजना को हटाना था और इसे दोबारा आयात करना था।

इसने एंड्रॉइड लाइब्रेरी को मेरे संदर्भित पुस्तकालयों में फिर से जोड़ा जाना है, इसलिए अब मेरे पास दो एंड्रॉइड जेएआर फाइलें हैं, इसलिए मैंने उनमें से एक को हटा दिया और अब यह ठीक से संकलित है।

समाधान: ग्रहण आईडीई से प्रोजेक्ट हटाएं और फिर इसे फिर से आयात करें, फिर उपरोक्त समाधानों की जांच करें।


बस परियोजना को साफ करें

यदि यह काम नहीं करता है तो अन्य समाधानों को आजमाएं


विंडोज 7 समाधान:

पुष्टि की है कि फ़ाइल में ProGuard कमांड लाइन के कारण समस्या है
[एंड्रॉइड एसडीके स्थापना निर्देशिका] \ उपकरण \ proguard \ bin \ proguard.bat

निम्न पंक्ति संपादित करें समस्या हल करेंगे:

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*

सेवा मेरे

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9




android-sdk-1.6