.NET dla ostrzeżenia systemu Android XA4322

Przykładowe komunikaty

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

Biblioteka systemu Android (.aar) wysłała proguard.txt plik (konfiguracja "consumer ProGuard"), który zawiera globalną opcję ProGuard, taką jak -dontoptimize, , -dontobfuscate-printmapping, -printconfiguration, -printusage-printseedslub -dump.

Te opcje kontrolują całą kompilację (na przykład, gdzie R8 zapisuje plik mapowania) i muszą być ustawiane tylko przez projekt aplikacji, który korzysta z biblioteki. Nie są one dozwolone wewnątrz elementu .aarproguard.txt. Jest to zgodne z zachowaniem wprowadzonym we wtyczce Android Gradle Plugin 9.0, gdzie R8 albo powoduje niepowodzenie publikowania biblioteki, albo po cichu ignoruje takie opcje globalne, gdy pojawiają się one we wstępnie skompilowanej zależności (JAR lub AAR). Aby kompilacja nadal działała, platforma .NET dla systemu Android pomija cały problematyczny plik przed wywołaniem R8 i generuje to ostrzeżenie.

Rozwiązanie

Jeśli jesteś właścicielem biblioteki, usuń opcje globalne z elementów proguard.txt / ProguardConfiguration i zamiast tego ustaw je we własnym ProguardConfiguration projektu aplikacji (na przykład ustawiając $(AndroidProguardMappingFile), aby określić, gdzie ma zostać zapisany plik mapowania). Po usunięciu opcji globalnych reguły utrzymania biblioteki zostaną ponownie przekazane do języka R8.

Jeśli nie jesteś właścicielem biblioteki, zgłoś problem ze swoimi opiekunami i poproś ich o usunięcie niedozwolonych opcji. Do tego czasu R8 nie będzie uwzględniać żadnych reguł zachowania z pliku proguard.txt tej biblioteki, co może spowodować usunięcie potrzebnego kodu. Dodaj równoważne reguły -keep do ProguardConfiguration Twojej aplikacji jako obejście.