2013-02-08 3 views
2

내 앱이 프로 가우트 보호되기를 바랍니다. 이를 위해 나는 몇 가지 튜토리얼, 게시물을 통해 가서 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

실제로 나는 처음으로 위의 오류가 발생했습니다. 두 번째로 내보내기를 시도 할 때 정상적으로 내보내졌고 서명 프로세스가 계속되었습니다. 서명 프로세스를 완료 한 후 기기에서 앱을 테스트하려고 시도했는데 앱이 출시 즉시 충돌했습니다. 이것은 crash http://pastebin.com/TWbjsNp3의 logcat 메시지입니다. –

+0

@ suuresh 다른 질문입니다. SILENT 필드는 리플렉션에 의해 액세스됩니다. -keep 옵션을 사용하여 보존해야합니다. ProGuard 설명서를 참조하십시오. –

+0

ProGuard가 처리 할 때 안드로이드 앱이 다른 안드로이드 라이브러리 프로젝트를 가리키는 경우에도 동일한 오류가 발생합니다. – Alanmars

0

내가 발견 할 수없는 항아리에 대한 주석 인 -libraryjars로 문제를 해결합니다. 문서가 항아리를 제공하지 않는다면, 런타임에 항아리를로드합니다.

관련 문제