Advertencia XA4322 de .NET para Android

Mensajes de ejemplo

warning XA4322: Skipping library ProGuard configuration file 'obj/Debug/net10.0-android/lp/0/jl/proguard.txt' (from NuGet package 'Acme.SomeLibrary' 1.2.3) because it contains the unsupported global option '-printmapping'. Global ProGuard options are only allowed in application projects.

Issue

Una biblioteca de Android (.aar) incluía un archivo proguard.txt (una "configuración ProGuard para el consumidor") que contiene una opción global de ProGuard, como -dontoptimize, -dontobfuscate, -printmapping, -printconfiguration, -printusage, -printseeds o -dump.

Estas opciones controlan toda la compilación (por ejemplo, dónde R8 escribe el archivo de mapeo) y solo debe configurarlas el proyecto de aplicación que consume la biblioteca. No están permitidos dentro del proguard.txt de un .aar. Esto coincide con el comportamiento introducido en android Gradle Plugin 9.0, donde R8 produce un error en la publicación de bibliotecas o omite silenciosamente estas opciones globales cuando aparecen en una dependencia precompilada (JAR o AAR). Para que la compilación funcione, .NET para Android omite todo el archivo infractor antes de invocar R8 y emite esta advertencia.

Solution

Si es propietario de la biblioteca, quite las opciones globales de los elementos proguard.txt / ProguardConfiguration de esta y, en su lugar, configúrelas en el ProguardConfiguration del propio proyecto de aplicación (por ejemplo, estableciendo $(AndroidProguardMappingFile) para controlar dónde se escribe el archivo de mapeo). Una vez quitadas las opciones globales, las reglas de mantenimiento de la biblioteca se pasarán de nuevo a R8.

Si no posee la biblioteca, abra un problema con sus mantenedores y pídale que quite las opciones no permitidas. Hasta entonces, R8 no detectará ninguna de las reglas de conservación del proguard.txt de esta biblioteca, lo que puede provocar que se elimine código necesario. Agregue reglas equivalentes -keep a las de ProguardConfiguration su propia aplicación como solución alternativa.