Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Właściwości programu MSBuild kontrolują zachowanie obiektów docelowych.
Są one określone w pliku projektu, na przykład MyApp.csproj, w grupie właściwości MSBuild.
Uwaga / Notatka
Na platformie .NET dla systemu Android technicznie nie ma rozróżnienia między aplikacją a projektem powiązań, więc właściwości będą działać w obu tych przypadkach. W praktyce zdecydowanie zaleca się tworzenie oddzielnych projektów aplikacji i powiązań. Właściwości, które są używane głównie w projektach powiązań, są udokumentowane w przewodniku referencyjnym właściwości projektu powiązań MSBuild .
AdbTarget
Właściwość $(AdbTarget) określa urządzenie docelowe systemu Android, z których może zostać zainstalowany pakiet systemu Android lub z niego usunięty.
Wartość tej właściwości jest taka sama jak adb opcja Urządzenie docelowe.
AfterGenerateAndroidManifest
Cele MSBuild wymienione w tej właściwości będą uruchamiane bezpośrednio po wewnętrznym celu _GenerateJavaStubs, w którym plik AndroidManifest.xml jest generowany w $(IntermediateOutputPath). Jeśli chcesz wprowadzić jakiekolwiek modyfikacje wygenerowanego AndroidManifest.xml pliku, możesz to zrobić przy użyciu tego punktu rozszerzenia.
AndroidAapt2CompileExtraArgs
Określa opcje wiersza polecenia, które mają być przekazywane do polecenia aapt2 compile podczas przetwarzania elementów i zasobów systemu Android.
AndroidAapt2LinkExtraArgs
Określa opcje wiersza polecenia, które mają być przekazywane do polecenia aapt2 link podczas przetwarzania zasobów i elementów systemu Android.
AndroidAddKeepAlives
Właściwość logiczna, która kontroluje, czy linker wstawi GC.KeepAlive() wywołania w projekty powiązane, aby zapobiec przedwczesnej kolekcji obiektów.
Wartość domyślna wynosi True dla kompilacji w konfiguracji wydania.
AndroidAotAdditionalArguments
Właściwość typu string, która umożliwia przekazywanie opcji do kompilatora Mono podczas zadania Aot w projektach, które mają ustawione $(AndroidEnableProfiledAot) lub $(AotAssemblies) na true.
Wartość ciągu właściwości jest dodawana do pliku odpowiedzi podczas wywoływania kompilatora krzyżowego Mono.
Ogólnie rzecz biorąc, ta właściwość powinna pozostać pusta, ale w niektórych specjalnych scenariuszach może zapewnić przydatną elastyczność.
Właściwość $(AndroidAotAdditionalArguments) różni się od powiązanej $(AndroidExtraAotOptions) właściwości; $(AndroidAotAdditionalArguments) przekazuje pełne autonomiczne opcje rozdzielane spacjami, takie jak --verbose lub --debug do kompilatora AOT, natomiast $(AndroidExtraAotOptions) zawiera argumenty rozdzielane przecinkami, które są częścią --aot opcji kompilatora AOT.
AndroidAotCustomProfilePath
Plik, który aprofutil powinien zostać utworzony do przechowywania danych profilera.
AndroidAotProfiles
Właściwość ciągu, która umożliwia deweloperowi dodawanie profilów AOT z wiersza polecenia. Jest to rozdzielana średnikami lista ścieżek bezwzględnych.
AndroidAotProfilerPort
Port, z który aprofutil powinien nawiązać połączenie podczas uzyskiwania danych profilowania.
AndroidAotEnableLazyLoad
Włącz leniwe ładowanie zestawów AOT-d zamiast wstępnego ładowania ich podczas uruchamiania. Domyślna wartość to True dla kompilacji wydania z włączoną dowolną formą AOT.
Wprowadzone w .NET 6.
AndroidApkDigestAlgorithm
Wartość ciągu określająca algorytm skrótu do użycia z elementem jarsigner -digestalg.
Domyślna wartość to SHA-256.
AndroidApkSignerAdditionalArguments
Właściwość ciągu, która umożliwia deweloperowi przekazywanie argumentów narzędzia apksigner.
AndroidApkSigningAlgorithm
Wartość ciągu określająca algorytm podpisywania do użycia z jarsigner -sigalg.
Domyślna wartość to SHA256withRSA.
AndroidApplication
Wartość logiczna wskazująca, czy projekt jest przeznaczony dla aplikacji systemu Android (True) lub projektu biblioteki systemu Android (False lub nie istnieje).
W pakiecie systemu Android może znajdować się tylko jeden projekt zawierający <AndroidApplication>True</AndroidApplication>. (Niestety to wymaganie nie jest weryfikowane, co może spowodować subtelne i dziwaczne błędy dotyczące zasobów systemu Android).
AndroidApplicationJavaClass
Pełna nazwa klasy Java używana zamiast android.app.Application, gdy klasa dziedziczy z Android.App.Application.
Właściwość $(AndroidApplicationJavaClass) jest zazwyczaj ustawiana przez inne właściwości, takie jak $(AndroidEnableMultiDex) właściwość MSBuild.
AndroidAvoidEmitForPerformance
Właściwość logiczna określająca, czy System.Reflection.Emit jest "pomijany" w celu zwiększenia wydajności uruchamiania. Ta właściwość jest True domyślnie.
System.Reflection.Emit Użycie programu ma zauważalny wpływ na wydajność uruchamiania w systemie Android. To zachowanie jest domyślnie wyłączone dla następujących przełączników funkcji:
Switch.System.Reflection.ForceInterpretedInvoke: po drugim wywołaniu metodyMethodInfo.Invoke()lubConstructorInfo.Invoke()kod jest emitowany w celu zwiększenia wydajności powtarzających się wywołań.Microsoft.Extensions.DependencyInjection.DisableDynamicEngine: po drugim wywołaniu w celu pobrania usługi z kontenera iniekcji zależności kod jest emitowany w celu zwiększenia wydajności powtarzających się wywołań.
W większości aplikacji systemu Android pożądane jest wyłączenie tego zachowania.
Aby uzyskać szczegółowe informacje o dostępnych przełącznikach funkcji, zobacz dokumentację przełączników funkcji bibliotek klas podstawowych .
Dodano do platformy .NET 8.
AndroidBinUtilsPath
Ścieżka do katalogu, który zawiera binutils dla systemu Android, takie jak ld natywny konsolidator i as natywny asembler. Te narzędzia znajdują się w obciążeniu platformy .NET dla systemu Android.
Domyślna wartość to $(MonoAndroidBinDirectory)\binutils\bin\.
AndroidBoundExceptionType
Wartość ciągu, która określa sposób propagacji wyjątków, gdy typ dostarczany przez .NET dla Androida implementuje typ lub interfejs .NET w kontekście typów Java, na przykład Android.Runtime.InputStreamInvoker i System.IO.Stream, lub Android.Runtime.JavaDictionary i System.Collections.IDictionary.
Java: Oryginalny typ wyjątku Java jest propagowany bez zmian.Javaoznacza, że na przykładInputStreamInvokernie implementuje poprawnie APISystem.IO.Stream, ponieważJava.IO.IOExceptionmoże zostać zgłoszony zStream.Read()zamiastSystem.IO.IOException.System: oryginalny typ wyjątku Java jest przechwytywany i owinięty w odpowiedni typ wyjątku platformy .NET.Systemoznacza, że na przykładInputStreamInvokerprawidłowo implementujeSystem.IO.Streamelement iStream.Read()nie będzie zgłaszaćJava.IO.IOExceptionwystąpień. (Zamiast tego może zgłosićSystem.IO.IOException, który zawieraJava.IO.IOExceptionjako wartośćException.InnerException.)Systemjest wartością domyślną.
InterfejsyPowiązaneZAndroidemZawierająStałe
Właściwość logiczna określająca, czy powiązanie stałych w interfejsach będzie obsługiwane, czy też zostanie użyte obejście polegające na tworzeniu klasy IMyInterfaceConsts.
Domyślna wartość to True.
InterfejsyZwiązaneZAndroidemZawierająStatyczneIDefaultoweMetodyInterfejsów
Właściwość logiczna, która określa, czy w interfejsach będą obsługiwani domyślni i statyczni członkowie, czy będzie stosowane stare obejście polegające na tworzeniu klasy równorzędnej zawierającej statycznych członków, takiej jak abstract class MyInterface.
Wartość domyślna to True w .NET 6 i False dla wersji legacy.
InterfejsyPowiązaneZAndroidZawierająTypy
Właściwość logiczna, która określa, czy będą obsługiwane typy zagnieżdżone w interfejsach, czy zastosowane zostanie obejście polegające na stworzeniu typu niezagnieżdżonego, takiego jak IMyInterfaceMyNestedClass.
Wartość domyślna to True w .NET 6 oraz False dla wersji starszych.
PakietBudowaniaAplikacjiAndroid
Wartość logiczna wskazująca, czy utworzyć i podpisać pakiet (.apk). Ustawienie tej wartości na True jest równoważne użyciu elementu
SignAndroidPackage cel kompilacji.
Ta właściwość jest False domyślnie.
AndroidBundleConfigurationFile
Określa nazwę pliku do użycia jako plik konfiguracji podczas bundletool kompilowania pakietu aplikacji systemu Android. Ten plik steruje pewnymi aspektami sposobu generowania plików APK z pakietu, takich jak podział wymiarów pakietu w celu utworzenia plików APK.
Platforma .NET dla systemu Android automatycznie konfiguruje niektóre z tych ustawień, w tym listę rozszerzeń plików do pozostawienia nieskompresowanych.
Ta właściwość jest istotna tylko wtedy, gdy $(AndroidPackageFormat) jest ustawiona na aab.
AndroidBundleToolExtraArgs
Określa opcje wiersza polecenia, które mają być przekazywane do polecenia bundletool podczas kompilowania pakietów aplikacji.
AndroidClassParser
Właściwość ciągu, która kontroluje sposób .jar analizowania plików. Możliwe wartości to:
class-parse: bezpośrednio analizuje kod bajtowy Java za pomocą
class-parse.exe, bez pomocy JVM.jar2xml: ta wartość jest przestarzała i nie jest już obsługiwana.
AndroidCodegenTarget
Właściwość typu string, która kontroluje docelowe ABI dla generowania kodu. Możliwe wartości to:
XamarinAndroid: ta wartość jest przestarzała i nie jest już obsługiwana.
XAJavaInterop1: używaj Java.Interop do wywołań JNI. Wiązanie zestawów przy użyciu
XAJavaInterop1można kompilować i wykonywać tylko na Xamarin.Android 6.1 lub nowszym. Xamarin.Android 6.1 lub nowsza wiążeMono.Android.dllz tą wartością.JavaInterop1: wartość eksperymentalna, obecnie domyślna dla środowiska uruchomieniowego NativeAOT.
Domyślna wartość to XAJavaInterop1.
AndroidUtwórzPakietNaAbi
Właściwość logiczna określająca, czy należy utworzyć zestaw plików — po jednym na każde ABI wskazane w elemencie $(AndroidSupportedAbis) — zamiast obsługiwać wszystkie ABI w jednym .apk.
Zobacz również przewodnik Tworzenie APK-ów Specyficznych dla ABI.
AndroidCreateProguardMappingFile
Właściwość logiczna, która kontroluje, czy plik mapowania ProGuard jest generowany w ramach procesu kompilacji.
Dodanie następującego elementu do pliku csproj spowoduje wygenerowanie pliku i użycie AndroidProguardMappingFile właściwości do kontrolowania lokalizacji końcowego pliku mapowania.
<AndroidCreateProguardMappingFile>True</AndroidCreateProguardMappingFile>
Podczas tworzenia .aab plików plik mapowania jest automatycznie dołączany do pakietu. Nie ma potrzeby ręcznego przekazywania go do Sklepu Google Play. W przypadku korzystania z plików .apk, AndroidProguardMappingFile należy przekazać ręcznie.
Wartość domyślna to True w przypadku używania $(AndroidLinkTool)=r8.
AndroidDebugKeyAlgorithm
Określa domyślny algorytm do użycia dla elementu debug.keystore. Domyślna wartość to RSA.
WażnośćKluczaDebugowaniaAndroid
Określa domyślną ważność, która ma być używana dla elementu debug.keystore. Wartość domyślna to 10950 lub 30 * 365 lub 30 years.
AndroidDebugStoreType
Określa format pliku magazynu kluczy, który ma być używany dla elementu debug.keystore. Wartość domyślna to pkcs12.
AndroidDeviceUserId
Umożliwia wdrażanie i debugowanie aplikacji w ramach konta gościa lub konta służbowego. Wartość jest wartością uid uzyskaną z następującego polecenia adb:
adb shell pm list users
Powyższe polecenie zwróci następujące dane:
Users:
UserInfo{0:Owner:c13} running
UserInfo{10:Guest:404}
uid jest pierwszą wartością całkowitą. W powyższych danych wyjściowych są one 0 i 10.
AndroidDexTool
Właściwość w stylu wyliczeniowym mająca prawidłową wartość d8.
Wcześniej wartość dx była obsługiwana w Xamarin.Android.
Wskazuje, który kompilator dex systemu Android jest używany podczas procesu kompilacji platformy .NET dla systemu Android.
Domyślna wartość to d8. Zapoznaj się z naszą dokumentacją dotyczącą D8 i R8.
AndroidEnableDesugar
Właściwość logiczna określająca, czy desugar jest włączony. System Android nie obsługuje obecnie wszystkich funkcji języka Java 8, a domyślny łańcuch narzędzi implementuje nowe funkcje języka, wykonując przekształcenia kodu bajtowego o nazwie desugar, na danych wyjściowych kompilatora javac . Wartość domyślna to False, jeśli używasz $(AndroidDexTool)=dx i True, jeśli używasz $(AndroidDexTool)=d8.
AndroidEnableGooglePlayStoreChecks
Właściwość logiczna, która umożliwia deweloperom wyłączenie następujących kontroli sklepu Google Play: XA1004, XA1005 i XA1006. Wyłączenie tych kontroli jest przydatne dla deweloperów, którzy nie celują w Sklep Google Play i nie chcą uruchamiać tych kontroli.
AndroidEnableMarshalMethods
Właściwość typu boolean określająca, czy metody marshalingu w LLVM są włączone.
Metody marshalowe LLVM to optymalizacja uruchamiania aplikacji, która wykorzystuje natywne punkty wejścia do rejestracji metod języka Java native.
Ta właściwość ma wartość False domyślnie.
Dodano do platformy .NET 8.
AndroidEnableMultiDex
Właściwość logiczna określająca, czy obsługa multi-dex będzie używana w końcowym obiekcie .apk.
Ta właściwość jest False domyślnie.
AndroidEnableProfiler
Synonim właściwości $(EnableDiagnostics) .
Wymagane do używania dotnet-trace lub dotnet-gcdump w aplikacjach systemu Android. Jeśli ustawiono tę wartość na true, aplikacja zawiera składnik diagnostyczny Mono. Ten składnik jest biblioteką natywną libmono-component-diagnostics_tracing.so .
Ta właściwość jest False domyślnie.
AndroidEnableObsoleteOverrideInheritance
Właściwość logiczna określająca, czy metody powiązane automatycznie dziedziczą [Obsolete] atrybuty z metod, które zastępują.
Obsługa tej właściwości została dodana w programie .NET 8.
Ta właściwość jest True domyślnie.
AndroidEnablePreloadAssemblies
Właściwość logiczna, która kontroluje, czy podczas uruchamiania procesu wszystkie zarządzane zestawy zawarte w pakiecie aplikacji są ładowane, czy nie.
Po ustawieniu na True, wszystkie zestawy dołączone do pakietu aplikacji zostaną załadowane podczas uruchamiania procesu, zanim zostanie wykonany jakikolwiek kod aplikacji.
W przypadku ustawienia wartości Falsezestawy będą ładowane tylko zgodnie z potrzebami.
Ładowanie zestawów zgodnie z potrzebami umożliwia uruchamianie aplikacji szybciej i jest również bardziej spójne z semantykami platformy .NET dla komputerów stacjonarnych.
Aby wyświetlić oszczędności czasu, ustaw właściwość systemu debug.mono.log w taki sposób, aby zawierała timing, a następnie poszukaj komunikatu Finished loading assemblies: preloaded w pliku adb logcat.
Aplikacje lub biblioteki, które używają wstrzykiwania zależności, mogą wymagać, aby ta właściwość była ustawiona w przypadku, gdy żądają, aby AppDomain.CurrentDomain.GetAssemblies() zwrócił wszystkie zestawy w pakiecie aplikacji, nawet jeśli zestaw nie byłby potrzebny.
Domyślnie ta wartość to False.
AndroidEnableProfiledAot
Właściwość logiczna określająca, czy profile AOT (Ahead-Of-Time) są lub nie są używane podczas kompilacji przed czasem.
Profile są wymienione na liście
@(AndroidAotProfile) grupa elementów. Ta grupa elementów zawiera profile domyślne. Można ją zastąpić przez usunięcie istniejących profilów i dodanie własnych profilów AOT.
Ta właściwość jest False domyślnie.
AndroidEnableRestrictToAttributes
Właściwość wyliczeniowa z prawidłowymi wartościami obsolete oraz disable.
W przypadku ustawienia wartości obsolete, typy i elementy członkowskie oznaczone adnotacją Java androidx.annotation.RestrictTo lub znajdujące się w nieeksportowanych pakietach Java zostaną oznaczone atrybutem [Obsolete] w powiązaniu języka C#.
Ten [Obsolete] atrybut zawiera opisowy komunikat wyjaśniający, że właściciel pakietu Java uważa, że interfejs API jest "wewnętrzny" i ostrzega przed jego użyciem.
Ten atrybut ma również niestandardowy kod ostrzegawczy XAOBS001 dzięki czemu można go wyciszyć niezależnie od zwykłego przestarzałego interfejsu API.
Po ustawieniu disable interfejs API zostanie wygenerowany jak zwykle, bez dodatkowych atrybutów. (Jest to takie samo zachowanie jak przed platformą .NET 8).
Dodanie [Obsolete] atrybutów zamiast automatycznego usuwania interfejsu API zostało wykonane w celu zachowania zgodności interfejsu API z istniejącymi pakietami. Jeśli zamiast tego wolisz usunąć członków, którzy mają adnotację @RestrictTolub znajdują się w niewyeksportowanych pakietach języka Java, możesz użyć pliku Przekształć oprócz tej właściwości, aby zapobiec powiązaniu tych typów:
<remove-node path="//*[@annotated-visibility]" />
Obsługa tej właściwości została dodana w programie .NET 8.
Ta właściwość jest domyślnie ustawiona na obsolete.
AndroidEnableSGenConcurrent
Właściwość logiczna określająca, czy stosowany jest współbieżny kolektor GC Mono.
Ta właściwość jest False domyślnie.
AndroidErrorOnCustomJavaObject
Właściwość logiczna określająca, czy typy mogą implementować Android.Runtime.IJavaObjectbez dziedziczenia z Java.Lang.Object lub Java.Lang.Throwable:
class BadType : IJavaObject {
public IntPtr Handle {
get {return IntPtr.Zero;}
}
public void Dispose()
{
}
}
Jeśli wartość True, takie typy wygenerują błąd XA4212, w przeciwnym razie zostanie wygenerowane ostrzeżenie XA4212.
Ta właściwość jest True domyślnie.
AndroidExplicitCrunch
Ta nieruchomość nie jest już wspierana.
AndroidExtraAotOptions
Właściwość ciągu, która umożliwia przekazywanie opcji do kompilatora Mono w trakcie zadania Aot dla projektów, które mają ustawioną wartość $(AndroidEnableProfiledAot) lub $(AotAssemblies) na true.
Wartość ciągu właściwości jest dodawana do pliku odpowiedzi podczas wywoływania kompilatora krzyżowego Mono.
Ogólnie rzecz biorąc, ta właściwość powinna pozostać pusta, ale w niektórych specjalnych scenariuszach może zapewnić przydatną elastyczność.
Właściwość $(AndroidExtraAotOptions) różni się od powiązanej właściwości $(AndroidAotAdditionalArguments); $(AndroidAotAdditionalArguments) umieszcza argumenty rozdzielane przecinkami w opcji --aot kompilatora Mono.
$(AndroidExtraAotOptions) zamiast tego przekazuje pełne autonomiczne opcje rozdzielane spacjami, takie jak --verbose lub --debug do kompilatora.
TypSzybkiegoWdrożeniaAndroida
: Rozdzielona dwukropkiem lista wartości do kontrolowania typów, które można wdrożyć do katalogu szybkiego wdrażania na urządzeniu docelowym, gdy $(EmbedAssembliesIntoApk) właściwość MSBuild to False. Jeśli zasób jest szybko wdrażany, nie jest osadzony w wygenerowanym .apk, co może przyspieszyć wdrażanie. Im więcej jest szybko wdrażane, tym rzadziej .apk należy ponownie kompilować, a proces instalacji może być szybszy. Prawidłowe wartości to:
-
Assemblies: Wdrażanie zestawów aplikacji. -
Dexes: Wdrażanie.dexplików, bibliotek natywnych i map typów. WartośćDexesmożna używać tylko na urządzeniach z systemem Android 4.4 lub nowszym (API-19).
Domyślna wartość to Assemblies.
Obsługa szybkiego wdrażania zasobów i elementów za pośrednictwem tego systemu została usunięta w zatwierdzeniu f0d565fe. Wynikało to z faktu, że do działania wymagane było użycie przestarzałego interfejsu API.
**Obsługa tej funkcji została usunięta na platformie .NET 9
Eksperymentalne.
AndroidFragmentType
Określa domyślny w pełni kwalifikowany typ, który ma być używany dla wszystkich <fragment> elementów układu podczas generowania kodu powiązań układu. Wartość domyślna to standardowy typ systemu Android Android.App.Fragment .
AndroidGenerateJniMarshalMethods
Właściwość logiczna, która umożliwia generowanie metod marshalingu JNI w ramach procesu kompilacji. Znacznie zmniejsza użycie System.Reflection w kodzie pomocnika powiązania.
Domyślna wartość to False. Jeśli deweloperzy chcą korzystać z nowych metod marshalingu JNI, mogą ustawić
<AndroidGenerateJniMarshalMethods>True</AndroidGenerateJniMarshalMethods>
w pliku .csproj. Alternatywnie podaj właściwość w wierszu polecenia
-p:AndroidGenerateJniMarshalMethods=True
Eksperymentalne. Domyślna wartość to False.
AndroidGenerateJniMarshalMethodsAdditionalArguments (Generowanie dodatkowych argumentów metody JNI do obsługi języka Android)
Właściwość ciągu, która może służyć do dodawania parametrów do jnimarshalmethod-gen.exe wywołania i jest przydatna do debugowania, dzięki czemu można użyć opcji, takich jak -v, -dlub --keeptemp .
Wartość domyślna to pusty ciąg. Można go ustawić w .csproj pliku lub w wierszu polecenia. Przykład:
<AndroidGenerateJniMarshalMethodsAdditionalArguments>-v -d --keeptemp</AndroidGenerateJniMarshalMethodsAdditionalArguments>
or:
-p:AndroidGenerateJniMarshalMethodsAdditionalArguments="-v -d --keeptemp"
AndroidGenerateLayoutBindings
Włącza generowanie layout code-behind, jeśli jest ustawione na true, lub wyłącza je całkowicie, jeśli jest ustawione na false.
Domyślna wartość to false.
AndroidGenerateResourceDesigner
Domyślna wartość to true. Gdy jest ustawiona wartość false, wyłącza generowanie elementu Resource.designer.cs.
AndroidHttpClientHandlerType
Określa domyślną System.Net.Http.HttpMessageHandler implementację System.Net.Http.HttpClient , która będzie używana przez konstruktor domyślny. Wartość jest kwalifikowaną nazwą typu zestawu podklasy HttpMessageHandler , która jest odpowiednia do użycia z System.Type.GetType(string).
W przypadku platformy .NET 6 i nowszych ta właściwość działa tylko wtedy, gdy jest używana razem z $(UseNativeHttpHandler)=true.
Najbardziej typowe wartości tej właściwości to:
Xamarin.Android.Net.AndroidMessageHandler: Użyj interfejsów API języka Java systemu Android do wykonywania żądań HTTP. Jest ona podobna do starszejXamarin.Android.Net.AndroidClientHandlerwersji z kilkoma ulepszeniami. Obsługuje protokoły HTTP 1.1 i TLS 1.2. Jest to domyślna procedura obsługi komunikatów HTTP.System.Net.Http.SocketsHttpHandler, System.Net.Http: domyślna procedura obsługi komunikatów na platformie .NET. Obsługuje protokół HTTP/2, TLS 1.2 i jest to zalecana procedura obsługi komunikatów HTTP do użycia z klientem Grpc.Net.Client. Ta wartość jest równoważna$(UseNativeHttpHandler)=false.Usuń/pusty ciąg, który jest odpowiednikiem
System.Net.Http.HttpClientHandler, System.Net.HttpOdpowiada opcji Domyślne na stronach właściwości programu Visual Studio.
Kreator nowego projektu wybiera tę opcję dla nowych projektów, gdy minimalna wersja systemu Android jest skonfigurowana do systemu Android w wersji 4.4.87 lub nowszej w programie Visual Studio lub gdy platformy docelowe są ustawione na nowoczesne programowanie lub maksymalna zgodność w programie Visual Studio dla komputerów Mac.
System.Net.Http.HttpClientHandler, System.Net.Http: Użyj zarządzanegoHttpMessageHandlerelementu.Odpowiada opcji Zarządzane na stronach właściwości programu Visual Studio.
Uwaga / Notatka
W programie .NET 6 określony typ nie może być Xamarin.Android.Net.AndroidClientHandler, System.Net.Http.HttpClientHandler ani dziedziczyć z którejkolwiek z tych klas. Jeśli migrujesz z "klasycznej" wersji Xamarin.Android, użyj AndroidMessageHandler lub stwórz swój własny niestandardowy obsługiwacz na jego bazie.
Uwaga / Notatka
Obsługa właściwości $(AndroidHttpClientHandlerType) działa przez ustawienie zmiennej środowiskowej XA_HTTP_CLIENT_HANDLER_TYPE.
Wartość $XA_HTTP_CLIENT_HANDLER_TYPE znaleziona w pliku z akcją kompilacji
@(AndroidEnvironment) będzie mieć pierwszeństwo.
AndroidIgnoreAllJniPreload
Wartość logiczna, która, jeśli jest ustawiona na true wartość, zwalnia wszystkie natywne biblioteki JNI z obowiązku wstępnego ładowania podczas uruchamiania aplikacji. Domyślnie wszystkie takie biblioteki zostaną załadowane przez środowisko uruchomieniowe na wczesnym etapie uruchamiania aplikacji, aby zapewnić ich właściwą inicjację. Jednak w niektórych przypadkach może to nie być pożądane zachowanie, a ta właściwość pozwala skutecznie ją wyłączyć.
Niektóre biblioteki ramowe, które muszą zostać załadowane podczas uruchamiania aplikacji, nie są objęte działaniem tej właściwości.
Zapoznaj się także z informacjami w @(AndroidNativeLibraryNoJniPreload) w celu uzyskania bardziej szczegółowego sposobu wyłączenia bibliotek z mechanizmu wstępnego ładowania.
AndroidIncludeWrapSh
Wartość logiczna wskazująca, czy skrypt osłony Androida (wrap.sh) powinien zostać zapakowany do pakietu APK. Wartość domyślna to false , ponieważ skrypt otoki może znacząco wpływać na sposób uruchamiania i działania aplikacji, a skrypt powinien zostać uwzględniony tylko w razie potrzeby, na przykład podczas debugowania lub zmiany zachowania uruchamiania/środowiska uruchomieniowego aplikacji.
Skrypt jest dodawany do projektu przy użyciu elementu
@(AndroidNativeLibrary) akcja kompilacji, ponieważ jest umieszczona w tym samym katalogu co biblioteki natywne specyficzne dla architektury i musi mieć nazwę wrap.sh.
Najprostszym sposobem określenia ścieżki do skryptu wrap.sh jest umieszczenie go w katalogu o nazwie po architekturze docelowej. Takie podejście będzie działać, jeśli masz tylko jeden wrap.sh przypadający na architekturę:
<AndroidNativeLibrary Include="path/to/arm64-v8a/wrap.sh" />
Jeśli jednak Twój projekt wymaga więcej niż jednego elementu wrap.sh na architekturę, dla różnych celów, takie podejście nie będzie skuteczne.
Zamiast tego w takich przypadkach można określić nazwę przy użyciu Link metadanych elementu AndroidNativeLibrary:
<AndroidNativeLibrary Include="/path/to/my/arm64-wrap.sh">
<Link>lib\arm64-v8a\wrap.sh</Link>
</AndroidNativeLibrary>
Jeśli metadane Link są używane, ścieżka określona w wartości musi być prawidłową biblioteką specyficzną dla natywnej architektury, względną do katalogu głównego APK. Format ścieżki to lib\ARCH\wrap.sh, gdzie ARCH może być jeden z następujących:
arm64-v8aarmeabi-v7ax86_64x86
AndroidUwzględnijPakietyZasobówWPakiecie
Ta właściwość określa, czy kompilacja pakietów zasobów jest automatycznie dołączana do pliku końcowego .aab . Wartość domyślna to true.
W niektórych przypadkach użytkownik może chcieć zwolnić tymczasowe wydanie. W takich przypadkach użytkownik nie musi aktualizować pakietu zasobów. Szczególnie jeśli zawartość pakietu zasobów nie uległa zmianie. Ta właściwość umożliwia użytkownikowi pomijanie pakietów zasobów, jeśli nie są one wymagane.
Dodano w programie .NET 9
AndroidInstallJavaDependencies
Domyślna wartość to true w przypadku kompilacji z wiersza poleceń. Gdy jest ustawiona wartość true, włącza instalację Java SDK podczas uruchamiania docelowego celu <InstallAndroidDependencies/>.
Obsługa tej właściwości została dodana na platformie .NET 9.
AndroidJavadocVerbosity
Określa, jak "szczegółowe" powinny być komentarze dokumentacji XML języka C# podczas importowania dokumentacji Javadoc w projektach powiązań.
Wymaga użycia
@(JavaSourceJar) akcja kompilacji.
Właściwość $(AndroidJavadocVerbosity) jest przypominająca wyliczenie, z możliwymi wartościami full lub intellisense.
-
intellisense: Emituj tylko komentarze XML:<exception/>, ,<param/><returns/>,<summary/>. -
full: Emitujintellisenseelementy, a także<remarks/>,<seealso/>i wszystkie inne elementy, które można obsługiwać.
Domyślna wartość to intellisense.
AndroidKeyStore
Wartość logiczna wskazująca, czy należy używać niestandardowych informacji o podpisywaniu. Wartość domyślna to False, co oznacza, że domyślny klucz podpisywania debugowania będzie używany do podpisywania pakietów.
AndroidLaunchActivity
Aktywność systemu Android do uruchomienia.
AndroidLinkMode
Określa typ łączenia , który ma być wykonywany na zestawach zawartych w pakiecie systemu Android. Używane tylko w projektach aplikacji systemu Android. Wartość domyślna to SdkOnly. Prawidłowe wartości to:
Brak: nie zostanie podjęta próba połączenia.
SdkOnly: łączenie będzie wykonywane tylko w bibliotekach klas bazowych, a nie na zestawach użytkownika.
Pełne: łączenie będzie wykonywane w bibliotekach klas bazowych i zestawach użytkowników.
Uwaga / Notatka
AndroidLinkModeUżycie wartości Full często powoduje uszkodzenie aplikacji, szczególnie w przypadku użycia odbicia. Unikaj, chyba że naprawdę wiesz, co robisz.
<AndroidLinkMode>SdkOnly</AndroidLinkMode>
AndroidLinkResources
Gdy true, system kompilacji połączy zagnieżdżone typy klasy Resource.Designer.cs Resource we wszystkich zestawach. Kod IL, który używa tych typów, zostanie zaktualizowany w celu bezpośredniego używania wartości zamiast uzyskiwania dostępu do pól.
Łączenie zagnieżdżonych typów może mieć niewielki wpływ na zmniejszenie rozmiaru pliku apk, a także może pomóc w wydajności uruchamiania. Tylko kompilacje "Release" są połączone.
Eksperymentalny Przeznaczone tylko do pracy z kodem, takim jak
var view = FindViewById(Resources.Ids.foo);
Żadne inne scenariusze (takie jak odbicie) nie będą obsługiwane.
AndroidLinkSkip
Określa rozdzielaną średnikami (;) listę nazw zestawów bez rozszerzeń plików zestawów, które nie powinny być połączone. Używane tylko w projektach aplikacji systemu Android.
<AndroidLinkSkip>Assembly1;Assembly2</AndroidLinkSkip>
AndroidLinkTool
Właściwość typu wyliczeniowego, który może przyjmować wartości proguard lub r8. Wskazuje, który zmniejszanie kodu jest używane dla kodu Java. Wartość domyślna to pusty ciąg lub proguard jeśli $(AndroidEnableProguard) ma wartość True. Zapoznaj się z naszą dokumentacją dotyczącą D8 i R8.
AndroidLintEnabled
Właściwość logiczna, która umożliwia deweloperowi uruchomienie narzędzia android lint w ramach procesu pakowania.
Gdy $(AndroidLintEnabled)=True, są używane następujące właściwości:
Mogą być również używane następujące akcje kompilacji:
Aby uzyskać więcej informacji dotyczących narzędzi lint systemu Android, zobacz Pomoc Lint.
ZezwoloneProblemyAndroidLint
Właściwość typu string, która jest rozdzielaną przecinkami listą problemów lint do włączenia.
Używane tylko wtedy, gdy $(AndroidLintEnabled)=True.
ProblemyWyłączonePrzezAndroidLint
Właściwość typu ciąg, która jest listą problemów lintowania oddzielonych przecinkami do wyłączenia.
Używane tylko wtedy, gdy $(AndroidLintEnabled)=True.
AndroidLintCheckIssues
Właściwość tekstowa, która jest listą problemów lint rozdzieloną przecinkami do sprawdzenia.
Używane tylko wtedy, gdy $(AndroidLintEnabled)=True.
Uwaga: zostaną sprawdzone tylko te problemy.
AndroidManagedSymbols
Właściwość logiczna, która kontroluje, czy punkty sekwencyjne są generowane, aby można było wyodrębnić informacje o nazwie pliku i numerze wiersza ze śladów stosu Release.
AndroidManifest
Określa nazwę pliku do użycia jako szablon dla aplikacji AndroidManifest.xml.
Podczas kompilacji wszystkie inne niezbędne wartości zostaną scalone, aby utworzyć rzeczywisty element AndroidManifest.xml.
Element $(AndroidManifest) musi zawierać nazwę pakietu w atrybucie /manifest/@package .
AndroidManifestMerger
Określa implementację scalania plikówAndroidManifest.xml . Jest to właściwość typu wyliczeniowego, w której legacy wybiera oryginalną implementację języka C# i manifestmerger.jar wybiera implementację języka Java firmy Google.
Wartość domyślna to obecnie manifestmerger.jar. Jeśli chcesz użyć starej wersji, dodaj następujący kod do pliku csproj
<AndroidManifestMerger>legacy</AndroidManifestMerger>
Fuzja firmy Google umożliwia obsługę xmlns:tools="http://schemas.android.com/tools" zgodnie z opisem w dokumentacji systemu Android.
AndroidManifestMergerExtraArgs
Właściwość typu string do przekazywania argumentów do narzędzia dokumentacji systemu Android.
Jeśli chcesz uzyskać szczegółowe dane wyjściowe z narzędzia, możesz dodać następujące dane do pliku .csproj.
<AndroidManifestMergerExtraArgs>--log VERBOSE</AndroidManifestMergerExtraArgs>
AndroidManifestType
Właściwość stylu wyliczenia z prawidłowymi wartościami Xamarin lub GoogleV2.
To kontroluje, które repozytorium jest używane przez
InstallAndroidDependencies Docelowy element służy do określenia, które pakiety Android i wersje pakietów są dostępne i można je zainstalować.
Xamarin to repozytorium Zatwierdzona lista (rekomendowana) w Menedżer zestawu SDK programu Visual Studio.
GoogleV2 to repozytorium Pełna lista (nieobsługiwana) w Menedżerze zestawu SDK programu Visual Studio.
Jeśli $(AndroidManifestType) nie jest ustawiona, Xamarin zostanie użyta.
AndroidManifestPlaceholders
Rozdzielana średnikami lista par zastępczych klucz-wartość dla AndroidManifest.xml, gdzie każda para ma format key=value.
Na przykład wartość właściwości assemblyName=$(AssemblyName) definiuje ${assemblyName} symbol zastępczy, który następnie może pojawić się w AndroidManifest.xml:
<application android:label="${assemblyName}"
Zapewnia to sposób wstawiania zmiennych z procesu kompilacji do pliku AndroidManifest.xml .
AndroidMultiDexClassListExtraArgs
Właściwość typu string, która umożliwia deweloperom przekazywanie argumentów do com.android.multidex.MainDexListBuilder podczas generowania pliku multidex.keep.
Jeśli podczas kompilacji pojawia się następujący błąd dx, jest to jeden konkretny przypadek.
com.android.dex.DexException: Too many classes in --main-dex-list, main dex capacity exceeded
Jeśli wystąpi ten błąd, możesz dodać następujący kod do pliku .csproj.
<DxExtraArguments>--force-jumbo </DxExtraArguments>
<AndroidMultiDexClassListExtraArgs>--disable-annotation-resolution-workaround</AndroidMultiDexClassListExtraArgs>
które umożliwią, aby krok dx zakończył się powodzeniem.
AndroidPackageFormat
Właściwość stylu wyliczenia z prawidłowymi wartościami apk lub aab. Wskazuje, czy chcesz spakować aplikację systemu Android jako plik APK lub pakiet aplikacji systemu Android. Pakiety aplikacji to nowy format Release kompilacji przeznaczonych do przesyłania w sklepie Google Play. Domyślna wartość to apk.
Gdy $(AndroidPackageFormat) ustawiono wartość aab, ustawiane są także inne właściwości programu MSBuild, które wymagane są dla pakietów aplikacji systemu Android.
- Parametr
$(AndroidUseAapt2)ma wartośćTrue. - Parametr
$(AndroidUseApkSigner)ma wartośćFalse. - Parametr
$(AndroidCreatePackagePerAbi)ma wartośćFalse.
Ta właściwość będzie wycofana w przypadku platformy .NET 6. Użytkownicy powinni przełączyć się na nowsze AndroidPackageFormats.
AndroidPackageFormats
Właściwość oddzielana średnikami z prawidłowymi wartościami apk i aab.
Wskazuje, czy chcesz spakować aplikację systemu Android jako plik APK lub pakiet aplikacji systemu Android. Pakiety aplikacji to nowy format Release kompilacji przeznaczonych do przesyłania w sklepie Google Play.
Podczas kompilowania wersji przeznaczonej do wydania warto wygenerować zarówno aab, jak i apk do dystrybucji w różnych sklepach.
Ustawienie AndroidPackageFormats na aab;apk spowoduje wygenerowanie obu. Ustawienie AndroidPackageFormats wartości aab lub apk spowoduje wygenerowanie tylko jednego pliku.
Wartość domyślna to aab;apk tylko dla kompilacji Release.
Zaleca się kontynuowanie używania tylko apk do debugowania.
AndroidPackageNamingPolicy
Właściwość typu wyliczeniowego określająca nazwy pakietów Java dla wygenerowanego kodu źródłowego Java.
Jedyną obsługiwaną wartością jest LowercaseCrc64.
AndroidPrepareForBuildDependsOn
Właściwość rozdzielana średnikami, która może służyć do rozszerzania procesu kompilacji systemu Android. Obiekty docelowe programu MSBuild dodane do tej właściwości będą wykonywane na wczesnym etapie kompilacji zarówno dla typów projektów Aplikacji, jak i Biblioteki. Ta właściwość jest domyślnie pusta.
Przykład:
<PropertyGroup>
<AndroidPrepareForBuildDependsOn>MyCustomTarget</AndroidPrepareForBuildDependsOn>
</PropertyGroup>
<Target Name="MyCustomTarget" >
<Message Text="Running target: 'MyCustomTarget'" Importance="high" />
</Target>
AndroidProguardMappingFile
Określa regułę -printmapping proguard dla r8. Oznacza to, mapping.txt że plik zostanie utworzony w folderze $(OutputPath) . Ten plik może być następnie używany podczas przekazywania pakietów do Sklepu Google Play.
Domyślnie ten plik jest generowany automatycznie podczas korzystania z pliku AndroidLinkTool=r8 i wygeneruje następujący plik $(OutputPath)mapping.txt.
Jeśli nie chcesz wygenerować tego pliku mapowania, możesz użyć AndroidCreateProguardMappingFile właściwości , aby zatrzymać tworzenie pliku .
Dodaj następujący kod w projekcie
<AndroidCreateProguardMappingFile>False</AndroidCreateProguardMappingFile>
lub użyj polecenia -p:AndroidCreateProguardMappingFile=False w wierszu polecenia.
AndroidD8IgnorujOstrzeżenia
Określa --map-diagnostics warning info do przekazania do d8. Wartość domyślna to True, ale można ustawić na False, aby wymusić bardziej rygorystyczne zachowanie. Aby uzyskać szczegółowe informacje, zobacz kod źródłowy D8 i R8 .
Dodano do platformy .NET 8.
AndroidR8IgnoreWarnings
Określa regułę -ignorewarnings proguard dla r8. Umożliwia r8 to kontynuowanie kompilacji dex nawet w przypadku napotkania niektórych ostrzeżeń. Wartość domyślna to True, ale można ustawić False, aby wymusić bardziej rygorystyczne zachowanie. Aby uzyskać szczegółowe informacje, zobacz podręcznik ProGuard .
Począwszy od platformy .NET 8, określa wartość --map-diagnostics warning info. Aby uzyskać szczegółowe informacje, zobacz kod źródłowy D8 i R8 .
AndroidR8JarPath
Ścieżka do r8.jar użycia z kompilatorem r8 dex-compiler i shrinker. Wartość domyślna to ścieżka do instalacji pakietu .NET dla systemu Android. Aby uzyskać więcej informacji, zobacz naszą dokumentację dotyczącą D8 i R8.
AndroidResgenExtraArgs
Określa opcje linii poleceń, które mają być przekazywane do polecenia aapt podczas przetwarzania zasobów Androida.
AndroidResgenFile
Określa nazwę pliku zasobu do wygenerowania. Domyślny szablon ustawia to na Resource.designer.cs.
AndroidResourceDesignerClassModifier
Określa modyfikator klas dla klasy pośredniej Resource , która jest generowana. Prawidłowe wartości to public i internal.
Domyślnie to będzie public.
Dodano do platformy .NET 9.
AndroidSdkBuildToolsVersion
Pakiet narzędzi kompilacji zestawu ANDROID SDK udostępnia między innymi narzędzia aapt i zipalign . Wiele różnych wersji pakietu narzędzi kompilacji może być zainstalowanych jednocześnie. Pakiet narzędzi kompilacji wybrany do pakietowania odbywa się poprzez sprawdzenie i użycie "preferowanej" wersji narzędzi kompilacji, jeśli jest obecna; jeśli "preferowana" wersja nie jest obecna, używany jest pakiet narzędzi kompilacji o najwyższej wersji zainstalowanej.
Właściwość $(AndroidSdkBuildToolsVersion) MSBuild zawiera preferowaną wersję narzędzi kompilacji. System kompilacji .NET dla Androida zapewnia domyślną wartość w elemencie Xamarin.Android.Common.targets, a wartość ta może zostać zastąpiona w pliku projektu, aby wybrać alternatywną wersję narzędzi kompilacyjnych, jeśli (na przykład) najnowsza wersja aapt ulega awarii, podczas gdy poprzednia wersja aapt jest znana jako działająca.
AndroidSigningKeyAlias
Określa alias klucza w magazynie kluczy. Jest to wartość keytool -alias używana podczas tworzenia magazynu kluczy.
AndroidSigningKeyPass
Określa hasło klucza w pliku magazynu kluczy. Jest to wartość wprowadzona na żądanie keytool, gdy wyświetla się komunikat Enter key password for $(AndroidSigningKeyAlias).
Ta właściwość obsługuje również prefiksy env: i file:, których można użyć do określenia zmiennej środowiskowej lub pliku zawierającego hasło.
Te opcje umożliwiają zapobieganie wyświetlaniu hasła w dziennikach kompilacji.
Aby na przykład użyć zmiennej środowiskowej o nazwie AndroidSigningPassword:
<PropertyGroup>
<AndroidSigningKeyPass>env:AndroidSigningPassword</AndroidSigningKeyPass>
</PropertyGroup>
Aby użyć pliku znajdującego się w lokalizacji C:\Users\user1\AndroidSigningPassword.txt:
<PropertyGroup>
<AndroidSigningKeyPass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningKeyPass>
</PropertyGroup>
Uwaga / Notatka
Prefiks env: nie jest obsługiwany, gdy $(AndroidPackageFormat) jest ustawiony na aab.
AndroidSigningKeyStore
Określa nazwę pliku magazynu kluczy utworzonego przez keytool. Odpowiada to wartości podanej opcji keytool -keystore .
AndroidSigningStorePass
Określa hasło dla $(AndroidSigningKeyStore).
Jest to wartość podana keytool podczas tworzenia pliku magazynu kluczy i zapytania Wprowadź hasło magazynu kluczy:.
Ta właściwość obsługuje również prefiksy env: i file:, których można użyć do określenia zmiennej środowiskowej lub pliku zawierającego hasło. Te opcje umożliwiają zapobieganie wyświetlaniu hasła w dziennikach kompilacji.
Aby na przykład użyć zmiennej środowiskowej o nazwie AndroidSigningPassword:
<PropertyGroup>
<AndroidSigningStorePass>env:AndroidSigningPassword</AndroidSigningStorePass>
</PropertyGroup>
Aby użyć pliku znajdującego się w lokalizacji C:\Users\user1\AndroidSigningPassword.txt:
<PropertyGroup>
<AndroidSigningStorePass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningStorePass>
</PropertyGroup>
Uwaga / Notatka
Prefiks env: nie jest obsługiwany, gdy wartość $(AndroidPackageFormat) jest ustawiona na aab.
AndroidSigningPlatformKey
Określa plik klucza, który ma być używany do podpisywania pliku apk.
Jest to używane tylko podczas kompilowania system aplikacji.
AndroidSigningPlatformCert
Określa plik certyfikatu, który ma być używany do podpisywania pliku apk.
Jest to używane tylko podczas kompilowania system aplikacji.
AndroidStripILAfterAOT
Właściwość logiczna określająca, czy ciała metod skompilowanych metod AOT zostaną usunięte.
Wartość domyślna to false, a elementy metody skompilowanych metod AOT nie zostaną usunięte.
Gdy ustawione jest na true, $(AndroidEnableProfiledAot) jest domyślnie ustawiane na false.
Oznacza to, że w kompilacjach konfiguracji wydania — w której $(RunAOTCompilation) jest true domyślnie — funkcja AOT jest włączona dla wszystkich elementów.
Może to spowodować zwiększenie rozmiaru aplikacji. To zachowanie można zastąpić, jawnie ustawiając $(AndroidEnableProfiledAot) na true w pliku projektu.
Obsługa eksperymentalna tej właściwości została dodana na platformie .NET 8, usunięta na platformie .NET 10.
AndroidStripNativeLibraries
Boolowska właściwość, która nakazuje procesowi pakowania usuwać symbole debugowania z natywnych bibliotek współdzielonych (.so plików).
Wartość domyślna to false i symbole debugowania, jeśli istnieją, zostaną zachowane podczas pakowania.
AndroidSupportedAbis
Właściwość ciągu zawierająca listę rozdzielaną średnikiem (;) ABI, które powinny zostać uwzględnione w obiekcie .apk.
Obsługiwane wartości to:
armeabi-v7ax86arm64-v8ax86_64
AndroidTlsProvider
Ta właściwość jest przestarzała i nie powinna być używana.
AndroidUseAapt2
Była to właściwość platformy Xamarin.Android, która nie ma wpływu na platformę .NET dla systemu Android.
aapt2 jest zawsze używany i nie można go wyłączyć.
AndroidUseApkSigner
Właściwość logiczna, która umożliwia deweloperowi korzystać z narzędzia apksigner zamiast jarsigner.
AndroidUseDefaultAotProfile
Właściwość logiczna, która umożliwia deweloperowi wyłączenie użycia domyślnych profilów AOT.
Aby pominąć domyślne profile AOT, ustaw właściwość na false.
AndroidUseDesignerAssembly
Właściwość logiczna, która kontroluje, czy system kompilacji wygeneruje plik _Microsoft.Android.Resource.Designer.dll zamiast pliku Resource.Designer.cs. Korzyści wynikające z tego są mniejsze aplikacje i krótszy czas uruchamiania.
Wartość domyślna to true w .NET 8.
Jako autor Nuget zaleca się udostępnienie trzech wersji zestawu, jeśli chcesz zachować kompatybilność wsteczną.
Jeden dla MonoAndroid, jeden dla net6.0-android i jeden dla net8.0-android. Możesz to zrobić przy użyciu zestawu Xamarin.Legacy.Sdk. Jest to wymagane tylko wtedy, gdy projekt Biblioteki Nuget korzysta z AndroidResource elementów w projekcie lub za pośrednictwem zależności.
<TargetFrameworks>monoandroid90;net6.0-android;net8.0-android</TargetFrameworks>
Możesz też wyłączyć to ustawienie, dopóki nie zostanie wycofana zarówno wersja klasyczna, jak i net7.0-android.
Projekty platformy .NET 8, które zdecydują się wyłączyć to ustawienie, nie będą mogły korzystać z odwołań, które go używają. Jeśli spróbujesz użyć zestawu, który ma tę funkcję włączoną w projekcie, który nie, zostanie wyświetlony XA1034 błąd kompilacji.
Dodano do platformy .NET 8.
AndroidUseInterpreter
Właściwość logiczna, która powoduje .apk, że interpreter mono jest używany, a nie normalny tryb JIT.
Eksperymentalny
AndroidUseLegacyVersionCode
Właściwość logiczna, która umożliwia deweloperowi przywrócenie obliczeń versionCode z powrotem do starego zachowania przed Xamarin.Android 8.2. Powinno to być używane tylko dla deweloperów z istniejącymi aplikacjami w Sklepie Google Play. Zdecydowanie zaleca się użycie nowej $(AndroidVersionCodePattern) właściwości.
AndroidUseManagedDesignTimeResourceGenerator
Właściwość logiczna, która przełączy kompilacje podczas fazy projektowania do używania analizatora zasobów zarządzanych zamiast aapt.
AndroidUseNegotiateAuthentication
Właściwość logiczna, która umożliwia obsługę uwierzytelniania NTLMv2/Negotiate w programie AndroidMessageHandler. Wartość domyślna to False.
Dodano w programie .NET 7.
AndroidUseSharedRuntime
Ta właściwość jest przestarzała i nie powinna być używana.
AndroidVersionCode
Właściwość MSBuild, która może być używana jako alternatywa /manifest/@android:versionCode dla pliku AndroidManifest.xml . Aby wyrazić zgodę na tę funkcję, należy również włączyć funkcję <GenerateApplicationManifest>true</GenerateApplicationManifest>.
Będzie to wartość domyślna w programie .NET 6.
Ta właściwość jest ignorowana, jeśli $(AndroidCreatePackagePerAbi) i $(AndroidVersionCodePattern) jest używana.
@android:versionCode to wartość całkowita, która musi być zwiększana dla każdej wersji sklepu Google Play. Aby uzyskać więcej informacji na temat wymagań dotyczących programu , zobacz /manifest/@android:versionCode.
AndroidVersionCodePattern
Właściwość ciągu, która umożliwia deweloperowi dostosowanie elementu versionCode w manifeście.
Aby uzyskać informacje na temat podejmowania decyzji, zobacz versionCode.
Niektóre przykłady, jeśli abi jest armeabi i versionCode w manifeście to 123, {abi}{versionCode} wygeneruje wartość versionCode równą 1123 gdy $(AndroidCreatePackagePerAbi) ma wartość True; w przeciwnym razie wygeneruje wartość 123.
Jeśli abi jest x86_64 i versionCode w manifeście jest 44. Spowoduje to wygenerowanie 544 gdy $(AndroidCreatePackagePerAbi) wynosi True, w przeciwnym razie wygeneruje wartość 44.
Jeśli dołączymy ciąg formatu dopełnienia po lewej {abi}{versionCode:0000}, to wygeneruje 50044, ponieważ wypełniamy versionCode za pomocą 0. Alternatywnie można użyć dopełnienia dziesiętnego, takiego jak
{abi}{versionCode:D4} który robi to samo, co w poprzednim przykładzie.
Obsługiwane są tylko ciągi formatowania dopełniaczy "0" i "Dx", ponieważ wartość MUSI być liczbą całkowitą.
Wstępnie zdefiniowane elementy klucza
ABI — wstawia docelowe ABI dla aplikacji
- 2 –
armeabi-v7a - 3 –
x86 - 4 –
arm64-v8a - 5 –
x86_64
- 2 –
minSDK — wstawia minimalną obsługiwaną wartość SDK wziętą z
AndroidManifest.xmllub11, jeśli żadna z nich nie jest zdefiniowana.versionCode — używa kodu wersji bezpośrednio z pliku
Properties\AndroidManifest.xml.
Elementy niestandardowe można zdefiniować przy użyciu $(AndroidVersionCodeProperties) właściwości (zdefiniowanej dalej).
Domyślnie wartość zostanie ustawiona na {abi}{versionCode:D6}. Jeśli deweloper chce zachować stare zachowanie, można przesłonić domyślne ustawienia, konfigurując właściwość $(AndroidUseLegacyVersionCode) na true.
AndroidVersionCodeProperties
Właściwość ciągu, która umożliwia deweloperowi definiowanie elementów niestandardowych do użycia z elementem $(AndroidVersionCodePattern).
Mają formę pary key=value. Wszystkie elementy w obiekcie value powinny być wartościami całkowitymi. Na przykład: screen=23;target=$(_AndroidApiLevel). Jak widać, możesz użyć istniejących lub niestandardowych właściwości narzędzia MSBuild wewnątrz ciągu.
Identyfikator aplikacji
Właściwość MSBuild, która może być używana jako alternatywa /manifest/@package dla pliku AndroidManifest.xml . Aby wyrazić zgodę na tę funkcję, należy również włączyć funkcję <GenerateApplicationManifest>true</GenerateApplicationManifest>.
Będzie to wartość domyślna w programie .NET 6.
Aby uzyskać więcej informacji na temat wymagań dotyczących programu , zobacz /manifest/@package.
NazwaAplikacji
Właściwość MSBuild, która może być używana jako alternatywa /manifest/application/@android:label dla pliku AndroidManifest.xml . Aby wyrazić zgodę na tę funkcję, należy również włączyć funkcję <GenerateApplicationManifest>true</GenerateApplicationManifest>.
Będzie to wartość domyślna w programie .NET 6.
Aby uzyskać więcej informacji na temat wymagań dotyczących programu , zobacz /manifest/application/@android:label.
WersjaAplikacji
Właściwość MSBuild, która może być używana jako alternatywa /manifest/@android:versionName dla pliku AndroidManifest.xml . Aby wyrazić zgodę na tę funkcję, należy również włączyć funkcję <GenerateApplicationManifest>true</GenerateApplicationManifest>.
Będzie to wartość domyślna w programie .NET 6.
Aby uzyskać więcej informacji na temat wymagań dotyczących programu , zobacz /manifest/@android:versionName.
AotAssemblies
Właściwość logiczna określająca, czy moduły będą kompilowane wyprzedzająco do kodu natywnego i uwzględnione w aplikacjach, czy nie.
Ta właściwość jest False domyślnie.
Przestarzałe na platformie .NET 7. Zamiast tego migruj do nowej właściwości MSBuild $(RunAOTCompilation), ponieważ wsparcie dla $(AotAssemblies) zostanie usunięte w przyszłej wersji.
AProfUtilDodatkoweOpcje
Dodatkowe opcje przekazywania do aprofutil.
BeforeBuildAndroidAssetPacks
Cele programu MSBuild wymienione w tej właściwości będą uruchamiane bezpośrednio przed skompilowaniem elementów AssetPack.
Dodano w programie .NET 9
PrzedWygenerowaniemAndroidManifest
Obiekty docelowe programu MSBuild wymienione w tej właściwości będą uruchamiane bezpośrednio przed _GenerateJavaStubs.
Konfiguracja
Określa konfigurację kompilacji do użycia, taką jak "Debug" lub "Release". Właściwość Configuration służy do określania wartości domyślnych dla innych właściwości, które określają zachowanie obiektu docelowego. Dodatkowe konfiguracje można utworzyć w środowisku IDE.
DomyślnieDebug konfiguracja spowoduje
Install i
SignAndroidPackage ma na celu tworzenie mniejszego pakietu Androida, który będzie wymagał obecności innych plików i pakietów do działania.
Domyślna konfiguracja Release spowoduje, że element
Install i
SignAndroidPackage docelowo tworzy pakiet Android samodzielny, który może być używany bez instalowania innych pakietów lub plików.
DebugSymbols
Wartość logiczna określająca, czy pakiet systemu Android jest debugowalny, w połączeniu z właściwością $(DebugType) .
Pakiet debugowalny zawiera symbole debugowania, ustawia //application/@android:debuggable atrybut na true, a następnie automatycznie dodaje element
INTERNET uprawnienie umożliwiające dołączanie debugera do procesu. Aplikacja jest debugowalna, jeśli DebugSymbols jest TrueiDebugType jest pustym ciągiem lub Full.
Typ debugowania
Określa typ symboli debugowania do wygenerowania w ramach kompilacji, co ma również wpływ na to, czy aplikacja jest debugowana. Możliwe wartości to:
Pełne: generowane są pełne symbole. Jeśli
DebugSymbolsWłaściwość MSBuild jest również ustawiona naTrue, wtedy pakiet aplikacji jest debugowalny.PdbOnly: są generowane symbole "PDB". Pakiet aplikacji nie jest debugowalny.
Jeśli DebugType nie jest ustawiony lub jest pustym ciągiem, właściwość określa, DebugSymbols czy aplikacja jest debugowalna.
Urządzenie
Określa, które urządzenie z systemem Android lub emulator ma być celem podczas korzystania z dotnet run --device <Device> lub obiektów docelowych programu MSBuild, które współdziałają z urządzeniami (takimi jak Run, Install lub Uninstall).
Wartość musi być pełnym numerem seryjnym lub identyfikatorem urządzenia zwróconym przez adb devices. Jeśli na przykład numer seryjny urządzenia to emulator-5554, należy użyć polecenia -p:Device=emulator-5554.
Po ustawieniu ta właściwość jest używana do inicjowania właściwości AdbTarget o wartości -s "<Device>".
Aby uzyskać więcej informacji na temat wyboru urządzenia, zobacz specyfikację wyboru urządzenia zestawu .NET SDK.
Adres diagnostyczny
Wartość dostarczana przez dotnet-dsrouter taka jak 127.0.0.1, składnik adresu IP z $(DiagnosticConfiguration) lub $DOTNET_DiagnosticPorts.
Niejawnie włącza składnik diagnostyczny Mono, co oznacza, że $(EnableDiagnostics)/$(AndroidEnableProfiler) ustawiono na true.
Wartość domyślna to 127.0.0.1.
Konfiguracja diagnostyczna
Wartość podana przez dotnet-dsrouter dla $DOTNET_DiagnosticPorts, taka jak:
127.0.0.1:9000,suspend,connect127.0.0.1:9000,nosuspend,connect
Należy pamiętać, że znak , musi zostać zescapowany za pomocą %2c, jeśli zostanie przekazany w wierszu polecenia do dotnet build:
dotnet build -c Release -p:DiagnosticConfiguration=127.0.0.1:9000%2csuspend%2cconnect
Spowoduje to automatyczne ustawienie zmiennej środowiskowej $DOTNET_DiagnosticPorts spakowanej wewnątrz aplikacji.
Niejawnie włącza składnik diagnostyczny Mono, co oznacza, że $(EnableDiagnostics)/$(AndroidEnableProfiler) jest ustawione na true.
DiagnosticListenMode
Wartość podana przez dotnet-dsrouter , taka jak connect, składnik trybu nasłuchiwania $(DiagnosticConfiguration) lub $DOTNET_DiagnosticPorts.
Niejawnie włącza składnik diagnostyczny Mono, co oznacza, że $(EnableDiagnostics), / i $(AndroidEnableProfiler) są ustawione na true.
Wartość domyślna to connect.
DiagnosticPort
Wartość podana przez dotnet-dsrouter, taka jak 9000, składnik portu $(DiagnosticConfiguration) lub $DOTNET_DiagnosticPorts.
Niejawnie włącza składnik diagnostyczny Mono, co oznacza, że $(EnableDiagnostics)/$(AndroidEnableProfiler) jest ustawione na true.
Wartość domyślna to 9000.
DiagnosticSuspend
Wartość logiczna, dostarczana przez dotnet-dsrouter, taka jak true/suspend lub false/nosuspend, będąca składnikiem $(DiagnosticConfiguration) lub $DOTNET_DiagnosticPorts.
Niejawnie włącza składnik diagnostyczny Mono, co oznacza, że $(EnableDiagnostics)/$(AndroidEnableProfiler) jest ustawiony na true.
Wartość domyślna to false.
EmbedAssembliesIntoApk
Właściwość logiczna określająca, czy zestawy aplikacji powinny być osadzone w pakiecie aplikacji.
Ta właściwość powinna być ustawiona na True dla kompilacji Release i na False dla kompilacji Debug.
Może być konieczne użycie buildów debugowania, jeśli szybkie wdrażanie nie obsługuje urządzenia docelowego.
Gdy ta właściwość ma wartość False, wówczas właściwość
$(AndroidFastDeploymentType) Właściwość MSBuild kontroluje również, co zostanie osadzone w .apk, co może wpływać na czas wdrażania i odbudowy.
WłączDiagnostykę
Synonim właściwości $(AndroidEnableProfiler) .
Wymagane do używania dotnet-trace lub dotnet-gcdump w aplikacjach systemu Android. Jeśli ustawiono tę wartość na true, aplikacja zawiera składnik diagnostyczny Mono. Ten składnik jest biblioteką natywną libmono-component-diagnostics_tracing.so .
Ta właściwość jest False domyślnie.
Włączenie LLVM
Właściwość logiczna określająca, czy LLVM będzie używany podczas kompilowania zestawów do kodu natywnego w trybie Ahead-of-Time.
Aby utworzyć projekt z włączoną tą właściwością, należy zainstalować zestaw NDK systemu Android.
Ta właściwość jest False domyślnie.
Ta właściwość jest ignorowana, chyba że $(AotAssemblies) właściwość MSBuild ma wartość True.
Włącz Proguard
Właściwość logiczna określająca, czy proguard jest uruchamiana w ramach procesu pakowania w celu połączenia kodu Java.
Ta właściwość jest False domyślnie.
Kiedy True pliki @(ProguardConfiguration) będą używane do kontrolowania wykonywania proguard.
EventSourceSupport
Po ustawieniu wartości false, wyłącza obsługę EventSource platformy .NET w przycinanych aplikacjach mobilnych systemu Android. Wyłączenie tej funkcji uniemożliwiłoby działanie narzędzi diagnostycznych platformy .NET, takich jak dotnet-counters, co jednak zmniejsza rozmiar aplikacji.
Ustawione na false domyślnie w trybie Release, chyba że $(EnableDiagnostics) albo $(AndroidEnableProfiler) są włączone.
GenerowanieManifestuAplikacji
Włącza lub wyłącza następujące właściwości programu MSBuild, które emitują wartości w pliku końcowym AndroidManifest.xml :
Wartość $(GenerateApplicationManifest) domyślna to true.
JavaMaximumHeapSize
Określa wartość parametru java-Xmx , która ma być używana podczas kompilowania .dex pliku w ramach procesu pakowania. Jeśli nie określono -Xmx , opcja zaopatruje Java w wartość 1G. Okazało się, że jest to często wymagane w systemie Windows w porównaniu z innymi platformami.
Określenie tej właściwości jest konieczne, jeśli _CompileDex element docelowy zgłasza wartość java.lang.OutOfMemoryError.
Dostosuj wartość, zmieniając:
<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>
JavaOptions
Określa opcje wiersza polecenia, które mają być przekazywane do języka Java podczas kompilowania .dex pliku.
JarsignerTimestampAuthorityCertificateAlias
Ta właściwość umożliwia określenie aliasu w magazynie kluczy dla urzędu sygnowania czasowego. Aby uzyskać więcej informacji, zobacz dokumentację obsługi znacznika czasu podpisu Java.
<PropertyGroup>
<JarsignerTimestampAuthorityCertificateAlias>Alias</JarsignerTimestampAuthorityCertificateAlias>
</PropertyGroup>
JarsignerTimestampAuthorityUrl
Ta właściwość umożliwia określenie adresu URL dla usługi autoryzacji znaczników czasu. Może to służyć do upewnienia się, że .apk podpis zawiera sygnaturę czasową.
Więcej szczegółów znajdziesz w dokumentacji Obsługi znaczników czasowych sygnatur w języku Java.
<PropertyGroup>
<JarsignerTimestampAuthorityUrl>http://example.tsa.url</JarsignerTimestampAuthorityUrl>
</PropertyGroup>
LinkerDumpDependencies
Właściwość logiczna, która umożliwia generowanie pliku zależności linkera. Ten plik może służyć jako dane wejściowe dla narzędzia illinkanalyzer .
Plik zależności o nazwie linker-dependencies.xml.gz jest zapisywany w katalogu projektu. Na platformie .NET5/6 jest zapisywane obok powiązanych zestawów w katalogu obj/<Configuration>/android<ABI>/linked.
Wartość domyślna to False.
MandroidI18n
Ta właściwość MSBuild jest przestarzała i nie jest już obsługiwana.
MetricsSupport
Gdy wartość jest ustawiona na false, wyłącza obsługę metryk dla platformy .NET w zoptymalizowanych aplikacjach systemu Android. Wyłączenie tej funkcji uniemożliwiłoby działanie takich interfejsów API, jak System.Diagnostics.Metrics, ale z korzyścią dla zmniejszenia rozmiaru aplikacji.
Domyślnie ustawione na false w trybie Release, chyba że $(EnableDiagnostics) lub $(AndroidEnableProfiler) są włączone.
MonoAndroidAssetPrefix
Określa prefiks ścieżki, który jest usuwany z początku nazw plików, które mają akcję kompilacji AndroidAsset. Umożliwia to zmianę lokalizacji zasobów.
Domyślna wartość to Assets. Zmień tę wartość na assets dla struktury projektu Java.
MonoAndroidResourcePrefix
Określa prefiks ścieżki, który jest usuwany z początku nazw plików podczas akcji kompilacji AndroidResource. Umożliwia to zmianę lokalizacji zasobów.
Domyślna wartość to Resources. Zmień tę wartość na res dla struktury projektu Java.
MonoSymbolArchive
Uwaga / Notatka
Była to starsza właściwość MSBuild z platformy Xamarin.Android. Niedostępne na platformie .NET 6+.
Właściwość logiczna, która kontroluje, czy .mSYM artefakty są tworzone do późniejszego użycia z elementem mono-symbolicate, aby wyodrębnić "rzeczywistą" nazwę pliku i informacje o numerze wiersza ze śladów stosu wydania.
Jest to wartość True domyślnie dla aplikacji "Release", które mają włączone symbole debugowania: $(EmbedAssembliesIntoApk) ma wartość True,
$(DebugSymbols) ma wartość True i
$(Optimize) ma wartość True.
RunAOTCompilation
Właściwość logiczna określająca, czy moduły będą kompilowane wyprzedzająco do kodu natywnego i uwzględnione w aplikacjach, czy nie.
Ta właściwość jest domyślnie False dla kompilacji Debug i domyślnie True dla kompilacji Release.
Ta właściwość MSBuild zastępuje właściwość MSBuild $(AotAssemblies) z Xamarin.Android. Jest to ta sama właściwość używana dla platformy Blazor WASM.
WaitForExit
Właściwość logiczna, która kontroluje zachowanie dotnet run podczas uruchamiania aplikacji systemu Android.
Jeśli $(WaitForExit) nie jest false (wartość domyślna), dotnet run będzie:
- Uruchamianie aplikacji systemu Android
- Przesyłanie strumienia
logcatfiltrowanych danych wyjściowych do procesu aplikacji - Poczekaj na zakończenie działania aplikacji lub naciśnij klawisze Ctrl+C
- Wymuś zatrzymanie aplikacji po naciśnięciu klawiszy Ctrl+C
Kiedy $(WaitForExit) ma wartość false, dotnet run uruchomi aplikację za pomocą adb shell am start i natychmiast wróci bez oczekiwania na zakończenie aplikacji lub przesyłania jakichkolwiek danych wyjściowych.
Wprowadzono w programie .NET 11.