web-dev-qa-db-fra.com

FileNotFoundException sur le fichier proguard-rules.pro

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

9
Rikki Tikki Tavi

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.** { *; }
3
Rikki Tikki Tavi

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.

8
Andrey
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:

  1. 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.
  2. 'proguard-rules.pro': Il contient le script proguard spécifique à votre application. Vous devez créer ce fichier dans le dossier racine de votre application . Tous les programmes spécifiques à votre application doivent se trouver dans De ce fichier.
4
Sagar Trehan

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.

1
user3068659

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
0
cici

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