Android - Proguard 返回错误代码 1

标签 android obfuscation proguard

我希望我的应用受到 progaurd 保护。为此,我浏览了一些教程、帖子,最后来自 this帖子我开始知道我应该只这样做:

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

取消上述建议行后,我尝试导出未签名的应用程序。但是出现导出错误,提示 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 或遗漏了步骤?

最佳答案

堆栈跟踪中列出了根本原因:

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 文件是否存在于给定位置?
  • 它是一个有效的 jar(你能用解压工具打开它吗)?
  • 它是在构建过程中编写的吗?如果它以某种方式被异步写入,当 ProGuard 读取它时它可能仍然不完整。

关于Android - Proguard 返回错误代码 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14773796/

相关文章:

android - Android SDK 管理器的 GUI 消失了吗?

android - 如何将依赖项添加到我的 Codename One Android 应用程序中的根级 build.gradle 文件?

java - Libgdx - 纹理未显示在屏幕更改上

android - 在没有eclipse的情况下将android项目编译为apk

c - 提供隐藏内部函数的 C API 的最佳实践

android - 为什么Proguard在Android Studio中没有proguard-base.jar仍然可以工作

android - 我如何知道谁结束了 Android 中的通话 - 用户还是远程用户?

javascript - 使用 ROT13 密码混淆电子邮件时的引用错误

android - Proguard 错误,无法导出应用程序

android - 发布版本中的空 json 数据(使用混淆器)