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.Java
oznacza, że na przykład nie implementuje poprawnie interfejsuSystem.IO.Stream
API,InputStreamInvoker
ponieważJava.IO.IOException
może zostać zgłoszony zStream.Read()
elementu zamiastSystem.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.System
oznacza, że na przykładInputStreamInvoker
prawidłowo implementujeSystem.IO.Stream
element iStream.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
jakoException.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 aab
wartość .
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ą poleceniajavac -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ązanaMono.Android.dll
z tą wartością.
Zalety obejmują XAJavaInterop1
:
Mniejsze zestawy.
jmethodID
Buforowanie dlabase
wywołań metod, tak długo, jak wszystkie inne typy powiązań w hierarchii dziedziczenia są kompilowane z lub nowszymXAJavaInterop1
.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 .apk
obiekcie .
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 True
na 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 False
zestawy 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.IJavaObject
bez 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 .apk
obiekcie , 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
, -d
lub --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 false
wartość . 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ądzanegoHttpMessageHandler
elementu .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
:
intellisense
: Emituj tylko komentarze XML:<exception/>
, ,<param/>
<returns/>
,<summary/>
.full
: Emitujintellisense
elementy, a także<remarks/>
,<seealso/>
i wszystkie inne elementy, które można obsługiwać.
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 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. 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.xml
elementu .
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ć.
Xamarin
to repozytorium Listy zatwierdzonych (zalecane) w Menedżerze zestawu SDK programu Visual Studio.
GoogleV2
to 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 aab
wartość , ustawiono inne właściwości programu MSBuild, które są wymagane 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 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.targets
elemencie , 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 aab
wartość .
AndroidSigningKeyStore
Określa nazwę pliku magazynu kluczy utworzonego przez keytool
program . 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 aab
wartość .
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
legacy
elementu .
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 versionCode
decyzji, 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
- 2 –
minSDK — wstawia minimalną obsługiwaną wartość zestawu SDK z
AndroidManifest.xml
wartości lub11
, 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żTrue
wł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 False
wartość , wówczas właściwość $(AndroidFastDeploymentType)
Właściwość MSBuild określa również, co zostanie osadzone w .apk
obiekcie , 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 True
pliki @(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.