【问题标题】:Dexguard in a library project图书馆项目中的 Dexguard
【发布时间】:2016-09-22 16:13:07
【问题描述】:

我正在从 Dexguard 6 升级到 7,并且有一个关于库混淆的问题。使用 Dexguard 6,我可以混淆我的库,它是 Android Studio 中的一个模块,然后在我的应用程序中使用这个模块,并将其作为本地依赖项:

dependencies {
    compile project(':sdk')
}

但是,当我尝试使用 Dexguard 7.0.31 执行此操作时,出现异常:

任务“:sdk:transformClassesAndResourcesWithProguardForRelease”执行失败。 > java.io.FileNotFoundException: /lib/dexguard-library-release.pro (没有这样的文件或目录)

【问题讨论】:

  • 您是否检查了文件 DEXGUARD-FOLDER/lib/dexguard-library-release.pro 是否存在。如果是这样,那么你在 Gradle 中设置了错误的 DexGuard,如果没有,则从 DexGuard zip 文件中复制它。
  • 它是我在 gradle.build 中添加的 dexguard.jar 的一部分:flatDir { dirs 'dexguard/7.0.31/' }。它适用于应用程序,但不适用于本地库项目。
  • 编译库时使用 dexguard-library-release.pro 文件而不是 dexguard-release.pro 文件。只需确保文件存在即可。
  • 那个文件是 dexguard.jar 的一部分吧?
  • 没有。它包含在 lib 目录中的所有 DexGuard 文件中。它只是 DexGuard 用于库的默认配置。当您调用 getDefaultDexGuard 时,您在 Gradle 中引用它...

标签: android proguard obfuscation dexguard


【解决方案1】:

您可能在您的库项目中设置了minifyEnabled true,这将无法与 DexGuard 结合使用。只需将标志设置为false 就可以了。

最新版本的 DexGuard 将检查标志并发出错误。

【讨论】:

  • 配置是这样的,库中的dexguard和使用库的应用中的proguard。
  • @Elias 你找到任何解决方案了吗?
  • 我的问题实际上是 android gradle 插件和 dexguard 不匹配。检查 dexguard 网站支持哪些插件 ;-) 并在需要时更新。
猜你喜欢
  • 1970-01-01
  • 2016-02-05
  • 1970-01-01
  • 2016-12-08
  • 1970-01-01
  • 1970-01-01
  • 2016-07-11
  • 2012-11-09
  • 2012-05-11
相关资源
最近更新 更多