web-dev-qa-db-fra.com

Proguard garder les noms de classe?

Bonjour, j'écris une application Android et j'ai configuré Proguard pour masquer mon application. J'utilise cependant un chargeur de classe pour charger dynamiquement différentes extensions dans mon application. Le problème est que celles-ci ne se chargent pas correctement si leurs noms sont modifiés. Comment empêcher Proguard de masquer des noms de classe spécifiques?

26
Nik

Utilisez le -keepnames option dans votre proguard.cfg

Reportez-vous au manuel https://www.guardsquare.com/en/proguard/manual/usage#keepoptions :

-keepnames spécification_classe

Court pour -keep,allowshrinking spécification_classe

Spécifie les classes et les membres de classe dont les noms doivent être conservés, s'ils ne sont pas supprimés dans la phase de réduction. Par exemple, vous souhaiterez peut-être conserver tous les noms de classe des classes qui implémentent l'interface Serializable, afin que le code traité reste compatible avec toutes les classes sérialisées à l'origine. Les classes qui ne sont pas utilisées du tout peuvent toujours être supprimées. Uniquement applicable en cas d'obscurcissement.

37
Zaid Daghestani

Cela conserve les noms de classe intacts:

-keepnames class com.somepackage.* 
30
tarkeshwar

Astuce pratique pour tous ceux qui ne veulent pas que ProGuard change tout nom de classe:

# please KEEP ALL THE NAMES
-keepnames class ** { *; }

De cette façon, vous obtiendrez des traces de pile lisibles tout en jetant les choses dont vous n'avez pas besoin. :-)

7
mreichelt

Si quelqu'un souhaite savoir comment spécifier plusieurs noms de classe à conserver, ces classes peuvent être séparées par une virgule. Exemple:

-keepnames class com.foo.**,com.bar.** { *; }

Il est également possible d'utiliser la négation avec cela, car généralement les propres classes qui doivent être obscurcies, les bibliothèques tierces du système d'exploitation peuvent être conservées:

-keepnames class !com.foo.**,!com.bar.** { *; }

Voir Proguard Documentation pour cela.

0
k_o_