10
votes

Comment dire à PROGUARD d'obscurier la méthode et les noms de classe?

J'utilise Proguard pour obscurcir mon APK, mais il n'y a pas de changements dans les noms de classe et de méthode - ils sont les mêmes qu'auparavant. Seuls les noms variables sont modifiés.

La plupart d'entre eux ne prolonge pas les classes comme l'activité; Il y a un certain héritage dans mon code, mais c'est écrit à 100% par moi-même.

J'utilise d2j-dex2jar et JD-GUI pour vérifier les résultats.

Certains classes sont exclus car de GSON Usage, voici mon proguard-project.txt: xxx


2 commentaires

Avez-vous activé PROGUARD en mode de sortie ?. Vous pouvez également extraire les fichiers d'APK et vérifier si vos fichiers Java sont obscurcissés.


Je suppose que oui, car il y a des noms de variables obscurcissés, donc proguard est en cours d'exécution


3 Réponses :


10
votes

Si vous avez ce problème avec les composants (activité, services ou diffèves) classes, alors cela va bien.

PROGUARD n'a pas obscurcissant les noms des composants.

et si vous prenez les classes définies comme xxx

aussi leur nom ne peut pas être modifié, à cause de garder option.


Essayez d'essayer d'enlever Classe publique * {Public Protégé *; } ligne


5 commentaires

Il y a une activité pour Andengine, et c'est presque tout. Le reste des classes est 100% personnalisé.


Ces classes ne peuvent pas être obscurcies à cause de la sérialisation du Gson, mais il y a beaucoup d'autres classes qui devraient être obscurcies et elles ne sont pas - celles qui contiennent une partie logique du jeu.


D'ACCORD. Droit. Essayez d'essayer avec la suppression la classe publique * {Public protégé *; } ligne ...


Okey, maintenant ils sont obscurcissés. J'ai besoin d'ajouter d'autres exclus et tout devrait fonctionner bien.


Dans la barre d'action Android, l'ajout d'un élément de menu dans la méthode de la barre d'action doit être exclu. J'ai essayé d'exclure la classe de méthodes addmenuitem, mais l'élément de menu n'est toujours pas affiché dans le fichier JAR Obfuscated. Comment puis-je atteindre l'obfuscation sans affecter la classe et la méthode de menu de barres d'action. Dans la liaison ci-dessous, Spécifie doit exclure la méthode. développeur.android.com/Guide/topics/resources/menu-resource. h tml



2
votes

Un nom de classe de temps OBFUSCUSATION NE FONCTIONNE PAS FONCTIONNEZ UNE CAUSE DE "BOTTEKNIFE" Ajoutez donc des règles ci-dessous dans votre fichier PROGUARD.

# Butterknife
-dontwarn butterknife.internal.**
-keep class butterknife.** { *; } 
-keep class **$$ViewInjector { *; }
-keepclasseswithmembernames class * {
    @butterknife.InjectView <fields>;
}
-keepclasseswithmembernames class * {
    @butterknife.OnClick <methods>;
    @butterknife.OnEditorAction <methods>;
    @butterknife.OnItemClick <methods>;
    @butterknife.OnItemLongClick <methods>;
    @butterknife.OnLongClick <methods>;
}


0 commentaires

1
votes

Les anciennes instructions de Butterknife de Butterknife Code défini pour PROGUARD provoquent ce problème, si vous utilisez Butterknife et une version plus ancienne comme la version 7, assurez-vous de ne pas avoir cette ligne dans vos règles projed xxx pré>

Ceci est à cause de tous les noms de classe ne pas être obscurcés. P>

Utilisez ci-dessous la configuration de la botterknife, c'est de mieux et de la preuve future à une autre suggestion. P>

# ButterKnife
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }

-keepclasseswithmembernames class * {
    @butterknife.* <fields>;
}

-keepclasseswithmembernames class * {
    @butterknife.* <methods>;
}


0 commentaires