错误:任务':app:packageRelease'的执行失败.>无法计算/../AndroidStudioProjects/../classes.jar的哈希值

Jam*_*aal 47 java android gradle build.gradle android-gradle-plugin

我正在尝试在Android应用上进行"发布"构建,并且我不断收到以下错误:

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

然后,当我查看'classes.jar'的目录时,文件不在那里.我是否必须自己使用gradle任务创建此文件?

这里有一些关于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'
}
Run Code Online (Sandbox Code Playgroud)

如果有人可以帮我调试这个问题,那就太好了.

geo*_*sey 41

目前这个问题的所有答案都只是给出了适用于他们的Proguard规则,每个解决方案都会有所不同.首先,通过检查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就可以在项目中添加-dontwarn.

我知道StackOverflow方式只是谷歌的错误信息,复制并粘贴最佳答案并希望最好,但在这里你要了解它并找出适合你的规则!


goR*_*Gon 21

对我来说,proguard.cfg中的以下两行帮助:

 -keep class com.google.android.gms.** { *; }
 -dontwarn com.google.android.gms.**
Run Code Online (Sandbox Code Playgroud)


Jam*_*aal 20

我解决了这个问题:

打开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
Run Code Online (Sandbox Code Playgroud)

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

我几乎跟着他说的话并修好了.

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

  • 在proguard-android.txt中添加这些行后,我仍然遇到同样的错误 (5认同)