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.
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!
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.
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.**
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.
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.
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'
}
}