我需要启用proguard,所以我将minifyEnabled设置为true。但是,我在尝试构建发布APK时遇到以下错误:
错误:任务':app:packageRelease'执行失败。 无法计算... / app / build / intermediates / classes-proguard / release / classes.jar的哈希
编辑:听起来我需要根据我使用的库更新我的proguard规则。以下是我的依赖项:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.0'
compile 'com.jakewharton:butterknife:7.0.1'
compile 'com.parse.bolts:bolts-android:1.+'
compile 'com.parse:parse-android:1.+'
compile('com.crashlytics.sdk.android:crashlytics:2.5.2@aar') {
transitive = true;
}
compile('com.mopub.sdk.android:mopub:4.0.0@aar') {
transitive = true;
}
}
了解每种产品的proguard规则的最佳方法是什么?到目前为止,我只找到了ButterKnife的
答案 0 :(得分:11)
-dontwarn 一切都可能导致另一个问题,如果必要的依赖项被剥离而不会抛出错误。
您最好的办法是通过检查日志输出(或在此处发布以便有人可以查看)找到阻止构建的库,然后使用 -keep 进行配置或者 -dontwarn 根据需要,在 proguard-rules.pro 文件中。
在大多数情况下,人们之前已经为你正在使用的相同库做了这个,你只需找到一个示例规则文件并查看他们的配置来了解它是如何完成的,like this one for OkHttp,并且团队经常在GitHub like this one for Retrofit上的图书馆项目的设置部分中有这个。