J'ai une bibliothèque qui est sur le point d'être obscurcie en utilisant ProGuard. Le "mode bibliothèque" est presque applicable pour mon cas d'utilisation, c'est-à-dire qu'il est presque correct de conserver toutes les classes publiques et protégées et les membres de la classe. Cependant, en raison des exigences de visibilité de Java, certains membres ne peuvent pas être rendus privés ou privés et sont donc des classes publiques, bien qu'ils ne devraient pas être dans la bibliothèque. Je voudrais les avoir obscurcis pour qu'il soit plus clair que ces classes n'appartiennent pas à l'API publique, ainsi que pour obtenir une meilleure obfuscation et de plus petits pots de bibliothèque. Existe-t-il un moyen d'exclure certains éléments d'une règle proguard "keep" sans en spécifiant chacun de ces éléments par nom (en utilisant le '!'). Idéalement, je voudrais annoter ces classes et membres avec une annotation de marquage, mais autant que je sache, Proguard peut seulement être dit à garder éléments avec certaines annotations.Exclure certaines classes des règles de conservation de Proguard
Répondre
Vous pouvez uniquement garder éléments en effet. Si vous souhaitez exclure certains membres de la classe, vous devez le faire en listant ou en annotant les membres de la classe que vous souhaitez conserver. Lorsque vous spécifiez un nom de classe, vous pouvez fournir une liste, facultativement avec "!" pour exclure les noms. Lorsque vous spécifiez un nom et un type de membre de classe, cela n'est pas possible. Cependant, dans les deux cas, vous pouvez utiliser des caractères génériques. Si vous choisissez des noms spéciaux pour vos classes internes, cela pourrait fonctionner:
-keep public class * {
public protected *** !myInternalField*;
public protected *** !myInternalMethod*(...);
}
Merci. Marquer comme une réponse, même si malheureusement, il ne répond pas vraiment à ma question, mais il me dit que ce n'est pas actuellement supporté. – Sebastian
- 1. Log4j - Exclure la journalisation de certaines classes
- 2. Comment exclure des fichiers .so de proguard?
- 3. Comment exclure/renommer certaines classes de l'importation dans Scala?
- 4. Exclure une méthode à Proguard obfuscation
- 5. Proguard - garder des classes reflétées/introspectées
- 6. Comment exclure un répertoire des règles mod_rewrite?
- 7. Comment exclure des règles spécifiques de styleCop de manière permanente?
- 8. Désactiver certaines règles CSS
- 9. Options de proguard Android - Règles plus strictes et suppression des relevés de journaux
- 10. Exclure la macro de certaines feuilles
- 11. wget pour exclure certaines structures de nommage
- 12. Android - exclure la bibliothèque (pot) classe de ProGuard
- 13. Exclure certaines pages de l'utilisation d'un HTTPModule
- 14. Permutations de 20 éléments, remplissant certaines règles
- 15. Exclure certaines fonctions des résultats de la couverture gcov/lcov
- 16. Exclure le script batch batch des fichiers de certaines extensions
- 17. Comment puis-je exclure des liens qui ont certaines classes d'un .on (clic
- 18. Pouvons-nous rétrécir toutes les classes, mais en masquer seulement certaines avec proguard?
- 19. Exclure certaines parties de la page de pagelinks dans MediaWiki
- 20. Puis-je exclure certaines méthodes de l'instanciation de modèle manuelle?
- 21. Exclure les règles de FXCop via la ligne de commande
- 22. django: modèle de conservation des fichiers temporaires
- 23. Exposer des classes internes en s'obscurcissant avec ProGuard
- 24. Proguard Android n'obscurcit rien sauf quelques classes
- 25. Comment exclure un élément spécifique de l'héritage de règles CSS?
- 26. Différentes règles de validation sur certaines modifications d'options [Yii]
- 27. Conservation des sauvegardes
- 28. Exclure certaines entrées d'une liste Stash
- 29. Empêcher le proxy AOP de certaines classes
- 30. certaines classes avec jQuery
Je fini annoter les éléments en question et a écrit un petit processeur d'annotation qui déverse le fichier de configuration de ProGuard où tous les membres à garder sont énumérés un par un en utilisant ma logique personnalisée: Ajouter tous les membres efficacement public/protégé qui n'ont pas cette annotation. – Sebastian