2012-06-11 3 views
10

У меня было Proguard 4.6 отлично работает, чтобы экспортировать подписанные приложения на Eclipse 3.6.2.Proguard возвращен с кодом ошибки 1. После обновления с ADT 16 до 18

Но как только я обновил свой ADT + SDK от 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 

Я искал SO ключей, но только связанную нить я смог найти о Proguard 4.7 with Eclipse SDK 3.7.1 с некоторой ссылкой на «Samsung в SPEN SDK 1,5», который я явно не имеют.

Любая идея, что может быть причиной этого и как устранить проблему?

ответ

11

Проблема решена путем обновления Proguard до последних 4.8.

UPDATE: Обновление до Proguard 4.8 решило проблему, оно повторилось в другом проекте, который почти идентичен тому, который впервые показал проблему (он использует тот же проект библиотеки). Зная, что вся окружающая среда идентична, я не знал, почему это происходит (и почему Proguard настолько непоследователен). Примерно через два часа в погоне за моим хвостом я наконец догадался: файл proguard.cfg не был отредактирован через Eclipse, а скорее через WinMerge. Как только я скопировал (идентичный!) proguard.cfg из рабочего проекта, проблема исчезла.

Очевидно, что у Proguard есть проблема с CRLF против LF.

2

Сообщение об ошибке указывает на то, что входная банка, переданная в ProGuard, повреждена. Вы можете легко проверить это после неудачной сборки. Возможно, ваш раздел диска заполнен.

+0

Я уже писал вчера мои выводы (наряду с правильным решением для моего конкретного случая). Мой дисковый раздел далеко не заполнен. Любая идея, почему Proguard не может использовать proguard.cfg, который был исправлен через WinMerge? +1 на данный момент. –

+2

Насколько я могу судить, ProGuard обрабатывает CR/LF в порядке. Корневая причина «Неожиданный конец входного потока ZLIB» для libproj1.jar (исходящий из класса Java-среды) настоятельно указывает на то, что банка повреждена. Это легко проверить. Версия ProGuard или объединенные конфигурации кажутся случайными. –

20

Я решил это за счет перехода от OpenJDK 7 назад в Sun JDK 6.

Update:

Проблема Вернулся с использованием JDK 6. мое текущее решение: выключить Project -> Build автоматически при экспорте ,

+6

+1 работает для меня каждый раз. Хотя никто не имеет более постоянного решения? – 3c71

+2

Отключение автоматической сборки при экспорте работал для меня. Благодаря! –

0

Это может произойти из-за того, что файл был изменен с момента последнего тестирования проекта, поэтому проект может быть не полностью построен. Очистите и запустите проект на устройстве, а затем попробуйте экспортировать.

0

проблема решена, комментируя линию в project.propterties т.е.

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