【问题标题】:Android: Proguard not obfuscating code, throwing errorsAndroid:Proguard 不混淆代码,抛出错误
【发布时间】:2015-07-10 07:28:38
【问题描述】:

这是我的配置:

project.properties

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

# Project target.
target=Google Inc.:Google APIs:22
android.library=false
android.library.reference.1=../../libs/facebook/facebook-android-sdk-4.2.0/facebook

proguard-project.txt:这是一个空文件,即所有内容都在其中注释。

项目正常编译,没有错误。

当我尝试导出 apk 时,我在控制台中看到许多错误(并且导出失败):

    Proguard returned with error code 1. See console
    Warning: com.facebook.applinks.FacebookAppLinkResolver: can't find superclass or interface bolts.AppLinkResolver
    Warning: com.facebook.applinks.FacebookAppLinkResolver$1: can't find superclass or interface bolts.Continuation
    Warning: org.apache.commons.beanutils.BeanMap$2: can't find superclass or interface org.apache.commons.collections.Transformer
    Warning: org.apache.commons.beanutils.BeanMap$3: can't find superclass or interface org.apache.commons.collections.Transformer
...

但是,如果我注释掉 project.properties 中的 proguard.config=... 行,我可以成功导出而不会出现任何错误 - 但代码不会被混淆。

我在这里做错了什么?

【问题讨论】:

  • 看看这是否有帮助:stackoverflow.com/questions/13208784/…
  • Kay> 是的,即使警告被抑制并且导出成功,但 APK 本身不起作用 - 当应用程序在 Android 设备上启动时,我看到 ClassNotFoundExceptions。
  • 并且使用 minifyenabled false 可以正常运行?
  • Kay> 我解压缩了导出的 apk,我没有看到任何属于构建类路径/导出配置的 jar - 没有包含这些 jar - 至少我没有看到尽管我的代码被混淆了。我没有在任何地方使用过 minifyenabled false(我不使用 gradle)
  • 嗯,这是有道理的。在基于 Gradle 的项目中,我通常为依赖包关闭 minifyenabled,只为我的主应用包打开。也许这对你也有帮助!

标签: android proguard android-proguard


【解决方案1】:

当您在导出时看到警告时,请确保所有支持库都在构建路径中可用。 您可以进一步抑制一些警告并摆脱它 - 见下文。

我的支持 jar 也被混淆了(不确定这是否正常),导致应用在运行时失败,所以我必须明确阻止它们的混淆 - 见下文。

project.properties

proguard.config=/myapp/proguard-project.txt
target=Google Inc.:Google APIs:22
android.library=false
android.library.reference.1=../../pathToLibrary

proguard-project.properties

#To prevent a warning message:
-dontwarn org.ietf.jgss.**

#To prevent supporting jars from getting obfuscated you would need something like:
-keep class javax.** { *; }
-keep class org.** { *; }
-keep class android.** { *; }

【讨论】:

    猜你喜欢
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-15
    • 2023-04-08
    • 1970-01-01
    • 2021-12-06
    相关资源
    最近更新 更多