2012-06-11 27 views
10

miałem do dyspozycji Proguard 4.6, która doskonale działała przy eksportowaniu podpisanych aplikacji w środowisku Eclipse 3.6.2.Program Proguard powrócił z kodem błędu 1. Po aktualizacji z ADT 16 do 18

Ale raz zaktualizowałem mój zestaw ADT + SDK z 16.0.0.v201112150204-238534 na 18.0.0.v201203301601-306762 Nie mogę już eksportować podpisanych aplikacji (wersja debugowania działa poprawnie). Zamiast tego pojawia się następujący dziennik błędów w konsoli:

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 

Szukałem więc na poszlakach, ale tylko związane wątek udało mi się znaleźć to o Proguard 4.7 with Eclipse SDK 3.7.1 z pewnym odniesieniem do „Samsung spen SDK 1.5”, który ja wyraźnie nie mam.

Każdy pomysł, co może być przyczyną tego i jak rozwiązać problem?

Odpowiedz

11

Problem rozwiązany poprzez aktualizację programu Proguard do najnowszej wersji 4.8.

UPDATE: Podczas uaktualniania do Proguard 4,8 rozwiązać ten problem, ale ponownie powstała w innym projekcie, który jest prawie identyczny z tym, że najpierw wykazywały problemy (używa tego samego projektu biblioteki). Wiedząc, że całe środowisko jest identyczne, nie wiedziałem, dlaczego tak się dzieje (i dlaczego Proguard jest tak niekonsekwentny). Po około dwóch godzinach ścigania mojego ogona, w końcu miałem domysły: plik proguard.cfg nie był edytowany przez Eclipse, ale raczej przez WinMerge. Jak tylko skopiowałem (identyczne!) proguard.cfg z projektu roboczego, problem zniknął.

Wygląda na to, że Proguard ma problem z CRLF vs. LF.

2

Komunikat o błędzie sugeruje, że słoik wejściowy przekazany do ProGuard jest uszkodzony. Możesz łatwo sprawdzić to po nieudanej kompilacji. Może twoja partycja dyskowa jest pełna.

+0

już pisał wczoraj moje wyniki (wraz z właściwego rozwiązania dla mojego konkretnego przypadku). Moja partycja dyskowa nie jest pełna. Każdy pomysł, dlaczego Proguard nie mógł użyć proguard.cfg, który został załatany za pomocą WinMerge? +1 na razie. –

+2

O ile wiem, ProGuard obsługuje CR/LF dobrze. Przyczyna główna "Nieoczekiwany koniec strumienia wejściowego ZLIB" dla biblioteki libproj1.jar (pochodzącej z klasy środowiska wykonawczego Java) sugeruje, że słoik jest uszkodzony. Jest to łatwe do sprawdzenia. Wersje ProGuard lub połączone konfiguracje wydają się przypadkowe. –

20

Rozwiązałem ją przełączeniem z OpenJDK 7 Powrót do Sun JDK 6.

Aktualizacja:

Problem wrócił używając JDK 6. mojego obecnego rozwiązania: wyłącz Project -> Budowanie automatycznie podczas eksportowania .

+6

+1 działa dla mnie za każdym razem. Chociaż nikt nie ma bardziej stałego rozwiązania? – 3c71

+2

Wyłączanie kompilacji Automatycznie podczas eksportowania pracowało dla mnie. Dzięki! –

0

Może się tak zdarzyć, ponieważ plik został zmieniony od czasu ostatniego testowania projektu, dlatego projekt może nie zostać w pełni zbudowany. Wyczyść i uruchom projekt na urządzeniu, a następnie spróbuj eksportować.

0

problem rozwiązany przez komentując linię w project.propterties tj

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