proguardFile getDefaultDexGuardFile('dexguard-release.pro') 不再有效

proguardFile getDefaultDexGuardFile('dexguard-release.pro') no longer works

将 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)

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

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

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

在 Gradle 中使用 DexGuard 需要 build.gradle 文件中的构建脚本设置:

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 运行(类似的情况是 Android插件)。