Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Exempelmeddelanden
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.
Problematik
Ett Android-bibliotek (.aar) levererade en proguard.txt fil (en "consumer ProGuard-konfiguration") som innehåller ett globalt ProGuard-alternativ som -dontoptimize, -dontobfuscate, -printmapping, -printconfiguration, -printusage, -printseedseller -dump.
De här alternativen styr hela versionen (till exempel där R8 skriver mappningsfilen) och får endast anges av det programprojekt som använder biblioteket. De får inte finnas i .aars proguard.txt. Detta matchar det beteende som introducerades i Android Gradle Plugin 9.0, där R8 antingen misslyckas med bibliotekspublicering eller tyst ignorerar sådana globala alternativ när de visas i ett förkompilerat beroende (JAR eller AAR). För att få bygget att fortsätta fungera hoppar .NET för Android över hela den felaktiga filen innan R8 körs och utfärdar den här varningen.
Lösning
Om du äger biblioteket tar du bort de globala alternativen från dess proguard.txt /
ProguardConfiguration objekt och ställer i stället in dem i programprojektets egna ProguardConfiguration (till exempel genom att ange $(AndroidProguardMappingFile) för att styra var mappningsfilen skrivs).
När de globala alternativen har tagits bort skickas bibliotekets behållregler återigen till R8.
Om du inte äger biblioteket kan du skicka ett problem till dess underhållare och be dem att ta bort de otillåtna alternativen. Fram till dess ser R8 inte någon av behåll-reglerna från bibliotekets proguard.txt, vilket kan leda till att nödvändig kod krymps. Lägg till motsvarande -keep regler i ditt eget program ProguardConfiguration som en lösning.