Udostępnij za pośrednictwem


Właściwości kompilacji

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.

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

Obiekty docelowe programu MSBuild wymienione w tej właściwości będą uruchamiane bezpośrednio po _GenerateJavaStubs wewnętrznym obiekcie docelowym, w którym AndroidManifest.xml jest generowany plik w obiekcie $(IntermediateOutputPath). Jeśli chcesz wprowadzić jakiekolwiek modyfikacje wygenerowanego AndroidManifest.xml pliku, możesz to zrobić przy użyciu tego punktu rozszerzenia.

Dodano element w programie Xamarin.Android 9.4.

AndroidAapt2CompileExtraArgs

Określa opcje wiersza polecenia, które mają być przekazywane do polecenia kompilowania aapt2 podczas przetwarzania zasobów i zasobów systemu Android.

Dodano element w programie Xamarin.Android 9.1.

AndroidAapt2LinkExtraArgs

Określa opcje wiersza polecenia, które mają być przekazywane do polecenia linku aapt2 podczas przetwarzania zasobów i zasobów systemu Android.

Dodano element w programie Xamarin.Android 9.1.

AndroidAddKeepAlives

Właściwość logiczna, która kontroluje, czy konsolidator wstawi GC.KeepAlive() wywołania w projektach powiązań, aby zapobiec przedwczesnej kolekcji obiektów.

Wartość domyślna dotyczy True kompilacji konfiguracji wydania.

Ta właściwość została dodana w środowisku Xamarin.Android 11.2.

AndroidAotAdditionalArguments

Właściwość ciągu, która umożliwia przekazywanie opcji do kompilatora Mono podczas Aot zadania dla projektów, które mają $(AndroidEnableProfiledAot) wartość lub $(AotAssemblies) mają wartość 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. Dodano element w środowisku Xamarin.Android 10.1.

AndroidAotProfilerPort

Port, z który aprofutil powinien nawiązać połączenie podczas uzyskiwania danych profilowania.

AndroidAotEnableLazyLoad

Włącz ładowanie opóźnione (opóźnione) zestawów AOT-d zamiast wstępnego ładowania ich podczas uruchamiania. Wartość domyślna dotyczy True kompilacji wydania z włączoną dowolną formą AOT.

Wprowadzone na platformie .NET 6.

AndroidApkDigestAlgorithm

Wartość ciągu określająca algorytm szyfrujący do użycia z elementem jarsigner -digestalg.

Domyślna wartość to SHA-256. W programie Xamarin.Android 10.0 i starszych wersjach wartość domyślna to SHA1.

Dodano element w programie Xamarin.Android 9.4.

AndroidApkSignerAdditionalArguments

Właściwość ciągu, która umożliwia deweloperowi dostarczanie argumentów apksigner do narzędzia.

Dodano w środowisku Xamarin.Android 8.2.

AndroidApkSigningAlgorithm

Wartość ciągu określająca algorytm podpisywania do użycia z jarsigner -sigalg.

Domyślna wartość to SHA256withRSA. W programie Xamarin.Android 10.0 i starszych wersjach wartość domyślna to md5withRSA.

Dodano w środowisku Xamarin.Android 8.2.

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.<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 klasy, gdy klasa dziedziczy z elementu Android.App.Application.

Właściwość $(AndroidApplicationJavaClass) jest zazwyczaj ustawiana przez inne właściwości, takie jak $(AndroidEnableMultiDex) właściwość MSBuild.

Dodano element w środowisku Xamarin.Android 6.1.

AndroidBinUtilsPath

Ścieżka do katalogu zawierającego binutils systemu Android, takie jak ld, natywny konsolidator i as, asembler natywny. Te narzędzia są zawarte w instalacji platformy Xamarin.Android.

Domyślna wartość to $(MonoAndroidBinDirectory)\binutils\bin\.

Dodano element w środowisku Xamarin.Android 10.0.

AndroidBoundExceptionType

Wartość ciągu określająca sposób propagacji wyjątków, gdy typ dostarczany przez platformę Xamarin.Android implementuje typ lub interfejs platformy .NET pod względem typów Języka Java, na przykład Android.Runtime.InputStreamInvoker i , lub i Android.Runtime.JavaDictionary System.Collections.IDictionary.System.IO.Stream

  • Java: oryginalny typ wyjątku Języka Java jest propagowany w następujący sposób.

    Javaoznacza, że na przykład nie implementuje poprawnie interfejsu System.IO.Stream API, InputStreamInvoker ponieważ Java.IO.IOException może zostać zgłoszony z Stream.Read() elementu zamiast System.IO.IOException.

    Java jest zachowaniem propagacji wyjątku we wszystkich wersjach platformy Xamarin.Android, w tym platformy Xamarin.Android 13.0.

  • System: oryginalny typ wyjątku Java jest przechwycony i opakowany w odpowiedni typ wyjątku platformy .NET.

    Systemoznacza, że na przykład InputStreamInvoker prawidłowo implementuje System.IO.Streamelement i Stream.Read() nie będzie zgłaszać Java.IO.IOException wystąpień. (Zamiast tego może zgłosić wartość zawierającą System.IO.IOException Java.IO.IOException jako Exception.InnerException wartość).

    System to wartość domyślna na platformie .NET 6.0.

Dodano w programie Xamarin.Android 10.2.

AndroidBoundInterfacesContainConstants

Właściwość logiczna określająca, czy powiązania stałych w interfejsach będą obsługiwane, czy zostanie użyte obejście tworzenia IMyInterfaceConsts klasy.

Wartość domyślna to True .NET 6 i False starsza wersja.

AndroidBoundInterfacesContainStaticAndDefaultInterfaceMethods

Właściwość logiczna, która określa, czy domyślne i statyczne elementy członkowskie w interfejsach będą obsługiwane, czy stare obejście tworzenia klasy równorzędnej zawierającej statyczne elementy członkowskie, takie jak abstract class MyInterface.

Wartość domyślna to True .NET 6 i False starsza wersja.

AndroidBoundInterfacesContainTypes

Właściwość logiczna, która określa, czy typy zagnieżdżone w interfejsach będą obsługiwane, czy obejście tworzenia typu niezagnieżdżonego, takiego jak IMyInterfaceMyNestedClass.

Wartość domyślna to True .NET 6 i False starsza wersja.

AndroidBuildApplicationPackage

Wartość logiczna wskazująca, czy utworzyć i podpisać pakiet (.apk). Ustawienie tej wartości na True jest równoważne użyciu elementu SignAndroidPackage element docelowy kompilacji.

Obsługa tej właściwości została dodana po rozszerzeniu Xamarin.Android 7.1.

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 zestawów APKs z pakietu, takich jak podział wymiarów pakietu w celu utworzenia zestawów APKs. Platforma Xamarin.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 aabwartość .

Dodano element w programie Xamarin.Android 10.3.

AndroidBundleToolExtraArgs

Określa opcje wiersza polecenia, które mają być przekazywane do polecenia bundletool podczas kompilowania pakietów aplikacji.

Ta właściwość została dodana w środowisku Xamarin.Android 11.3.

AndroidClassParser

Właściwość ciągu, która kontroluje sposób .jar analizowania plików. Możliwe wartości to:

  • class-parse: używa class-parse.exe metody do bezpośredniego analizowania kodu bajtowego Java bez pomocy maszyny wirtualnej JVM.

  • jar2xml: użyj jar2xml.jar funkcji odbicia języka Java, aby wyodrębnić typy i elementy członkowskie z .jar pliku.

Zalety over class-parse jar2xml to:

  • class-parse program może wyodrębnić nazwy parametrów z kodu bajtowego Java zawierającego symbole debugowania (kod bajtowy skompilowany za pomocą polecenia javac -g).

  • class-parse nie "pomija" klas dziedziczonych z lub zawierających elementy członkowskie nierozwiązanych typów.

Dodano element w środowisku Xamarin.Android 6.0.

Wartość domyślna to jar2xml "starsza wersja" platformy Xamarin.Android i class-parse platformy .NET 6 lub nowszej.

Obsługa jest jar2xml przestarzała i jar2xml jest usuwana na platformie .NET 6.

AndroidCodegenTarget

Właściwość ciągu, która kontroluje docelową ABI generowania kodu. Możliwe wartości to:

  • XamarinAndroid: używa interfejsu API powiązania JNI obecnej od mono dla systemu Android 1.0. Powiązania zestawów utworzonych za pomocą rozszerzenia Xamarin.Android 5.0 lub nowszego można uruchamiać tylko na platformie Xamarin.Android 5.0 lub nowszym (dodatki API/ABI), ale źródło jest zgodne z wcześniejszymi wersjami produktu.

  • XAJavaInterop1: użyj wywołań Java.Interop dla wywołań JNI. Wiązanie zestawów przy użyciu polecenia XAJavaInterop1 może kompilować i wykonywać tylko za pomocą platformy Xamarin.Android 6.1 lub nowszej. Platforma Xamarin.Android 6.1 lub nowsza powiązana Mono.Android.dll z tą wartością.

Zalety obejmują XAJavaInterop1 :

  • Mniejsze zestawy.

  • jmethodID Buforowanie dla base wywołań metod, tak długo, jak wszystkie inne typy powiązań w hierarchii dziedziczenia są kompilowane z lub nowszym XAJavaInterop1 .

  • jmethodID Buforowanie konstruktorów java callable wrapper dla zarządzanych podklas.

Domyślna wartość to XAJavaInterop1.

Obsługa programu XamarinAndroid jest przestarzała, a obsługa XamarinAndroid programu zostanie usunięta w ramach platformy .NET 6.

AndroidCreatePackagePerAbi

Właściwość logiczna określająca, czy zestaw plików — jeden na wartość ABI określony w $(AndroidSupportedAbis)elembcie — należy utworzyć zamiast obsługiwać wszystkie interfejsy API w jednym obiekcie .apk.

Zobacz również przewodnik Tworzenie interfejsów API specyficznych dla usługi 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 .apk plików AndroidProguardMappingFile należy ręcznie przekazać element .

Wartość domyślna to True w przypadku używania $(AndroidLinkTool)=r8.

Dodano w programie Xamarin.Android 12.3.

AndroidDebugKeyAlgorithm

Określa domyślny algorytm do użycia dla elementu debug.keystore. Domyślna wartość to RSA.

AndroidDebugKeyValidity

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.

Dodano w programie Xamarin.Android 10.2.

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}

Jest uid to pierwsza wartość całkowita. W powyższych danych wyjściowych są one 0 i 10.

Właściwość $(AndroidDeviceUserId) została dodana w środowisku Xamarin.Android 11.2.

AndroidDexTool

Właściwość stylu wyliczenia z prawidłowymi wartościami dx lub d8. Wskazuje, który kompilator dex systemu Android jest używany podczas procesu kompilacji platformy Xamarin.Android. Domyślna wartość to dx. Zapoznaj się z naszą dokumentacją dotyczącą D8 i R8.

AndroidEnableDesugar

Właściwość logiczna określająca, czy desugar jest włączona. 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 metody i True , jeśli używasz polecenia=$(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 testów jest przydatne dla deweloperów, którzy nie są skierowani do Sklepu Google Play i nie chcą uruchamiać tych testów.

Dodano element w programie Xamarin.Android 9.4.

AndroidEnableMultiDex

Właściwość logiczna określająca, czy obsługa wielu dex będzie używana w ostatnim .apkobiekcie .

Obsługa tej właściwości została dodana w środowisku Xamarin.Android 5.1.

Ta właściwość jest False domyślnie.

AndroidEnablePreloadAssemblies

Właściwość logiczna, która kontroluje, czy wszystkie zarządzane zestawy powiązane w pakiecie aplikacji są ładowane podczas uruchamiania procesu, czy nie.

Po ustawieniu wartości Truena wartość wszystkie zestawy dołączone w pakiecie aplikacji zostaną załadowane podczas uruchamiania procesu, zanim zostanie wywołany dowolny kod aplikacji. Wstępne ładowanie zestawów jest tym, co robi Xamarin.Android.

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ść systemowa debug.mono.log na wartość 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ść True była z kolei wymagana, aby AppDomain.CurrentDomain.GetAssemblies() zwrócić wszystkie zestawy w pakiecie aplikacji, nawet jeśli zestaw nie byłby potrzebny.

Domyślnie ta wartość zostanie ustawiona True na dla platformy Xamarin.Android i zostanie ustawiona na False wartość dla kompilacji platformy .NET 6+.

Dodano w programie Xamarin.Android 9.2.

AndroidEnableProfiledAot

Właściwość logiczna określająca, czy profile AOT 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.

Obsługa tej właściwości została dodana w środowisku Xamarin.Android 9.4.

Ta właściwość jest False domyślnie.

AndroidEnableSGenConcurrent

Właściwość logiczna określająca, czy będzie używany współbieżny moduł zbierający GC mono.

Obsługa tej właściwości została dodana w środowisku Xamarin.Android 7.2.

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.

Obsługa tej właściwości została dodana w środowisku Xamarin.Android 8.1.

Ta właściwość jest True domyślnie.

AndroidExplicitCrunch

Nieobsługiwane już w środowisku Xamarin.Android 11.0.

AndroidExtraAotOptions

Właściwość ciągu, która umożliwia przekazywanie opcji do kompilatora Mono podczas Aot zadania dla projektów, które mają $(AndroidEnableProfiledAot) wartość lub $(AotAssemblies) mają wartość 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 $(AndroidAotAdditionalArguments) właściwości; $(AndroidAotAdditionalArguments) umieszcza argumenty rozdzielane przecinkami na --aot opcję kompilatora Mono. $(AndroidExtraAotOptions) zamiast tego przekazuje pełne autonomiczne opcje rozdzielane spacjami, takie jak --verbose lub --debug do kompilatora.

Dodano w programie Xamarin.Android 10.2.

AndroidFastDeploymentType

: Rozdzielona dwukropkiem lista wartości do kontrolowania typów, które można wdrożyć w 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 .apkobiekcie , co może przyspieszyć czas wdrażania. (Tym więcej jest szybko wdrażanych, tym rzadziej .apk trzeba je ponownie skompilować, a proces instalacji może być szybszy). Prawidłowe wartości to:

  • Assemblies: Wdrażanie zestawów aplikacji.
  • Dexes: Wdrażanie .dex plików, bibliotek natywnych i map typów. Wartość Dexes moż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 zasobó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.

Eksperymentalne. Ta właściwość została dodana w środowisku Xamarin.Android 6.1.

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 System.Reflection to użycie w kodzie pomocnika powiązania.

Domyślna wartość to False. Jeśli deweloperzy chcą korzystać z nowej funkcji marshalingu JNI, mogą ustawić

<AndroidGenerateJniMarshalMethods>True</AndroidGenerateJniMarshalMethods>

w pliku .csproj. Alternatywnie podaj właściwość w wierszu polecenia za pomocą polecenia

/p:AndroidGenerateJniMarshalMethods=True

Eksperymentalne. Dodano w programie Xamarin.Android 9.2. Domyślna wartość to False.

AndroidGenerateJniMarshalMethodsAdditionalArguments

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. Na przykład:

<AndroidGenerateJniMarshalMethodsAdditionalArguments>-v -d --keeptemp</AndroidGenerateJniMarshalMethodsAdditionalArguments>

or:

/p:AndroidGenerateJniMarshalMethodsAdditionalArguments="-v -d --keeptemp"

Dodano w programie Xamarin.Android 9.2.

AndroidGenerateLayoutBindings

Włącza generowanie kodu układu, jeśli jest ustawione na true wartość lub wyłącza ją całkowicie, jeśli jest ustawiona na falsewartość . Domyślna wartość to false.

AndroidGenerateResourceDesigner

Domyślna wartość to true. Gdy jest ustawiona wartość false, wyłącza generowanie elementu Resource.designer.cs.

Dodano w programie .NET 6 RC 1. Nieobsługiwane w środowisku Xamarin.Android.

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). Najbardziej typowe wartości tej właściwości to:

  • Xamarin.Android.Net.AndroidClientHandler: Użyj interfejsów API języka Java systemu Android do wykonywania żądań sieciowych. Korzystanie z interfejsów API języka Java umożliwia uzyskiwanie dostępu do adresów URL protokołu TLS 1.2, gdy podstawowa wersja systemu Android obsługuje protokół TLS 1.2. Tylko system Android 5.0 i nowsze niezawodnie zapewniają obsługę protokołu TLS 1.2 za pośrednictwem języka Java.

    Odpowiada opcji systemu Android na stronach właściwości programu Visual Studio i opcji AndroidClientHandler na stronach właściwości Visual Studio dla komputerów Mac.

    Kreator nowego projektu wybiera tę opcję dla nowych projektów, gdy minimalna wersja systemu Android jest skonfigurowana do systemu Android 5.0 (Lollipop) lub nowszego w programie Visual Studio lub gdy platformy docelowe są ustawione na najnowsze i największe w Visual Studio dla komputerów Mac.

  • Usuń/pusty ciąg, który jest odpowiednikiem System.Net.Http.HttpClientHandler, System.Net.Http

    Odpowiada 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 na system Android 4.4.87 lub nowszy w programie Visual Studio lub gdy platformy docelowe są ustawione na nowoczesne programowanie lub maksymalna zgodność w Visual Studio dla komputerów Mac.

  • System.Net.Http.HttpClientHandler, System.Net.Http: Użyj zarządzanego HttpMessageHandlerelementu .

    Odpowiada opcji Zarządzane na stronach właściwości programu Visual Studio.

Uwaga

Jeśli obsługa protokołu TLS 1.2 jest wymagana w wersjach systemu Android wcześniejszych niż 5.0 lub jeśli wymagana jest obsługa protokołu TLS 1.2 z System.Net.WebClient powiązanymi interfejsami API, $(AndroidTlsProvider) należy użyć polecenia .

Uwaga

Obsługa $(AndroidHttpClientHandlerType) właściwości działa przez ustawienie zmiennej środowiskowejXA_HTTP_CLIENT_HANDLER_TYPE. $XA_HTTP_CLIENT_HANDLER_TYPE Wartość znaleziona w pliku z akcją Kompilacja@(AndroidEnvironment) będzie mieć pierwszeństwo.

Dodano element w środowisku Xamarin.Android 6.1.

AndroidIncludeWrapSh

Wartość logiczna wskazująca, czy skrypt otoki systemu Android (wrap.sh) powinien zostać spakowany 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 jedną wrap.sh architekturę:

<AndroidNativeLibrary Include="path/to/arm64-v8a/wrap.sh" />

Jeśli jednak projekt wymaga więcej niż jednej wrap.sh architektury, w różnych celach takie podejście nie będzie działać. 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>

Link Jeśli metadane są używane, ścieżka określona w jego wartości musi być prawidłową ścieżką biblioteki specyficznej dla architektury natywnej względem katalogu głównego APK. Format ścieżki to lib\ARCH\wrap.sh miejsce, w którym ARCH może być jeden z następujących elementów:

  • arm64-v8a
  • armeabi-v7a
  • x86_64
  • x86

AndroidJavadocVerbosity

Określa, jak "pełne" komentarze dokumentacji XML języka C# powinny być podczas importowania dokumentacji Javadoc w projektach powiązań.

Wymaga użycia @(JavaSourceJar) akcja kompilacji.

Właściwość jest podobna $(AndroidJavadocVerbosity) do wyliczenia z możliwymi full wartościami lub intellisense:

Domyślna wartość to intellisense.

Obsługa tej właściwości została dodana w środowisku Xamarin.Android 11.3.

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

Działanie 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

    AndroidLinkMode Uż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 truesystem 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. Połączone są tylko kompilacje "Release".

Eksperymentalne. 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.

Dodano obsługę tej właściwości w środowisku Xamarin.Android 11.3

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ść stylu wyliczenia z prawidłowymi wartościami 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 na temat narzędzi systemu Androidlint, zobacz Pomoc lint.

AndroidLintEnabledIssues

Właściwość ciągu, która jest rozdzielaną przecinkami listą problemów z lint, które mają być włączone.

Używane tylko wtedy, gdy $(AndroidLintEnabled)=True.

AndroidLintDisabledIssues

Właściwość ciągu, która jest rozdzielaną przecinkami listą problemów z lint, które mają być wyłączone.

Używane tylko wtedy, gdy $(AndroidLintEnabled)=True.

AndroidLintCheckIssues

Właściwość ciągu, która jest rozdzieloną przecinkami listą problemów z lint do sprawdzenia.

Używane tylko wtedy, gdy $(AndroidLintEnabled)=True.

Uwaga: zostaną sprawdzone tylko te problemy.

AndroidManagedSymbols

Właściwość logiczna, która określa, czy punkty sekwencji są generowane, aby można było wyodrębnić informacje o nazwie pliku i numerze wiersza ze Release śladów stosu.

Dodano element w środowisku Xamarin.Android 6.1.

AndroidManifest

Określa nazwę pliku do użycia jako szablon dla aplikacji AndroidManifest.xml. Podczas kompilacji wszystkie inne niezbędne wartości zostaną scalone w celu utworzenia rzeczywistego AndroidManifest.xmlelementu . Element $(AndroidManifest) musi zawierać nazwę pakietu w atrybucie /manifest/@package .

AndroidManifestMerger

Określa implementację scalania plików AndroidManifest.xml . Jest to właściwość wyliczenia, 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 legacy. Zmieni się to na manifestmerger.jar w przyszłej wersji, aby dostosować zachowanie do programu Android Studio.

Fuzja firmy Google umożliwia obsługę xmlns:tools="http://schemas.android.com/tools" zgodnie z opisem w dokumentacji systemu Android.

Wprowadzono w środowisku Xamarin.Android 10.2

AndroidManifestMergerExtraArgs

Właściwość string do dostarczania 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>

Wprowadzono w środowisku Xamarin.Android 11.x

AndroidManifestType

Właściwość stylu wyliczenia z prawidłowymi wartościami Xamarin lub GoogleV2. To kontroluje, które repozytorium jest używane przez InstallAndroidDependencies program docelowy określa, które pakiety systemu Android i wersje pakietów są dostępne i można je zainstalować.

Xamarinto repozytorium Listy zatwierdzonych (zalecane) w Menedżerze zestawu SDK programu Visual Studio.

GoogleV2to repozytorium Pełna lista (nieobsługiwana) w Menedżerze zestawu SDK programu Visual Studio.

Dodano do platformy Xamarin.Android 13.0. W środowisku Xamarin.Android 13.0, jeśli $(AndroidManifestType) nie jest ustawiona, Xamarin zostanie użyty.

Przed programem Xamarin.Android 13.0 ustawienie $(AndroidManifestType) nie działa i GoogleV2 jest używane.

AndroidManifestPlaceholders

Rozdzielana średnikami lista par zastępczych klucz-wartość dla AndroidManifest.xml, gdzie każda para ma format key=value.

Na przykład wartość assemblyName=$(AssemblyName) właściwości 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ść ciągu, która umożliwia deweloperom przekazywanie argumentów do com.android.multidex.MainDexListBuilder obiektu podczas generowania multidex.keep pliku.

W przypadku wystąpienia następującego błędu dx podczas kompilacji występuje 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ą dx pomyślne osiągnięcie kroku.

Dodano element w środowisku Xamarin.Android 8.3.

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 aabwartość , ustawiono inne właściwości programu MSBuild, które są wymagane dla pakietów aplikacji systemu Android:

Ta właściwość będzie przestarzała dla platformy .net 6. Użytkownicy powinni przełączyć się na nowsze AndroidPackageFormats.

AndroidPackageFormats

Właściwość rozdzielana ś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 kompilacji wydania warto wygenerować zarówno, jak i aab dla apk dystrybucji do różnych magazynów.

Ustawienie na AndroidPackageFormats wartość aab;apk spowoduje wygenerowanie obu tych elementów. Ustawienie AndroidPackageFormats wartości aab lub apk spowoduje wygenerowanie tylko jednego pliku.

Dla platformy .net 6 AndroidPackageFormats zostanie ustawiona aab;apk tylko dla Release kompilacji. Zaleca się kontynuowanie używania tylko apk do debugowania.

W przypadku starszej wersji platformy Xamarin.Android wartość domyślna to "". W rezultacie starsza wersja platformy Xamarin.Android nie będzie domyślnie generować obu w ramach kompilacji wydania. Jeśli użytkownik chce wygenerować oba dane wyjściowe, należy zdefiniować następujące elementy w konfiguracji Release .

<AndroidPackageFormats>aab;apk</AndroidPackageFormats>

Musisz również usunąć istniejącą konfigurację AndroidPackageFormat , jeśli ją masz.

Dodano do platformy Xamarin.Android 11.5.

AndroidPackageNamingPolicy

Właściwość wyliczenia określająca nazwy pakietów Java wygenerowanego kodu źródłowego Java.

W programie Xamarin.Android 10.2 lub nowszym jedyną obsługiwaną wartością jest LowercaseCrc64.

W środowisku Xamarin.Android 10.1 dostępna była również wartość przejściowa LowercaseMD5 , która zezwalała na powrót do oryginalnego stylu nazwy pakietu Java, który był używany w programie Xamarin.Android 10.0 i starszych wersjach. Ta opcja została usunięta w programie Xamarin.Android 10.2, aby zwiększyć zgodność ze środowiskami kompilacji, które mają wymuszoną zgodność ze standardem FIPS.

Dodano element w środowisku Xamarin.Android 10.1.

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.

Ta właściwość została dodana w środowisku Xamarin.Android 11.2.

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ć na wartość , aby wymusić False bardziej rygorystyczne zachowanie. Aby uzyskać szczegółowe informacje, zobacz podręcznik ProGuard.

Dodano element w programie Xamarin.Android 10.3.

AndroidR8JarPath

Ścieżka do r8.jar użycia z kompilatorem r8 dex-compiler i shrinker. Wartość domyślna to ścieżka w instalacji platformy Xamarin.Android. Aby uzyskać więcej informacji, zobacz naszą dokumentację dotyczącą D8 i R8.

AndroidResgenExtraArgs

Określa opcje wiersza polecenia, które mają być przekazywane do polecenia aapt podczas przetwarzania zasobów i zasobów systemu Android.

AndroidResgenFile

Określa nazwę pliku zasobu do wygenerowania. Domyślny szablon ustawia wartość .Resource.designer.cs

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 tworzenia pakietów jest wykonywany przez 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.

Właściwość $(AndroidSdkBuildToolsVersion) MSBuild zawiera preferowaną wersję narzędzi kompilacji. System kompilacji Xamarin.Android udostępnia wartość domyślną w Xamarin.Android.Common.targetselemencie , a wartość domyślna może zostać zastąpiona w pliku projektu, aby wybrać alternatywną wersję narzędzi kompilacji, jeśli (na przykład) najnowszy element aapt ulega awarii, podczas gdy poprzednia wersja aapt jest znana z pracy.

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 po keytool wyświetleniu monitu Enter key password for $(AndroidSigningKeyAlias).

W programie Xamarin.Android 10.0 i starszych wersjach ta właściwość obsługuje tylko hasła w postaci zwykłego tekstu.

W programie Xamarin.Android 10.1 lub nowszym ta właściwość obsługuje env: również prefiksy, 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

Prefiks env: nie jest obsługiwany, gdy $(AndroidPackageFormat) jest ustawiony na aabwartość .

AndroidSigningKeyStore

Określa nazwę pliku magazynu kluczy utworzonego przez keytoolprogram . Odpowiada to wartości podanej opcji keytool -keystore .

AndroidSigningStorePass

Określa hasło na $(AndroidSigningKeyStore). Jest to wartość podana keytool podczas tworzenia pliku magazynu kluczy i monitu Wprowadź hasło magazynu kluczy:.

W programie Xamarin.Android 10.0 i starszych wersjach ta właściwość obsługuje tylko hasła w postaci zwykłego tekstu.

W programie Xamarin.Android 10.1 lub nowszym ta właściwość obsługuje env: również prefiksy, 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

Prefiks env: nie jest obsługiwany, gdy $(AndroidPackageFormat) jest ustawiony na aabwartość .

AndroidSigningPlatformKey

Określa plik klucza, który ma być używany do podpisywania pliku apk. Jest to używane tylko podczas kompilowania system aplikacji.

Obsługa tej właściwości została dodana w środowisku Xamarin.Android 11.3.

AndroidSigningPlatformCert

Określa plik certyfikatu, który ma być używany do podpisywania pliku apk. Jest to używane tylko podczas kompilowania system aplikacji.

Obsługa tej właściwości została dodana w środowisku Xamarin.Android 11.3.

AndroidSupportedAbis

Właściwość ciągu zawierająca średnik (;)rozdzielaną listę interfejsów API, które powinny zostać uwzględnione w obiekcie .apk.

Obsługiwane wartości to:

  • armeabi-v7a
  • x86
  • arm64-v8a: Wymaga platformy Xamarin.Android 5.1 lub nowszej.
  • x86_64: Wymaga platformy Xamarin.Android 5.1 lub nowszej.

AndroidTlsProvider

Wartość ciągu określająca, który dostawca protokołu TLS powinien być używany w aplikacji. Dopuszczalne wartości:

  • Unset/the empty string: W środowisku Xamarin.Android 7.3 i nowszym jest to odpowiednik btls.

    W środowisku Xamarin.Android 7.1 jest to odpowiednik legacy.

    Odpowiada to ustawieniu domyślnemu na stronach właściwości programu Visual Studio.

  • btls: Użyj protokołu Boring SSL do komunikacji TLS z protokołem HttpWebRequest.

    Umożliwia to korzystanie z protokołu TLS 1.2 we wszystkich wersjach systemu Android.

    Odpowiada to ustawieniu natywnego protokołu TLS 1.2 lub nowszego na stronach właściwości programu Visual Studio.

  • legacy: W programie Xamarin.Android 10.1 i starszych wersjach użyj historycznej zarządzanej implementacji protokołu SSL na potrzeby interakcji z siecią. Nie obsługuje to protokołu TLS 1.2.

    Odpowiada to ustawieniu zarządzanego protokołu TLS 1.0 na stronach właściwości programu Visual Studio.

    W programie Xamarin.Android 10.2 lub nowszym ta wartość jest ignorowana, a btls ustawienie jest używane.

  • default: Ta wartość jest mało prawdopodobne, aby była używana w projektach platformy Xamarin.Android. Zalecaną wartością do użycia jest pusty ciąg, który odpowiada ustawieniu Domyślne na stronach właściwości programu Visual Studio.

    Wartość nie jest oferowana default na stronach właściwości programu Visual Studio.

    Jest to obecnie odpowiednik legacyelementu .

Dodano element w środowisku Xamarin.Android 7.1.

AndroidUseAapt2

Właściwość logiczna, która umożliwia deweloperowi kontrolowanie użycia aapt2 narzędzia do tworzenia pakietów. Domyślnie będzie to wartość False, a platforma Xamarin.Android będzie używać polecenia aapt. Jeśli deweloper chce korzystać z nowych aapt2 funkcji, dodaj:

<AndroidUseAapt2>True</AndroidUseAapt2>

w pliku .csproj. Alternatywnie podaj właściwość w wierszu polecenia:

/p:AndroidUseAapt2=True

Ta właściwość została dodana w środowisku Xamarin.Android 8.3. Ustawienie AndroidUseAapt2 na false jest przestarzałe w środowisku Xamarin.Android 11.2.

AndroidUseApkSigner

Właściwość logiczna, która umożliwia deweloperowi korzystanie z apksigner narzędzia, a nie jarsigner.

Dodano w środowisku Xamarin.Android 8.2.

AndroidUseDefaultAotProfile

Właściwość logiczna, która umożliwia deweloperowi pomijanie użycia domyślnych profilów AOT.

Aby pominąć domyślne profile AOT, ustaw właściwość na false.

Dodano element w środowisku Xamarin.Android 10.1.

AndroidUseInterpreter

Właściwość logiczna, która powoduje.apk, że element zawiera interpreter mono, a nie normalny tryb JIT.

Eksperymentalne.

Obsługa tej właściwości została dodana w środowisku Xamarin.Android 11.3.

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.

Dodano w środowisku Xamarin.Android 8.2.

AndroidUseManagedDesignTimeResourceGenerator

Właściwość logiczna, która będzie przełączać się w czasie projektowania kompilacji, aby używać analizatora zasobów zarządzanych, a nie aapt.

Dodano element w programie Xamarin.Android 8.1.

AndroidUseSharedRuntime

Właściwość logiczna określająca, czy pakiety współużytkowanego środowiska uruchomieniowego są wymagane do uruchomienia aplikacji na urządzeniu docelowym. Poleganie na udostępnionych pakietach środowiska uruchomieniowego pozwala pakietowi aplikacji być mniejszy, przyspieszając proces tworzenia i wdrażania pakietów, co powoduje szybsze tworzenie/wdrażanie/debugowanie cyklu realizacji.

Przed programem Xamarin.Android 11.2 ta właściwość powinna dotyczyć True kompilacji debugowania i False projektów wydania.

Ta właściwość została usunięta w środowisku Xamarin.Android 11.2.

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 /manifest/@android:versionCode, zobacz dokumentację systemu Android.

Obsługa tej właściwości została dodana w środowisku Xamarin.Android 11.3.

AndroidVersionCodePattern

Właściwość ciągu, która umożliwia deweloperowi dostosowanie elementu versionCode w manifeście. Aby uzyskać informacje na temat podejmowania versionCodedecyzji, zobacz Tworzenie kodu wersji dla pakietu APK.

Niektóre przykłady, jeśli abi parametr ma armeabi wartość i versionCode w manifeście to 123, {abi}{versionCode} spowoduje wygenerowanie parametru versionCode o 1123 $(AndroidCreatePackagePerAbi) wartości True, w przeciwnym razie spowoduje wygenerowanie wartości 123. Jeśli abi element ma x86_64 wartość i versionCode w manifeście to 44. Spowoduje to wygenerowanie 544 wartości true $(AndroidCreatePackagePerAbi) , a w przeciwnym razie spowoduje wygenerowanie wartości 44.

Jeśli dołączymy ciąg {abi}{versionCode:0000}formatu dopełniania po lewej stronie, zostanie 50044 wygenerowany, ponieważ wypełnimy element versionCode za pomocą polecenia 0. Alternatywnie można użyć dopełnienia dziesiętnego, takiego jak {abi}{versionCode:D4} co w poprzednim przykładzie.

Obsługiwane są tylko ciągi formatowania "0" i "Dx", ponieważ wartość MUSI być liczbą całkowitą.

Wstępnie zdefiniowane elementy klucza

  • abi — wstawia docelowy abi dla aplikacji

    • 2 – armeabi-v7a
    • 3 – x86
    • 4 – arm64-v8a
    • 5 – x86_64
  • minSDK — wstawia minimalną obsługiwaną wartość zestawu SDK z AndroidManifest.xml wartości lub 11 , 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}wartość . Jeśli deweloper chce zachować stare zachowanie, możesz przesłonić domyślne $(AndroidUseLegacyVersionCode) ustawienie właściwości na true

Dodano element w środowisku Xamarin.Android 7.2.

AndroidVersionCodeProperties

Właściwość ciągu, która umożliwia deweloperowi definiowanie elementów niestandardowych do użycia z elementem $(AndroidVersionCodePattern). Są one w formie key=value pary. 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 programu MSBuild w ciągu.

Dodano element w środowisku Xamarin.Android 7.2.

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 /manifest/@package, zobacz dokumentację systemu Android.

Obsługa tej właściwości została dodana w środowisku Xamarin.Android 11.3.

ApplicationTitle

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 /manifest/application/@android:label, zobacz dokumentację systemu Android.

Obsługa tej właściwości została dodana w środowisku Xamarin.Android 11.3.

ApplicationVersion

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 /manifest/@android:versionName, zobacz dokumentację systemu Android.

Obsługa tej właściwości została dodana w środowisku Xamarin.Android 11.3.

AotAssemblies

Właściwość logiczna określająca, czy zestawy będą kompilowane przed czasem w kodzie natywnym i uwzględnione w elemecie .apk.

Obsługa tej właściwości została dodana w środowisku Xamarin.Android 5.1.

Ta właściwość jest False domyślnie.

AProfUtilExtraOptions

Dodatkowe opcje przekazywania do aprofutil.

PrzedGenerateAndroidManifest

Obiekty docelowe programu MSBuild wymienione w tej właściwości będą uruchamiane bezpośrednio przed _GenerateJavaStubs.

Dodano element w programie Xamarin.Android 9.4.

Konfigurowanie

Określa konfigurację kompilacji do użycia, taką jak "Debugowanie" lub "Wydanie". 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 wyświetlenieInstall i SignAndroidPackage program docelowy tworzy mniejszy pakiet systemu Android, który wymaga obecności innych plików i pakietów do działania.

Domyślna Release konfiguracja spowoduje, że element Install i SignAndroidPackage element docelowy tworzy pakiet systemu Android, który jest autonomiczny i 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 elementINTERNET uprawnienie umożliwiające dołączanie debugera do procesu. Aplikacja jest debugowalna, jeśli DebugSymbols jest True i DebugType 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 DebugSymbols Właściwość MSBuild jest również Truewłaściwością , a następnie 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.

EmbedAssembliesIntoApk

Właściwość logiczna określająca, czy zestawy aplikacji powinny być osadzone w pakiecie aplikacji.

Ta właściwość powinna dotyczyć True kompilacji wydania i False kompilacji debugowania. Może być konieczne True użycie kompilacji debugowania, jeśli szybkie wdrażanie nie obsługuje urządzenia docelowego.

Gdy ta właściwość ma Falsewartość , wówczas właściwość $(AndroidFastDeploymentType) Właściwość MSBuild określa również, co zostanie osadzone w .apkobiekcie , co może mieć wpływ na czas wdrażania i ponownego kompilowania.

Włączanie maszyny wirtualnejLLVM

Właściwość logiczna określająca, czy maszyna wirtualna LLVM będzie używana podczas kompilowania zestawów przed czasem w kodzie natywnym.

Aby utworzyć projekt z włączoną tą właściwością, należy zainstalować zestaw NDK systemu Android.

Obsługa tej właściwości została dodana w środowisku Xamarin.Android 5.1.

Ta właściwość jest False domyślnie.

Ta właściwość jest ignorowana, chyba że $(AotAssemblies) właściwość MSBuild ma wartość True.

EnableProguard

Właściwość logiczna określająca, czy proguard jest uruchamiana w ramach procesu pakowania w celu połączenia kodu Java.

Obsługa tej właściwości została dodana w środowisku Xamarin.Android 5.1.

Ta właściwość jest False domyślnie.

Gdy Truepliki @(ProguardConfiguration) będą używane do kontrolowania proguard wykonywania.

GenerateApplicationManifest

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 .NET 6 i false "starsza wersja" platformy Xamarin.Android.

Obsługa tej właściwości została dodana w środowisku Xamarin.Android 11.3.

JavaMaximumHeapSize

Określa wartość parametru java-Xmx , która ma być używana podczas kompilowania .dex pliku w ramach procesu pakowania. Jeśli nie zostanie określona -Xmx , opcja dostarcza język Java z wartością 1G. Okazało się, że jest to często wymagane w systemie Windows w porównaniu z innymi platformami.

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 sygnatury czasowej. Aby uzyskać więcej informacji, zobacz dokumentację pomocy technicznej sygnatury czasowej sygnatury języka Java.

<PropertyGroup>
    <JarsignerTimestampAuthorityCertificateAlias>Alias</JarsignerTimestampAuthorityCertificateAlias>
</PropertyGroup>

JarsignerTimestampAuthorityUrl

Ta właściwość umożliwia określenie adresu URL dla usługi urzędu sygnatury czasowej. Może to służyć do upewnienia się, że .apk podpis zawiera sygnaturę czasową. Aby uzyskać więcej informacji, zobacz dokumentację pomocy technicznej sygnatury czasowej sygnatury języka Java.

<PropertyGroup>
    <JarsignerTimestampAuthorityUrl>http://example.tsa.url</JarsignerTimestampAuthorityUrl>
</PropertyGroup>

LinkerDumpDependencies

Właściwość logiczna, która umożliwia generowanie pliku zależności konsolidatora. 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. Platforma NET5/6 jest zapisywana obok połączonych zestawów w obj/<Configuration>/android<ABI>/linked katalogu.

Wartość domyślna to False.

MandroidI18n

Określa obsługę międzynarodową dołączoną do aplikacji, taką jak sortowanie i sortowanie tabel. Wartość jest rozdzieloną przecinkami lub średnikami listą co najmniej jednej z następujących wartości bez uwzględniania wielkości liter:

  • Brak: nie uwzględniaj żadnych dodatkowych kodowań.

  • Wszystkie: uwzględnij wszystkie dostępne kodowania.

  • CJK: obejmują kodowanie chińskie, japońskie i koreańskie, takie jak japońskie (EUC) [enc-jp, CP51932], japoński (Shift-JIS) [iso-2022-jp, shift_jis, CP932], japoński (JIS) [CP50220], chiński uproszczony (GB2312) [gb2312, CP936], koreański (UHC) [ks_c_5601-1987, CP949], koreański (EUC) [euc-kr, CP51949], chiński tradycyjny (Big5) [big5, CP950] i chiński uproszczony (GB18030) [GB18030, CP54936].

  • MidEast: uwzględnij kodowanie bliskiego wschodu, takie jak tureckie (Windows) [iso-8859-9, CP1254], hebrajski (Windows) [windows-1255, CP1255], arabski (Windows-1256, windows-1256, CP1256], arabski (ISO) [iso-8859-6, CP28596], hebrajski (ISO) [iso-8859-8, CP28598], Latin 5 (ISO) [iso-8859-9, CP28599] i hebrajski (Iso Alternative) [iso-8859-8, CP38598].

  • Inne: Dołącz inne kodowanie, takie jak cyrylica (Windows) [CP1251], Baltic (Windows) [iso-8859-4, CP1257], Wietnamski (Windows) [CP1258], Cyrylica (KOI8-R) [koi8-r, CP1251], Ukraiński (KOI8-U) [koi8-u, CP1251], Baltic (ISO) [iso-8859-4, CP1257], Cyrylica (ISO) [iso-8859-5, CP1251], ISCII Davenagari [x-iscii-de, CP57002], ISCII Bengali [x-iscii-be, CP57003], ISCII Tamil [x-iscii-ta, CP57004], ISCII Telugu [x-iscii-te, CP57005], ISCII Assamese [x-iscii-as, CP57006], ISCII Oriya [x-iscii-or, CP57007], ISCII Kannada [x-iscii-ka, CP57008], ISCII Malayalam [x-iscii-ma, CP57009], ISCII Gujarati [x-iscii-gu, CP57010], ISCII Punjabi [x-iscii-pa, CP57011] i tajski (Windows) [CP874].

  • Rzadkie: obejmują rzadkie kodowania, takie jak IBM EBCDIC (turecki) [CP1026], IBM EBCDIC (Open Systems Latin 1) [CP1047], IBM EBCDIC (USA-Kanada z Euro) [CP1140], IBM EBCDIC (Niemcy z Euro) [CP1141], IBM EBCDIC (Dania/Norwegia z Euro) [CP1142], IBM EBCDIC (Finlandia/Szwecja z Euro) [CP1143], IBM EBCDIC (Włochy z Euro) [CP1144], IBM EBCDIC (Ameryka Łacińska/Hiszpania z Euro) [CP1145], IBM EBCDIC (Wielka Brytania z Euro) [CP1146], IBM EBCDIC (Francja z Euro) [CP1147], IBM EBCDIC (Międzynarodowy z Euro) [CP1148], IBM EBCDIC (Islandia z Euro) [CP1149], IBM EBCDIC (Niemcy) [CP20273], IBM EBCDIC (Dania/Norwegia) [CP20277], IBM EBCDIC (Finlandia/Szwecja) [CP20278], IBM EBCDIC (Włochy) [CP20280], IBM EBCDIC (Ameryka Łacińska/Hiszpania) [CP20284], IBM EBCDIC (Wielka Brytania) [CP20285], IBM EBCDIC (Japoński Katakana Extended) [CP20290], IBM EBCDIC (Francja) [CP20297], IBM EBCDIC (arabski) [CP20420], IBM EBCDIC (hebrajski) [CP20424], IBM EBCDIC (Islandia) [CP20871], IBM EBCDIC (Cyrylica — Serbski, Bułgarski) [CP21025], IBM EBCDIC (USA-Kanada) [CP37], IBM EBCDIC (International) [CP500], arabski (ASMO 708) [CP708], Europa Środkowa (DOS) [CP852], Cyrylica (DOS) [CP855], turecki (DOS) [CP857], Zachodnioeuropejski (DOS z euro) [CP858], hebrajski (DOS) [CP862], arabski (DOS) [DOS) [CP864], rosyjski (DOS) [CP866], grecki (DOS) [CP869], IBM EBCDIC (łaciński 2) [CP870] i IBM EBCDIC (grecki) [CP875].

  • Zachód: uwzględnij kodowania zachodnie, takie jak Zachodnioeuropejski (Mac) [macintosh, CP10000], Islandia (Mac) [x-mac-islandia, CP10079], Europa Środkowa (Windows) [iso-8859-2, CP1250], Europa Zachodnia (Windows) [iso-8859-1, CP1252], grecki (Windows) [iso-8859-7, CP1253], Środkowoeuropejski (ISO) [iso-8859-2, CP28592], Latin 3 (ISO) [iso-8859-3, CP28593], grecki (ISO) [iso-8859-7, CP28597], Łaciński 9 (ISO) [iso-8859-15, CP28605], OEM Stany Zjednoczone [CP437], Zachodnioeuropejski (DOS) [CP850], portugalski (DOS) [CP860], islandii (DOS) [CP861], francuski kanadyjczyk (DOS) [CP863] i nordycki (DOS) [CP865].

<MandroidI18n>West</MandroidI18n>

MonoAndroidResourcePrefix

Określa prefiks ścieżki, który jest usuwany z początku nazw plików z akcją Kompilacja .AndroidResource Umożliwia to zmianę lokalizacji zasobów.

Domyślna wartość to Resources. Zmień tę wartość na res dla struktury projektu Java.

MonoSymbolArchive

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.

Dodano element w środowisku Xamarin.Android 7.1.