Quiero excluir algunas rutas de archivo de ProGuard. Ejemplocom.myapp.customcomponents
¿Cómo puedo hacer esto? Odio tener que colocar banderas -keep para cada archivo de componente personalizado que tengo en este directorio.
He intentado lo siguiente pero no funciona:
-keep public class com.myapp.customcomponents.*
Agregue la siguiente línea en la parte inferior de su configuración de ProGuard:
Reemplace el nombre del paquete en consecuencia, aquí el paquete
com.facebook
se excluirá de ProGuard.fuente
{ *; }
significa?Mucha gente parece recomendar
-keep class com.myapp.customcomponents.** { *; }
como una forma de excluir una ruta de ser procesada. Mira aquí:El problema con esta solución es que todavía hay cierto nivel de ofuscación, lo que puede romper su código. Puede ver el mapeo en la impresión del mapeo:
La solución por la que he optado es un proceso de dos pasos. Primero, utilícelo
injars
con un filtro para seleccionar la ruta del paquete que me gustaría procesar. Es posible agregar los otros parches de paquetes como bibliotecas.En segundo lugar, combine el frasco procesado con el frasco original, pero solo las rutas que se omitieron.
El resultado es un contenedor combinado que es la combinación de la ruta del paquete procesado y las rutas omitidas. Este ejercicio no es válido si alguien puede proporcionar una manera de omitir el procesamiento de ciertas rutas por completo (que no he encontrado).
fuente
Lo que funcionó para mí usando Android Studio 4.0 es:
Los asteriscos dobles (**) en otras respuestas no me funcionaron. También probé la configuración anterior con R8, funciona bien.
fuente