J'utilise Android Studio v.1.0 Mon fichier de construction:
buildTypes {
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
mais lorsque j'essaie de créer une version validée, j'obtiens une erreur: Erreur: l'exécution a échoué pour la tâche ': app: proguardRelease'.
Java.io.FileNotFoundException: F: ....\app\proguard-rules.pro (fichier introuvable)
Je pense que proguard-Android.txt fait partie du SDK Android, ai-je raison?
Et pourquoi Android Studio ne le trouve pas?
J'ai aussi essayé proguard-Android.pro - le même résultat
J'ai créé mon propre fichier proguard-Android.pro et cela fonctionne correctement pour moi:
-dontwarn org.Apache.commons.**
-dontwarn com.google.**
-dontwarn com.j256.ormlite**
-dontwarn org.Apache.http**
-keepattributes SourceFile,LineNumberTable
-keep class com.j256.**
-keepclassmembers class com.j256.** { *; }
-keep enum com.j256.**
-keepclassmembers enum com.j256.** { *; }
-keep interface com.j256.**
-keepclassmembers interface com.j256.** { *; }
-keepattributes Signature
# GSON Library
# For using GSON @Expose annotation
-keepattributes *Annotation*
# Gson specific classes
-keep class Sun.misc.Unsafe { *; }
#-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.Android.model.** { *; }
# Google Map
-keep class com.google.Android.gms.maps.** { *; }
-keep interface com.google.Android.gms.maps.** { *; }
Si vous n'avez besoin d'aucune configuration ProGuard spécifique:
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-Android.txt')
}
}
(L'avertissement peut arriver)
Ou spécifiez "règles" et mettez-le ici:
.../app/proguard-rules.pro
Par exemple, j'utilise "Butter Knife" et mon proguard-rules.pro ressemble à:
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewInjector { *; }
-keepclasseswithmembernames class * {
@butterknife.* <fields>;
}
-keepclasseswithmembernames class * {
@butterknife.* <methods>;
}
Ou peut-être pouvez-vous laisser le fichier build.gradle tel quel (si vous n'aimez pas les avertissements)), et placez simplement un proguard-rules.pro vide à cet emplacement.
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
La ligne suivante dans le fichier build.gradle de votre module d'application indique que le script de proguard doit s'appliquer à votre version finale. Il a deux fichiers:
proguard-Android.txt
: est le fichier de progression Android par défaut. Ce fichier peut être situé dans le répertoire D:\SDK\tools\proguard du SDK.veuillez vérifier votre 'proguard-rules.pro' dans le dossier de votre projet racine. Si votre projet est exporté d’Eclipse, vous devez créer «proguard-rules.pro» dans le dossier racine du projet.
Une solution de contournement consiste à télécharger l'un des éléments suivants:
http://dl.google.com/Android/android-sdk_r22.6.2-linux.tgz
http://dl.google.com/Android/android-sdk_r22.6.2-windows.Zip
http://dl.google.com/Android/android-sdk_r22.6.2-macosx.Zip
Et copier sur les fichiers suivants:
tools/hprof-conv
tools/support/annotations.jar
tools/proguard
J'espère que cette réponse sera utile à l'avenir
GoTo build.gradle(Module:app)
Supprimer cette partie de buildTypes
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}