¿Cómo puedo decir a proguard para asumir un paquete no se utiliza?

Estoy intentando configurar proguard para mi proyecto de Android. Utilizamos algunas piezas de una biblioteca neto en nuestro código y me gustaría usar Proguard para eliminar completamente los fragmentos de código que sé que no se utilizan.

¿Hay alguna manera de decir proguard para asumir un paquete (o clase) nunca se utiliza y por lo tanto no debe ser incluido en la salida JARs? Tenga en cuenta que no estoy hablando de excluir un código de ofuscación (que es lo que -keep opciones de configuración -keep ), estoy hablando de eliminar completamente una clase de la salida.

Editar : Como sugerido por pst a continuación, he intentado utilizar el argumento -whyareyoukeeping para determinar la ruta de código que proguard utiliza para determinar una clase se utiliza. No cambia la salida de decenas de advertencias.

También intenté utilizar un filtro de archivo en -outjars como sugerido por pst. Esto también resultó en ningún cambio ya que el algoritmo sigue suponiendo que la clase se cargará y el filtro sólo se aplica después de que las clases "usadas" se determinan incorrectamente.

Para ser claro: las advertencias vienen de clases en bibliotecas de terceros que estamos incluyendo en nuestro proyecto de Android. No ejecutamos ningún código que cargue estas clases, y si proguard encuentra una ruta de código donde suponga que estas clases están cargadas, quisiera decir explícitamente que no usa esas clases.

Una alternativa a la especificación de un filtro en los outjars podría ser especificar un filtro en los injars:

 -injars in.jar(!unwanted/package/**) 

De esta manera, no arrastrará innecesariamente en ninguna clase a la que haga referencia este paquete, ya que el filtrado está ocurriendo antes de cualquier procesamiento.

ProGuard ahora advertirá sobre las clases que faltan, así que tienes que especificar que está bien:

 -dontwarn unwanted.package.** 

Debe tener cuidado con estas opciones, ya que suprimir las advertencias no necesariamente hace que los problemas desaparezcan. Como pst escribió, obtendrá NoClassDefFoundsErrors si filtra las clases que realmente son necesarias.

  • Android ProGuard + MultiDex causa ClassNotFoundException
  • Proguard mess Javascript Funciones de interfaz al orientar SDK en Android Manifiesto por encima de 17
  • Encontrar el rastro de pila ofuscado generado por proguard
  • Proguard con Autovalue
  • ¿Cuál es la diferencia entre proguard-android.txt y proguard-rules.pro? - Android
  • Configuración de Android studio 1.1.0 minifyEnabled true causando problemas con la aplicación
  • Cómo Proguard un proyecto android y sus módulos y libs?
  • ¿Cómo usar el nuevo Android 2.0 Shrinker y Resource Shrinker juntos?
  • Problema Proguard con SAAgent (accesorio Samsung) java.lang.NoSuchMethodException: <init>
  • Proguard problemas con los archivos jar, ¿cómo encontrar el frasco que falta?
  • Mover a construir herramientas 1.3.0 rompió nuestra construcción con proguard habilitado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.