J'utilise Android Studio 1.2.2 et j'ai essayé de générer l'APK avec le paramètre proguard. Mais je ne peux pas le faire et j'ai obtenu un message d'erreur ci-dessous.
"L'exécution a échoué pour la tâche ': packageRelease'.
Impossible de calculer le hachage de /Users/Documents/projectX/app/build/intermediates/classes-proguard/release/classes.jar "
Le réglage de proguard est simple.
-dontshrink
-dontoptimize
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
Et le fichier gradle est ci-dessous.
apply plugin: 'com.Android.application'
apply plugin: 'com.google.gms.google-services'
Android {
compileSdkVersion "Google Inc.:Google APIs:22"
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.bientus.cirque.sansotong"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
// multiDexEnabled true
}
buildTypes {
debug {
debuggable true
}
release {
minifyEnabled true
//proguardFiles 'proguard-project.txt', 'proguard.cfg'
//proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-project.txt', 'proguard.cfg'
proguardFiles 'proguard-project.txt'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.Android.support:appcompat-v7:22.0.0'
compile "com.google.Android.gms:play-services:7.5.0"
// compile 'com.Android.support:multidex:1.0.0'
}
buildscript {
repositories {
// mavenCentral()
jcenter()
}
dependencies {
classpath 'com.Android.tools.build:gradle:1.2.3'
classpath 'com.google.gms:google-services:1.3.0-beta1'
}
}
Quelqu'un peut-il donner une idée ou une pensée? Merci beaucoup!
Ajoutez simplement les règles de progression du projet:
-keep public class com.google.Android.gms.**
-dontwarn com.google.Android.gms.**
Cela a fonctionné après avoir défini les éléments suivants dans 'proguard-project.txt'. Évidemment, le gradle doit être défini pour ce fichier.
-dontwarn Android.support.v7.**
-keep class Android.support.v7.** { *; }
-keep interface Android.support.v7.** { *; }
Regardez votre sortie de build. Vous pourriez y avoir des avertissements de proguard, comme si vous avez 2 bibliothèques qui partagent une certaine classe (avec des versions potentiellement différentes).
Cela pourrait empêcher proguard de calculer un hachage.
J'ai eu le même problème en ayant à la fois openIAB et opfIAB (tous deux utilisent Amazon et google IAB) dans ma version. La suppression d'une de ces bibliothèques a résolu mon problème
D'ACCORD! c'est très facile ! étape par étape: build.gradle: minifyEnabled false -> minifyEnabled true proguard-rules.pro: vous devez ajouter les troisièmes bibliothèques que vous utilisez dans votre projet comme piccaso et etc. si vous le faites dans Android studio, il décline ces fichiers.
-dontwarn Android.support.**
-dontwarn com.github.**
-dontwarn com.squareup.picasso.**
-dontwarn com.etsy.Android.grid.**
ça marche :)
J'ai aussi eu le problème et la meilleure façon de le résoudre est: allez dans la console Gradle et voyez où il y a un avertissement, par exemple
Avertissement: com.squareup.picasso.OkHttpDownloader: impossible de trouver la classe référencée com.squareup.okhttp.OkHttpClient
Maintenant, ouvrez le fichier de règles proguard et faites défiler vers le bas et ajoutez la ligne
-dontwarn com.squareup.okhttp.**
Pour toutes les classes manquantes que vous trouvez sur la console Gradle, vous ajoutez essentiellement la ligne
-dontwarn followed by class name
J'espère que cela fonctionne aussi pour tout le monde. Bonne chance!