2016-04-22 110 views
1

當使用DexGuard與Android工作室,有一條線,我們始終需要包括我們的發佈版本,這是proguardFile getDefaultDexGuardFile(「dexguard-release.pro」)不再有效

proguardFile getDefaultDexGuardFile('dexguard-release.pro') 

我從來沒有已經能夠找出如何更改getDefaultDexGuardFile尋找dexguard-release.pro的路徑,但到目前爲止,它一直在我的DexGuard文件夾的/ lib文件夾中正確搜索。

即使在2天前,Android Studio 2.0.0也沒問題。今天,我想建立另一個項目,它已經發現之前dexguard-release.pro的發佈版本(採用Android 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正在搜索的路徑的一些控制權。

回答

1

首先確保您擁有DexGuard的所有必要設置。

在搖籃使用DexGuard需要buildscript設置在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 Run(類似的情況與Android插件)。

+0

感謝您的建議。 Buildscript設置和「apply plugin」都很好(與以前一樣工作),並且許可證也是有效的(否則,它會給出不同的錯誤消息)。但是,你的第三個建議可能是對的。 Android Studio建議我升級到2.10以啓用Instant Run。有沒有辦法向DexGuard的製造商提交錯誤報告?我想我會像你建議的那樣從DexGuard庫中複製DexGuard配置文件,作爲現在的一個快速修復。 – auspicious99

+2

原來,在構建gradle中,它指定了DexGuard 7.0.26的路徑。當我將其更改爲DexGuard 7.1時,錯誤消失了。注意自我:在發佈到stackoverflow之前總是嘗試最新版本的DexGuard。 – auspicious99