.NET voor Android-waarschuwing XA4322

Voorbeeldberichten

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

Een Android-bibliotheek () heeft een bestand verzonden.aar (een 'consumer ProGuard-configuratie') die een globale ProGuard-optie bevat, zoals -dontoptimize, -dontobfuscate, -printmapping, -printconfiguration, , -printusageof -printseeds-dump.proguard.txt

Deze opties regelen het volledige buildproces (bijvoorbeeld waar R8 het mappingbestand wegschrijft) en mogen alleen worden ingesteld door het applicatieproject dat de bibliotheek gebruikt. Ze zijn niet toegestaan binnen een .aar's proguard.txt. Dit komt overeen met het gedrag dat is geïntroduceerd in Android Gradle Plugin 9.0, waarbij R8 het publiceren van bibliotheken mislukt of op de achtergrond dergelijke algemene opties negeert wanneer deze worden weergegeven in een vooraf gecompileerde afhankelijkheid (JAR of AAR). Om uw build werkend te houden, slaat .NET voor Android het volledige problematische bestand over voordat R8 wordt aangeroepen en geeft het deze waarschuwing weer.

Solution

Als u eigenaar bent van de bibliotheek, verwijdert u de algemene opties uit de proguard.txt / ProguardConfiguration-items en stelt u ze in plaats daarvan in in de eigen ProguardConfiguration van het toepassingsproject (bijvoorbeeld door $(AndroidProguardMappingFile) in te stellen om te bepalen waar het toewijzingsbestand wordt weggeschreven). Zodra de algemene opties zijn verwijderd, worden de regels voor het bewaren van de bibliotheek opnieuw doorgegeven aan R8.

Als u niet de eigenaar van de bibliotheek bent, dient u een probleem met de onderhouders in en vraagt u deze om de niet-toegestane opties te verwijderen. Tot die tijd ziet R8 geen van de keepregels van deze bibliotheek proguard.txt, waardoor de benodigde code kan worden verkleind. Voeg gelijkwaardige -keep regels toe aan uw eigen toepassing ProguardConfiguration als tijdelijke oplossing.