启用 ProGuard 会导致签名 APK 生成失败?

Enabling ProGuard causes failing signed APK generation?

我在我的 gradle 文件中启用了 minifyEnabled 以使用 ProGuard 的功能来混淆代码,结果它抛出了一些错误。

还有更多。

我已经了解了 ProGuard documentation.i guess this 正在发生的事情 wrong.am 使用第三方库和 jars.and 由于我有更多的库而且 jars.how 我可以决定哪一个应该保留在我的 proguard-rules.pro 中,哪一个不应该保留?为了成功和高效地使用 ProGuard,还需要做什么?

您需要添加特定于您使用的库的混淆器规则。 https://github.com/StarWar/android-proguard-snippets/tree/master/libraries

提供了此类规则的汇编

您也可以尝试为引起问题的包添加 dontwarn 指令。一个例子是 -dontwarn org.codehaus.jackson.**

ProGuard 会分析您应用程序中的所有代码(包括库),如果发现未解决的引用(或其他问题,但未解决的引用在这里很重要),则会生成警告.库引用项目中不存在的系统或库代码是很常见的。

例如:Picasso 可选择与 OkHttp 集成,并且有引用该库的代码。但是如果你没有包含 OkHttp ProGuard 将会警告未解析的引用。

成功的构建必须没有来自 ProGuard 的任何警告。 ProGuard 还会检查反射,如果在 reflection 中发现未解决的引用,ProGuard 将生成注释而不是警告。警告和注释都可能指向类路径的问题。您可以自己检查代码以查看是否存在实际问题,或者信任其代码在 Android(以及您的目标平台版本)上运行的库。

Kevin Schultz 打开了一个 public ProGuard 配置文件集合。他的博文应该可以帮助您开始使用配置文件。 http://www.kevinrschultz.com/blog/2014/02/15/proguard-with-gradle/

请仔细检查您复制的配置。他们有时会有点咄咄逼人。如果可能,您希望避免 -dontwarn/dontnote {entire-package} 而缩小实际问题的范围。