web-dev-qa-db-fra.com

Android Studio & ProGuard: impossible de résoudre le symbole getDefaultProguardFile?

IDE: Android Studio 1.1.0

Sujet : ProGuard

Problème : Les fichiers ou outils ProGuard non reconnus par Android Studio, getDefaultProguardFilene peuvent pas être résolus et il n'y a pas de fichiers proguard-Android.txt et proguard-rules.txt dans l'application, voir l'image ci-dessous:

build.gradle screenshot

Comment résoudre ce problème et obtenir la protection ProGuard de mon application?

27
Fadi Obaji

Essayez de changer en -

proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
6
Amit K. Saha

J'ai eu le même problème que celui montré ici: 

 enter image description here

Le message d'erreur donne l'impression que le fichier n'est pas trouvé, et donc pas lu. Cependant, je suis allé dans le dossier sdk/tools/proguard pour trouver le fichier et, en haut, j'ai ajouté une déclaration pour vérifier si le fichier était en train d'être lu. Je mets en haut "Est-ce que ça va planter?" 

 enter image description here

Comme vous pouvez le constater, le fichier a bien été trouvé pendant le processus de construction et l’instruction que j’ai ajoutée l’a écrasé. Ainsi, il apparaît que l’erreur "impossible à résoudre le symbole" donne un faux positif. 

8
NameSpace

J'ai vraiment eu le même problème. Voici donc ce qui a fait que mon projet fonctionne:

release {
    minifyEnabled true
    proguardFile 'proguard-rules.pro'
}

Testé par ce code:

 Log.d(TAG, "TEST!");
 Log.i(TAG, "INFO!");
 Log.e(TAG, "ERROR!");

Dans proguard.pro, j'ai placé cet extrait (qui supprime toutes les instructions Log.d- du code d'octet).

-assumenosideeffects class Android.util.Log {
    public static int d(...);
}

Et le chat dit:

MainAct﹕ INFO!
MainAct﹕ ERROR!

-> exactement ce que j'ai essayé de réaliser :)

PS: Cela suppose que vous avez le fichier proguard.pro dans le dossier du module (également appelé «app»).

4
Martin Pfeffer

Essayer:

proguardFiles.add(file('proguard-Android.txt')) proguardFiles.add(file('proguard-rules.txt'))

Cette structure fonctionne dans le plugin gradle-experimental .

1
IgorGanapolsky

J'ai résolu le problème d'Android Studio qui ne reconnaissait pas la méthode en utilisant des guillemets au lieu du simple. Voici ce que j'ai fini par utiliser:

    release{
        shrinkResources true
        minifyEnabled true
        proguardFiles getDefaultProguardFile("proguard-Android.txt"),
                "proguard-rules.pro"
    }
0
Marvin

essaye ça,

{
  minifyEnabled false
  // proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro' 
  proguardFiles 'proguard-rules.pro'
}
0
Suman Dev