错误:执行任务':app:packageRelease'失败。 >无法计算/../AndroidStudioProjects/../classes.jar的散列

我正在尝试在Android应用上进行“发布”构build,并且一直在收到以下错误:

无法计算/../AndroidStudioProjects/../classes.jar的哈希值

然后当我查看该目录中的“classes.jar”文件不存在。 我需要自己创build这个文件吗?

这里有一些关于proguard的内容,但除了“无法计算哈希…”之外,没有提供太多有用的信息。

这是我的gradle.build文件:

apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' android { compileSdkVersion 22 buildToolsVersion "22.0.1" defaultConfig { applicationId "com.example" minSdkVersion 11 targetSdkVersion 22 versionCode 1 versionName "1.0" } buildTypes { debug { buildConfigField "String", "SERVER_URL", '"http://10.0.2.2:3000"' } release { buildConfigField "String", "SERVER_URL", '"https://example.com"' minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debugRelease { buildConfigField "String", "SERVER_URL", '"https://example.com"' debuggable true jniDebuggable false renderscriptDebuggable false minifyEnabled false zipAlignEnabled true } } productFlavors { } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.1.1' compile 'com.android.support:recyclerview-v7:22.1.1' compile 'com.android.support:cardview-v7:22.1.1' compile 'com.google.android.gms:play-services-gcm:7.5.0' } 

如果有人可以帮我debugging这个问题,那就太好了。

目前对这个问题的所有答案只是给予他们的Proguard规则,每一个解决scheme将是不同的。 首先,通过检查classes-proguard目录是否在错误信息中的某处,确认它是一个Proguard问题,如下所示: Unable to compute hash of /Users/Documents/projectX/app/build/intermediates/classes-proguard/release/classes.jar

这意味着它是由较早的Proguard错误引起的,因此您需要在“消息”窗口或“Gradle控制台”窗口中向上滚动,并检查您所得到的警告或错误。 举个例子,在我目前的项目中,Square的Picasso库导致错误: Warning: com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.OkHttpClient 。 我刚刚添加了-dontwarn com.squareup.okhttp.**忽略警告,并且应用程序仍然正常工作。

很多Proguard错误将会对某些类进行警告,所以只需在项目中经常使用的任何类中添加-dontwarn即可。

我知道StackOverflow的方式只是Google的错误信息,复制和粘贴顶部的答案,并希望最好的,但在这里你已经了解了一下,并找出你的proguard规则!

对于我来说proguard.cfg里面的以下两行帮助:

  -keep class com.google.android.gms.** { *; } -dontwarn com.google.android.gms.** 

我想出了问题:

打开你的项目proguard-rules.pro并添加到底部:

 -dontwarn java.nio.file.Files -dontwarn java.nio.file.Path -dontwarn java.nio.file.OpenOption -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement 

基本上我是如何解决这个问题的,我试图在'释放'模式下运行我的应用程序,并得到了一堆类似于这个人的错误: https : //github.com/square/okio/issues/144

我几乎遵循他所说的并修正了它。

希望这可以帮助其他人生成他们的APK!

我知道这里已经有了答案,但是我的情况有点不同,我想分享一下。

对我来说,我的项目的proguard文件,即proguard-rules.pro ,不知何故更名为proguard-android.txt

proguard-android.txt保留给Android默认的proguard规则,所以基本上,我重写了Android的proguard文件,这是造成浩劫,我会得到无法计算哈希消息

一旦我将我的项目中的文件名从proguard-android.txt更改为proguard-rules.pro我就能够正常工作。

从我的gradle文件禁用minifyEnabled选项更正了我的版本中的错误。

的build.gradle

 buildTypes { release { // DISABLE OPTION //minifyEnabled true proguardFiles 'proguard.cfg' } } 

我知道这是一个老问题,但也许这个答案适用于某人。 我加了-dontwarn butterknife.** ,然后gradle正确的build立起来。