2013-02-08 2 views
2

Я хотел, чтобы мое приложение было защищено progaurd. Для этого я пошел через некоторые учебники, посты и, наконец, от this поста я узнал, что я должен делать это только:Android - Proguard возвращен с кодом ошибки 1

If you're using ADT 17 or newer, the documentation is slightly inaccurate. The generated file is proguard-project.txt and will be in the root directory of your project. 

To enable Proguard, you will need to ignore the "do not modify" warning in project.properties and uncomment the following line: 

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

После uncommeting предложенных выше линий я пытался экспортировать без знака приложения. Но получил ошибку экспорта, сказав, что progaurd returned error with code 1. Когда я нажал на кнопку данных в диалоговом окне ошибки, я получил журнал ошибок показан ниже:

Proguard returned with error code 1. See console 
Proguard Error 1 
Output: 
     You should check if you need to specify additional program jars. 
Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [acra- 

4.4.0.jar:META-INF/MANIFEST.MF]) 
Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry 

[libGoogleAnalyticsV2.jar:META-INF/MANIFEST.MF]) 
Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [google-play- 

services_lib.jar:META-INF/MANIFEST.MF]) 
Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry 

[vpilibrary.jar:META-INF/MANIFEST.MF]) 
Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry 

[abslibrary.jar:META-INF/MANIFEST.MF]) 
java.io.IOException: Can't write [C:\Users\SURESH\AppData\Local\Temp 

\android_6223056648746329994.jar] (Can't read [C:\Users\SURESH\Desktop\ActionBarSherlock- 

4.2.0\ABSlibrary\bin\abslibrary.jar] (Unexpected end of ZLIB input stream)) 
    at proguard.OutputWriter.writeOutput(OutputWriter.java:264) 
    at proguard.OutputWriter.execute(OutputWriter.java:160) 
    at proguard.ProGuard.writeOutput(ProGuard.java:372) 
    at proguard.ProGuard.execute(ProGuard.java:153) 
    at proguard.ProGuard.main(ProGuard.java:492) 
Caused by: java.io.IOException: Can't read [C:\Users\SURESH\Desktop\ActionBarSherlock- 

4.2.0\ABSlibrary\bin\abslibrary.jar] (Unexpected end of ZLIB input stream) 
    at proguard.InputReader.readInput(InputReader.java:230) 
    at proguard.InputReader.readInput(InputReader.java:200) 
    at proguard.OutputWriter.writeOutput(OutputWriter.java:253) 
    ... 4 more 
Caused by: java.io.EOFException: Unexpected end of ZLIB input stream 
    at java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:223) 
    at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:141) 
    at java.util.zip.ZipInputStream.read(ZipInputStream.java:154) 
    at java.util.zip.ZipInputStream.closeEntry(ZipInputStream.java:100) 
    at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:78) 
    at proguard.io.JarReader.read(JarReader.java:58) 
    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 

Любой идеи, почему это происходит? Я правильно настраиваю progaurd или пропуская шаги?

ответ

1

Основная причина указана в трассировке стека:

Caused by: java.io.IOException: Can't read [C:\Users\SURESH\Desktop\ActionBarSherlock-4.2.0\ABSlibrary\bin\abslibrary.jar] (Unexpected end of ZLIB input stream) 
... 
Caused by: java.io.EOFException: Unexpected end of ZLIB input stream 
    at java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:223) 
    ... 

Вы должны проверить следующее:

  • ли файл abslibrary.jar присутствует в данном месте?
  • Действительно ли это бачок (можете ли вы открыть его с помощью какого-либо разархивирования)?
  • Это написано во время процесса сборки? Если это как-то написано асинхронно, оно может быть неполным, когда ProGuard читает его.
+0

Фактически я получил вышеуказанную ошибку только в первый раз. Когда я попытался экспортировать его во второй раз, он был экспортирован нормально, и я продолжил процесс подписания. После завершения процесса подписания я попытался протестировать приложение на устройстве, и приложение сразу же сработало при запуске. это сообщение logcat при сбое http://pastebin.com/TWbjsNp3 –

+0

@suresh Это другой вопрос. Поле SILENT доступно путем отражения. Вы должны сохранить его с помощью опции -keep. См. Руководство ProGuard. –

+0

Я получаю ту же ошибку, если мое приложение для Android ссылается на другой проект библиотеки Android, когда ProGuard обрабатывает. – Alanmars

0

Я решаю проблему путем аннотации -libraryjars о банке, которая не может быть найдена. Документ говорит, что он не будет содержать jar, он будет загружать банку во время выполнения.

Смежные вопросы