web-dev-qa-db-fra.com

Erreur: L'exécution a échoué pour la tâche ': app: packageRelease'. > Impossible de calculer le hachage de /../AndroidStudioProjects/../classes.jar

J'essaie de créer une "version" à partir d'une application Android) et je continue à avoir l'erreur suivante:

Impossible de calculer le hachage de /../AndroidStudioProjects/../classes.jar

Et puis, quand je cherche dans le répertoire 'classes.jar', le fichier n'existe pas. Dois-je créer ce fichier moi-même avec une tâche Gradle?

Il se passe quelque chose avec proguard ici, mais cela ne donne pas beaucoup d'informations utiles autres que "Impossible de calculer le hachage ..."

Voici mon fichier 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'
}

Si quelqu'un pouvait m'aider à résoudre ce problème, ce serait formidable.

47
Jamaal

J'ai compris le problème:

Ouvrez le proguard-rules.pro pour votre projet et ajoutez ceci au bas:

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

Fondamentalement, comment j'ai résolu ce problème, j'ai essayé d'exécuter mon application en mode 'release' et j'ai eu un tas d'erreurs similaires à ce type ici: https://github.com/square/okio/issues/144

J'ai suivi à peu près ce qu'il a dit et je l'ai corrigé.

J'espère que cela pourra aider les autres à générer leurs fichiers APK!

20
Jamaal

Toutes les réponses actuelles à cette question ne font que donner les règles Proguard qui ont fonctionné pour eux, chaque correctif sera différent. Tout d’abord, confirmez que c’est un problème de Proguard en vérifiant que le répertoire classes-proguard figure quelque part dans le message d’erreur, comme suit: Unable to compute hash of /Users/Documents/projectX/app/build/intermediates/classes-proguard/release/classes.jar

Cela signifie que cela est dû à une erreur antérieure de Proguard. Vous devez donc faire défiler l'écran vers le haut dans la fenêtre Messages ou dans la fenêtre de la console Gradle et vérifier les avertissements ou les erreurs que vous obtenez. À titre d'exemple, dans mon projet actuel, la bibliothèque Picasso de Square est à l'origine de l'erreur: Warning: com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.OkHttpClient. Je viens d'ajouter -dontwarn com.squareup.okhttp.** pour ignorer les avertissements, et l'application fonctionne toujours normalement.

Un grand nombre des erreurs Proguard seront des avertissements concernant une classe. Il suffit donc d'ajouter -dontwarn pour la classe qui la cause dans votre projet.

Je sais que la méthode StackOverflow n’est que le message d’erreur de Google. Copiez et collez la première réponse et espérez que tout ira pour le mieux.

41
georgiecasey

Pour moi, les 2 lignes suivantes à l'intérieur de proguard.cfg m'ont aidé:

 -keep class com.google.Android.gms.** { *; }
 -dontwarn com.google.Android.gms.**
21
goRGon

Je sais qu'il y a déjà une réponse ici, mais ma situation était un peu différente et je voulais la partager.

Pour moi, le fichier de progression de mon projet, à savoir, proguard-rules.pro, a été renommé en quelque sorte proguard-Android.txt.

Le proguard-Android.txt est réservé aux règles de proguard par défaut d'Android. Je remplaçais donc le fichier de proguard d'Android, qui causait des dégâts, et j'obtiendrais le message Impossible de calculer le message de hachage.

Une fois que j'ai changé le nom de fichier dans mon projet de proguard-Android.txt à proguard-rules.pro J'ai pu faire fonctionner les choses.

3
WindsurferOak

Je sais que c'est une vieille question, mais peut-être que cette réponse convient à quelqu'un. J'ai ajouté -dontwarn butterknife.** pour progresser, puis graver correctement.

1
mavixce

La désactivation de l’option minifyEnabled de mon fichier Gradle a corrigé l’erreur dans ma construction.

build.gradle

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