Fehler:Ausführung für Aufgabe ‘:app:packageRelease’ fehlgeschlagen. > Hash von /../AndroidStudioProjects/../classes.jar kann nicht berechnet werden

Lesezeit: 5 Minuten

FehlerAusfuhrung fur Aufgabe apppackageRelease fehlgeschlagen Hash von AndroidStudioProjectsclassesjar kann
Jamaal

Ich versuche, einen ‘Release’-Build für eine Android-App zu erstellen, und erhalte immer wieder die folgende Fehlermeldung:

Hash von /../AndroidStudioProjects/../classes.jar kann nicht berechnet werden

Und wenn ich dann in diesem Verzeichnis nach ‘classes.jar’ suche, ist die Datei nicht da. Muss ich diese Datei bei einer Gradle-Aufgabe selbst erstellen?

Mit proguard ist hier etwas los, aber es gibt nicht viele nützliche Informationen außer ‘Hash kann nicht berechnet werden…’

Hier ist meine gradle.build-Datei:

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'
}

Wenn mir jemand helfen könnte, dieses Problem zu beheben, wäre das großartig.

Alle aktuellen Antworten auf diese Frage geben nur die Proguard-Regeln an, die für sie funktioniert haben, jeder Fix wird anders sein. Bestätigen Sie zunächst, dass es sich um ein Proguard-Problem handelt, indem Sie überprüfen, ob sich das Klassen-Proguard-Verzeichnis irgendwo in der Fehlermeldung befindet, etwa so: Unable to compute hash of /Users/Documents/projectX/app/build/intermediates/classes-proguard/release/classes.jar

Dies bedeutet, dass dies durch einen früheren Proguard-Fehler verursacht wurde. Sie müssen also im Nachrichtenfenster oder Gradle-Konsolenfenster nach oben scrollen und prüfen, welche Warnungen oder Fehler Sie erhalten. Nur als Beispiel verursacht in meinem aktuellen Projekt die Picasso-Bibliothek von Square den Fehler:
Warning: com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.OkHttpClient. Ich habe gerade hinzugefügt -dontwarn com.squareup.okhttp.** um die Warnungen zu ignorieren, und die App funktionierte weiterhin wie gewohnt.

Viele der Proguard-Fehler sind Warnungen vor einer Klasse, daher funktioniert das Hinzufügen von -dontwarn für jede Klasse, die es in Ihrem Projekt verursacht, oft.

Ich weiß, dass der StackOverflow-Weg nur darin besteht, die Fehlermeldung zu googeln, die oberste Antwort zu kopieren und einzufügen und das Beste zu hoffen, aber hier müssen Sie es ein wenig verstehen und die Proguard-Regeln für Sie herausfinden!

  • Und was ist, wenn keine Proguard-Fehler in den Message- oder Gradle-Konsolenfenstern oder beim Zusammenbau in der Befehlszeile auftreten? Keine Fehler vor “Hash kann nicht berechnet werden…”

    – Kevin Krumwiede

    13. Juni ’16 um 23:54

  • Übrigens hast du recht. Aber ich konnte es nur beheben, weil ich kürzlich eine Bibliotheksversion geändert habe, von der ich zufällig wusste, dass sie eine neue transitive Abhängigkeit hinzugefügt hat. (Weil ich die Bibliothek geschrieben habe.) Ich habe nie eine Fehlermeldung von Proguard gefunden.

    – Kevin Krumwiede

    14. Juni ’16 um 5:49

Ich habe das Problem erkannt:

Öffne die proguard-rules.pro für Ihr Projekt und fügen Sie dies unten hinzu:

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

Im Grunde habe ich es so gelöst, dass ich versucht habe, meine App im ‘Release’-Modus auszuführen, und eine Reihe von Fehlern erhalten, die denen hier ähnlich sind: https://github.com/square/okio/issues/144

Ich folgte ziemlich genau dem, was er sagte und korrigierte es.

Ich hoffe, dies kann anderen beim Generieren ihrer APKs helfen!

  • Ich erhalte immer noch den gleichen Fehler, nachdem ich diese Zeilen in proguard-android.txt hinzugefügt habe

    – Manish Agrawal

    15. Okt ’15 um 8:19

  • Hier gilt das gleiche. Ich bekam den Fehler auch nachdem ich diese Zeilen zu pro-gurad hinzugefügt hatte. Ich musste das Projekt sauber neu erstellen, um einige der Fehler zu beheben, die während der Kompilierung aufgetreten sind. Ironischerweise wurden diese Fehler beim Generieren eines signierten Builds nicht angezeigt.

    – Nilesh Pawar

    21. Okt ’15 um 15:09

  • Für Neuankömmlinge: siehe eine Antwort von @georgiecasey für seine Lösung. Versuchen Sie nicht zu erraten, welche Klassen benötigt werden, um nicht zu warnen.

    – CoolMind

    28. Januar ’16 um 12:06


Für mich die folgenden 2 Zeilen drin proguard.cfg geholfen:

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

  • es gibt keine proguard-cfg im modernen android studio

    – Bibaswann Bandyopadhyay

    16. Okt ’15 um 11:04

  • Der Dateiname ist nicht wichtig. Es könnte sein, was Sie wollen. Wenn es noch keine Konfiguration für proguard gibt, können Sie in Ihrer build.gradle einfach die folgende Zeile hinzufügen: proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard.cfg’

    – goRGon

    19. Okt. 15 um 20:56 Uhr


  • Das hat bei mir funktioniert. Wie hast du es herausgefunden? Ich habe keine Fehler über der Hash-Nachricht “unfähig zu berechnen” gesehen. Keine Ahnung wie ich das alleine beheben soll.

    – Barodapride

    9. März ’16 um 2:51

  • Ich habe mir nur verschiedene Stackoverflow-Antworten angesehen und versucht, die Hauptidee von ihnen zu erhalten =)

    – goRGon

    10. März ’16 um 0:08

Ich weiß, dass es hier schon eine Antwort gibt, aber meine Situation war etwas anders und ich wollte sie teilen.

Für mich ist die proguard-Datei meines Projekts, nämlich proguard-rules.pro, wurde irgendwie umbenannt in proguard-android.txt.

Der proguard-android.txt ist für die Standard-Proguard-Regeln von Android reserviert, also habe ich im Wesentlichen die Proguard-Datei von Android überschrieben, was Chaos anrichtete, und ich würde die bekommen Hash-Nachricht kann nicht berechnet werden.

Sobald ich den Dateinamen in meinem Projekt geändert habe von proguard-android.txt zu proguard-rules.pro Ich konnte Dinge zum Laufen bringen.

Ich weiß, dass dies eine alte Frage ist, aber vielleicht funktioniert diese Antwort für jemanden. Ich fügte hinzu -dontwarn butterknife.** zu proguard baut dann gradle richtig.

FehlerAusfuhrung fur Aufgabe apppackageRelease fehlgeschlagen Hash von AndroidStudioProjectsclassesjar kann
Amit Kumar Parjapati

Für mich zeigt es den gleichen Fehler, den ich gelöst habe. Stellen Sie sicher, dass Sie das richtige Keystore-Passwort in der Datei haben

mobileandroidgradle.properties 
MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore
MYAPP_UPLOAD_KEY_ALIAS=my-key-alias
MYAPP_UPLOAD_STORE_PASSWORD=yourpassword
MYAPP_UPLOAD_KEY_PASSWORD=yourpassword

Erstellen Sie einfach eine Datei proguard-rules.pro und fügen Sie “-dontwarn package names” hinzu, die Sie in der Nachricht gewarnt haben.

.

206970cookie-checkFehler:Ausführung für Aufgabe ‘:app:packageRelease’ fehlgeschlagen. > Hash von /../AndroidStudioProjects/../classes.jar kann nicht berechnet werden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy