启用 ProGuard 会导致签名 APK 生成失败?
Enabling ProGuard causes failing signed APK generation?
我在我的 gradle 文件中启用了 minifyEnabled
以使用 ProGuard 的功能来混淆代码,结果它抛出了一些错误。
- 注意:有 1 class 个动态创建的 class 实例。
您可能会考虑明确保留提到的 classes and/or
他们的实现(使用“-keep”)。
- 警告:有 309 个未解决的引用 classes 或接口。
您可能需要添加缺少的库 jar 或更新它们的版本。
如果您的代码在没有丢失 classes 的情况下工作正常,您可以抑制
带有“-dontwarn”选项的警告。
(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)
还有更多。
我已经了解了 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}
而缩小实际问题的范围。
我在我的 gradle 文件中启用了 minifyEnabled
以使用 ProGuard 的功能来混淆代码,结果它抛出了一些错误。
- 注意:有 1 class 个动态创建的 class 实例。 您可能会考虑明确保留提到的 classes and/or 他们的实现(使用“-keep”)。
- 警告:有 309 个未解决的引用 classes 或接口。 您可能需要添加缺少的库 jar 或更新它们的版本。 如果您的代码在没有丢失 classes 的情况下工作正常,您可以抑制 带有“-dontwarn”选项的警告。 (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)
还有更多。
我已经了解了 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}
而缩小实际问题的范围。