2012-06-11 8 views
10

से अद्यतन के बाद मुझे Proguard 4.6 ग्रहण 3.6.2 पर हस्ताक्षरित अनुप्रयोगों को निर्यात करने के लिए पूरी तरह से काम कर रहा था।प्रोगार्ड त्रुटि कोड के साथ लौटा 1. एडीटी 16 से 18

लेकिन एक बार जब मैंने 16.0.0.v201112150204-238534 से 18.0.0.v201203301601-306762 से अपना एडीटी + एसडीके अपडेट किया, तो अब मैं हस्ताक्षरित एप्लिकेशन निर्यात नहीं कर सकता (डीबग संस्करण ठीक काम करता है)। इसके बजाय मैं कंसोल में निम्न त्रुटि लॉग प्राप्त करते हैं:

Proguard returned with error code 1. See console 
java.io.IOException: Can't read [\\bta\wspc\LibProj1\bin\libproj1.jar] (Can't process class [com/bta/blib/proj1/BtClsProj1.class] (Unexpected end of ZLIB input stream)) 
    at proguard.InputReader.readInput(InputReader.java:230) 
    at proguard.InputReader.readInput(InputReader.java:200) 
    at proguard.InputReader.readInput(InputReader.java:178) 
    at proguard.InputReader.execute(InputReader.java:78) 
    at proguard.ProGuard.readInput(ProGuard.java:196) 
    at proguard.ProGuard.execute(ProGuard.java:78) 
    at proguard.ProGuard.main(ProGuard.java:492) 
Caused by: java.io.IOException: Can't process class [com/bta/blib/proj1/BtClsProj1.class] (Unexpected end of ZLIB input stream) 
    at proguard.io.ClassReader.read(ClassReader.java:112) 
    at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87) 
    at proguard.io.JarReader.read(JarReader.java:65) 
    at proguard.io.DirectoryPump.readFiles(DirectoryPump.java:65) 
    at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.java:53) 
    at proguard.InputReader.readInput(InputReader.java:226) 
    ... 6 more 
Caused by: java.lang.RuntimeException: Unexpected end of ZLIB input stream 
    at proguard.classfile.io.RuntimeDataInput.readInt(RuntimeDataInput.java:136) 
    at proguard.classfile.io.ProgramClassReader.visitProgramClass(ProgramClassReader.java:77) 
    at proguard.classfile.ProgramClass.accept(ProgramClass.java:346) 
    at proguard.io.ClassReader.read(ClassReader.java:91) 
    ... 11 more 

मैं सुराग के लिए बहुत खोज की, लेकिन केवल संबंधित धागा मैं ढूँढने में सक्षम किया गया है Proguard 4.7 with Eclipse SDK 3.7.1 के बारे में कुछ संदर्भ के लिए "सैमसंग की SPEN एसडीके 1.5" के साथ है जो मैं स्पष्ट रूप से नहीं है।

कोई विचार क्या हो सकता है और समस्या को ठीक करने के लिए क्या हो सकता है?

उत्तर

11

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

अद्यतन: 4.8 समस्या हल ProGuard को अपडेट कर रहे होते, यह एक परियोजना है कि एक ही है कि पहले (यह एक ही पुस्तकालय परियोजना का उपयोग करता है) समस्या का प्रदर्शन करने के लिए लगभग समान है में फिर से हुई। यह जानकर कि पूरा वातावरण समान है, मुझे नहीं पता था कि यह क्यों हो रहा था (और क्यों प्रोगुआर्ड इतनी असंगत है)। मेरी पूंछ का पीछा करने के लगभग दो घंटे बाद, मुझे अंत में अनुमान लगाया गया: proguard.cfg फ़ाइल ग्रहण के माध्यम से संपादित नहीं की गई थी, बल्कि WinMerge के माध्यम से। जैसे ही मैंने काम करने वाली परियोजना से (समान!) proguard.cfg पर प्रतिलिपि बनाई, समस्या गायब हो गई।

जाहिर है, प्रोगुआर्ड को सीआरएलएफ बनाम एलएफ के साथ समस्या है।

2

त्रुटि संदेश से पता चलता है कि ProGuard को पास किया गया इनपुट जार दूषित है। असफल निर्माण के बाद आप इसे आसानी से देख सकते हैं। शायद आपका डिस्क विभाजन भरा हुआ है।

+0

मैं पहले से ही कल मेरे निष्कर्षों पोस्ट (मेरे विशेष मामले के लिए सही समाधान के साथ) यानी। मेरा डिस्क विभाजन पूर्ण होने से बहुत दूर है। कोई विचार क्यों प्रोगार्ड proguard.cfg का उपयोग नहीं कर सका जो WinMerge के माध्यम से पैच किया गया है? अभी के लिए +1। –

+2

जहां तक ​​मैं कह सकता हूं, प्रोगार्ड सीआर/एलएफ जुर्माना संभालता है। Libproj1.jar (जावा रनटाइम क्लास से आने) के लिए मूल कारण "ZLIB इनपुट स्ट्रीम का अप्रत्याशित अंत" दृढ़ता से सुझाव देता है कि जार दूषित है। यह जांचना आसान है। ProGuard संस्करण या विलय विन्यास आकस्मिक लगते हैं। –

20

मैं OpenJDK 7 से वापस सूर्य JDK में स्विच करके इसे हल 6.

अद्यतन:

समस्या वापस JDK 6. मेरे वर्तमान समाधान का उपयोग कर आया: परियोजना बंद कर देते हैं -> जब निर्यात स्वचालित रूप से बनाएँ ।

+6

+1 हर बार मेरे लिए काम करता है। हालांकि किसी के पास एक स्थायी समाधान नहीं है? – 3c71

+2

मेरे लिए काम करते समय स्वचालित रूप से बिल्ड बंद करना बंद करें। धन्यवाद! –

0

ऐसा इसलिए हो सकता है क्योंकि पिछली बार जब आपने प्रोजेक्ट का परीक्षण किया था तो फ़ाइल बदल दी गई है ताकि परियोजना पूरी तरह से नहीं बनाई जा सके। एक डिवाइस पर परियोजना को साफ और चलाएं और फिर निर्यात करने का प्रयास करें।

0

समस्या project.propterties में लाइन टिप्पणी करके हल

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt