2012-06-11 33 views
10

Tôi từng có Proguard 4.6 hoạt động hoàn hảo để xuất các ứng dụng đã ký trên Eclipse 3.6.2.Proguard được trả về với mã lỗi 1. Sau khi cập nhật từ ADT 16 đến 18

Nhưng khi tôi cập nhật SDK ADT + từ 16.0.0.v201112150204-238534 thành 18.0.0.v201203301601-306762 Tôi không còn có thể xuất các ứng dụng đã ký (phiên bản gỡ lỗi hoạt động tốt). Thay vào đó tôi nhận được các bản ghi lỗi sau đây trong giao diện điều khiển:

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 

Tôi đã tìm kiếm SO manh mối nhưng chỉ thread có liên quan tôi đã có thể tìm thấy khoảng Proguard 4.7 with Eclipse SDK 3.7.1 với một số tài liệu tham khảo để "của Samsung spen SDK 1.5" mà tôi rõ ràng là không có.

Bất kỳ ý tưởng nào có thể gây ra vấn đề này và cách khắc phục sự cố?

Trả lời

11

Sự cố được giải quyết bằng cách cập nhật Proguard lên phiên bản 4.8 mới nhất.

Cập nhật: Trong khi cập nhật lên Proguard 4.8 giải quyết được sự cố, nó lại xảy ra trong một dự án khác gần như giống với dự án đầu tiên hiển thị vấn đề (nó sử dụng cùng một dự án thư viện). Biết rằng toàn bộ môi trường giống hệt nhau, tôi không biết tại sao điều này lại xảy ra (và tại sao Proguard lại không nhất quán). Sau khoảng hai giờ đuổi theo đuôi của tôi, cuối cùng tôi đã đoán: Tệp proguard.cfg không được chỉnh sửa qua Eclipse, mà là thông qua WinMerge. Ngay sau khi tôi sao chép qua (giống hệt!) proguard.cfg từ dự án đang hoạt động, sự cố đã biến mất.

Dường như Proguard gặp sự cố với CRLF so với LF.

2

Thông báo lỗi cho biết rằng một lọ đầu vào được truyền tới ProGuard bị hỏng. Bạn có thể dễ dàng kiểm tra điều này sau khi xây dựng không thành công. Có lẽ phân vùng đĩa của bạn đã đầy.

+0

Tôi đã đăng tải ngày hôm qua phát hiện của tôi (cùng với các giải pháp đúng cho trường hợp cụ thể của tôi). Phân vùng đĩa của tôi là xa được đầy đủ. Bất kỳ ý tưởng tại sao Proguard không thể sử dụng một proguard.cfg đã được vá thông qua WinMerge? +1 cho bây giờ. –

+2

Theo như tôi có thể nói, ProGuard xử lý CR/LF tốt. Nguyên nhân gốc rễ "Kết thúc bất ngờ của luồng đầu vào ZLIB" cho libproj1.jar (đến từ một lớp thời gian chạy java) mạnh mẽ cho thấy rằng bình bị hỏng. Điều này rất dễ kiểm tra. Phiên bản ProGuard hoặc cấu hình được hợp nhất dường như ngẫu nhiên. –

20

Tôi giải quyết nó bằng cách chuyển từ OpenJDK 7 trở lại Sun JDK 6.

Cập nhật:

Vấn đề đã trở lại sử dụng JDK 6. giải pháp hiện tại của tôi: tắt dự án -> Xây dựng Tự động khi xuất khẩu .

+6

+1 hoạt động cho tôi mọi lúc. Mặc dù không ai có giải pháp lâu dài hơn? – 3c71

+2

Tắt Tự động xây dựng khi xuất làm việc cho tôi. Cảm ơn! –

0

Điều này có thể xảy ra do tệp đã bị thay đổi kể từ lần cuối bạn kiểm tra dự án để dự án có thể không được xây dựng đầy đủ. Làm sạch và chạy dự án trên thiết bị và sau đó thử xuất.

0

vấn đề được giải quyết bằng cách bình luận các dòng trong project.propterties tức là

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 
Các vấn đề liên quan