在Android工作室中使用DexGuard时,我们一直需要为我们的发布版本添加一行,并且
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正在搜索的路径..?
答案 0 :(得分:1)
首先确保您拥有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插件)。