Hola, estoy escribiendo una aplicación de Android y he configurado Proguard para ofuscar mi aplicación. Sin embargo, uso un cargador de clases para cargar dinámicamente diferentes extensiones a mi aplicación. El problema es que estos no se cargan correctamente si cambian sus nombres. ¿Cómo evito que Proguard ofusque nombres de clases específicos?Proguard mantener los nombres de las clases?
Respuesta
Utilice la opción -keepnames
en su proguard.cfg
Consulte el manual de https://www.guardsquare.com/en/proguard/manual/usage#keepoptions:
-keepnames
class_specificationcorto para
-keep,allowshrinking
class_specificationEspecifica las clases y los miembros de la clase cuyos los nombres deben conservarse, si no están eliminado en la fase de contracción. Por ejemplo, es posible que desee conservar todos los nombres de clase de las clases que implementan la interfaz Serializable, de modo que el código procesado siga siendo compatible con las clases originalmente serializadas. Las clases que no se usan en absoluto aún se pueden eliminar. Solo aplicable cuando se ofusca.
Esto mantiene classnames intacta:
-keepnames class com.somepackage.*
Consejo práctico para todo el mundo que no quiere ProGuard para cambiar cualquier nombre clase:
# please KEEP ALL THE NAMES
-keepnames class ** { *; }
De esta manera obtendrá seguimientos de pila legibles mientras sigue tirando cosas que no necesita. :-)
'' '-dontobfuscate''' es la forma correcta de desactivar la ofuscación. –
Manera incorrecta. Es mejor desactivar la ofuscación con esta configuración: "-dontobfuscate/n -optimizations! Code/allocation/variable" – oxied
- 1. mantener solo los nombres de las funciones cuando se ofusca para proguard
- 2. Cómo decirle a Proguard que ofusque los nombres de las clases
- 3. Mantener clase anotada en Proguard
- 4. cómo mantener todos los métodos en una clase con ProGuard
- 5. sphinx.ext.autodoc: Mantener los nombres de las constantes en la firma
- 6. ¿Cómo mantener las clases que contienen miembros específicos?
- 7. En proguard, ¿cómo preservar un conjunto de nombres de método de clases?
- 8. Proguard nombre personalizado para clases, miembros y ofuscación de parámetros
- 9. Exponer clases internas cuando se ofusca con ProGuard
- 10. Android Proguard: cómo mantener los manejadores de OnClick referenciados únicamente desde diseños XML
- 11. Espaciado de nombres y clases
- 12. En python, ¿cómo importa todas las clases desde otro módulo sin mantener el espacio de nombres del módulo importado?
- 13. Cómo lidiar con la necesidad de cambiar los nombres de las clases de CSS
- 14. ¿Cómo se calculan los nombres de las clases javascript para clases personalizadas en Herramientas de desarrollo de Chrome?
- 15. ¿Dos puntos y coma antes de los nombres de las clases en Ruby?
- 16. ¿Es una buena práctica que los nombres de las clases Java sean plurales?
- 17. Agregue automáticamente un prefijo a los nombres de columna para las clases @Embeddable
- 18. Cambiando los nombres de las pruebas parametrizadas
- 19. Nombres de clases S3: ¿Qué se permite?
- 20. nombres de clases dinámicas en menos
- 21. ¿Cómo compila un compilador C++ los nombres de las variables?
- 22. ¿Por qué cambiar el nombre de los archivos algunas veces refactoriza los nombres de las clases y otras veces no?
- 23. Proguard keep classmembers
- 24. Cómo subconjuntar la matriz en una columna, mantener el tipo de datos de matriz, mantener los nombres de fila/columna?
- 25. ¿Cómo tratar los espacios en los nombres de las columnas?
- 26. ¿Cómo las personas eligen los nombres de los productos?
- 27. ¿Cómo resuelven los navegadores las clases conflictivas?
- 28. Clases dentro de CoffeeScript 'Espacio de nombres'
- 29. clases particulares espacios de nombres dentro
- 30. clases Adelante declaran en espacios de nombres
Lo mismo ocurre con el tipo i: -keepnames com.randompackage.lol.ClassName – Nik
Ok hay una manera de hacerlo con un paquete completo? – Nik
Sí, usa el * comodín. es decir, -keepnames com.randompackage.lol. * Mantendré todas las clases en lol –