1

将 DexGuard 与 android studio 一起使用时,我们一直需要在发布版本中包含一行,那就是

proguardFile getDefaultDexGuardFile('dexguard-release.pro')

我一直无法弄清楚如何更改 getDefaultDexGuardFile 查找 dexguard-release.pro 的路径,但到目前为止,它一直在我的 DexGuard 文件夹的 /lib 文件夹中正确搜索。

即使在 2 天前,使用 Android Studio 2.0.0 也很好。今天,我尝试构建另一个项目的发布版本,它之前在其中找到了 dexguard-release.pro(早期使用 Android Studio 1.5.0),现在它给出了

Warning:Exception while processing task java.io.FileNotFoundException: /lib/dexguard-release.pro (No such file or directory)

我该如何解决这个问题?似乎没有通过谷歌搜索(或官方 DexGuard 文档)解释 getDefaultDexGuardFile 的工作原理的文档 .. 它如何决定查看位置或如何更改它。此外,警告消息不是很有帮助,给出的似乎是部分路径 /lib/dexguard-release.pro 而不是它现在试图找到 dexguard-release.pro 的实际位置的完整路径

如果有人能告诉我如何获得对 getDefaultDexGuardFile 正在搜索的路径的一些控制..?

4

1 回答 1

2

首先确保您拥有 DexGuard 的所有必要设置。

在 Gradle 中使用 DexGuard 需要build.gradle文件中的 buildscript 设置:

buildscript {
    repositories {
        …
        // use your path to DexGuard library
        flatDir { dirs '/usr/local/DexGuard-7.1.02/lib' }
    }
    dependencies {
        …
        classpath ':dexguard:'
    }
}

然后应用 DexGuard 插件:

apply plugin: 'dexguard'

如果设置正常并且您仍然遇到getDefaultDexGuardFile()方法问题。您可以快速修复 - 忽略该方法并将 DexGuard 配置文件从 DexGuard 库的位置直接复制到您的项目中并直接引用它们。但请注意,配置文件可能会引用其他文件,因此您也必须复制它们。

还要检查您的 DexGuard 许可证是否有效。

也可能是 DexGuard 当前与您使用的 Gradle 版本或 Android 构建插件版本不兼容。我猜他们最近还在支持 Gradle 2.2,最近更新的 Android Studio 试图将其更新到 2.10 以启用 Instant Run(类似的情况是使用 Android 插件)。

于 2016-04-22T21:41:06.730 回答