usar txt tutorial true studio optimize minifyenabled example como android android-gradle android-proguard

android - txt - proguard apk



ConsumerProguardFiles vs ProguardFiles (1)

Según tengo entendido, minifyEnabled false significa que ProGuard no se ejecuta para minimizar / ofuscar el módulo de su biblioteca. Que es lo que desea porque el módulo de biblioteca no puede saber qué partes de él se van a utilizar en su módulo de aplicación.

En su lugar, el módulo de la biblioteca debe proporcionar sus reglas de progreso relevantes al módulo de la aplicación (a través de consumerProguardFiles ) y luego el módulo de la aplicación ejecutará ProGuard con sus propias reglas y las reglas de la biblioteca juntas para minimizar el APK final de la aplicación.

Estaba tratando de construir una aplicación que contenía un módulo de biblioteca La con programa y noté que la biblioteca no estaba siendo confusa. Estaba tratando de entender por qué. En este momento en el tiempo este fue mi buildType:

release { minifyEnabled false useProguard true proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro'' }

Después de algunas búsquedas, he encontrado la función ConsumerProguardFiles que dice:

Los archivos de reglas de ProGuard se incluirán en el AAR publicado.

Estos archivos de reglas progresivas serán utilizados por cualquier proyecto de aplicación que consuma el AAR (si ProGuard está habilitado).

Esto permite que AAR especifique reglas de exclusión de ocultación u ofuscación.

Esto solo es válido para el proyecto de la Biblioteca. Esto se ignora en el proyecto de aplicación.

Con esto ahora el buildType de mi biblioteca La es el siguiente:

release { minifyEnabled false useProguard true consumerProguardFiles ''proguard-rules.pro'' }

Y ahora mi biblioteca La está usando las reglas de desarrollo y el código de la biblioteca está ofuscado.

Así que mis preguntas son:

1) ¿Cuál es la razón de este comportamiento diferente? ¿Por qué ProguardFiles no confunde las reglas de la biblioteca sino que las ignora?

2) Supongo que lo que hace ConsumerProguardFiles es combinar las reglas de la biblioteca con las reglas principales de la aplicación. ¿Es esta suposición correcta?

3) En resumen: use proguardFiles para aplicaciones y ConsumerProguardFiles para bibliotecas. ¿Correcto?

Gracias por su tiempo leyendo!