Xamarin.Android Environment
Spouštěcí prostředí
Spouštěcí prostředí je sada proměnných prostředí a vlastností systému Android, které ovlivňují provádění programu. Systémové vlastnosti Androidu lze nastavit pomocí adb shell setprop
příkazu, zatímco proměnné prostředí lze nastavit nastavením debug.mono.env
systémové vlastnosti:
## Enable GREF logging
adb shell setprop debug.mono.log gref
## Set the MONO_LOG_LEVEL and MONO_LOG_MASK environment variables
## so that additional Mono messages will be written to `adb logcat`.
adb shell setprop debug.mono.env "'MONO_LOG_LEVEL=info|MONO_LOG_MASK=asm'"
Vlastnosti systému Android jsou nastavené pro všechny procesy na cílovém zařízení.
Počínaje Xamarin.Android 4.6 je možné nastavit nebo přepsat systémové vlastnosti i proměnné prostředí na základě jednotlivých aplikací přidáním souboru prostředí do projektu. Soubor prostředí je soubor ve formátu prostého textu ve formátu Unix s akcí sestavení .AndroidEnvironment
Soubor prostředí obsahuje řádky s hodnotou format key=value.
Komentáře jsou řádky, které začínají #
. Prázdné řádky jsou ignorovány.
Pokud klíč začíná velkým písmenem, klíč se považuje za proměnnou prostředí a funkce setenv(3) slouží k nastavení proměnné prostředí na zadanou hodnotu během spouštění procesu.
Pokud klíč začíná malým písmenem, klíč se považuje za systémovou vlastnost Androidu a hodnota je výchozí hodnota: Vlastnosti systému Android, které řídí chování spouštění Xamarin.Android, se nejprve vyhledá z úložiště systémových vlastností Androidu a pokud žádná hodnota není k dispozici, použije se hodnota zadaná v souboru prostředí. To umožňuje adb shell setprop
použít k přepsání hodnot, které pocházejí ze souboru prostředí pro účely diagnostiky.
Proměnné prostředí Xamarin.Android
Xamarin.Android podporuje proměnnou XA_HTTP_CLIENT_HANDLER_TYPE
, která může být nastavena buď prostřednictvím adb shell setprop debug.mono.env
akce Sestavení, nebo prostřednictvím $(AndroidEnvironment)
akce Sestavení.
XA_HTTP_CLIENT_HANDLER_TYPE
Kvalifikovaný typ sestavení, který musí dědit z HttpMessageHandler a je vytvořen z výchozí konstruktoruHttpClient()
.
V Xamarin.Android 6.1 není tato proměnná prostředí ve výchozím nastavení nastavená a použije se HttpClientHandler .
Případně je možné zadat hodnotu Xamarin.Android.Net.AndroidClientHandler
, která se má použít. java.net.URLConnection
pro síťový přístup, který může povolit použití protokolu TLS 1.2, když ho Android podporuje.
Přidáno v Xamarin.Android 6.1.
Vlastnosti systému Xamarin.Android
Xamarin.Android podporuje následující systémové vlastnosti, které je možné nastavit buď prostřednictvím adb shell setprop
akce Sestavení, nebo prostřednictvím $(AndroidEnvironment)
akce Sestavení.
debug.mono.debug
debug.mono.env
debug.mono.gc
debug.mono.log
debug.mono.max_grefc
debug.mono.profile
debug.mono.runtime_args
debug.mono.trace
debug.mono.wref
XA_HTTP_CLIENT_HANDLER_TYPE
debug.mono.debug
Hodnota debug.mono.debug
systémové vlastnosti je celé číslo. Pokud 1
, pak se chovat "jako" proces byl zahájen mono --debug
.
To obvykle zobrazuje informace o souborech a řádcích v trasování zásobníku atd., aniž by bylo nutné spustit aplikaci z ladicího programu.
debug.mono.env
|
Obsahuje seznam proměnných prostředí oddělených od sebe.
debug.mono.gc
Hodnota debug.mono.gc
systémové vlastnosti je celé číslo.
Pokud 1
by se měly protokolovat informace o GC.
Jedná se o ekvivalent toho debug.mono.log
, že vlastnost systému obsahuje gc
.
debug.mono.log
Určuje, ke kterým dalším informacím se Xamarin.Android přihlásí adb logcat
.
Jedná se o řetězec oddělený čárkami (,
), který obsahuje jednu z následujících hodnot:
all
: Vytiskněte všechny zprávy. To je jen zřídka dobrý nápad, protože obsahujelref
zprávy.assembly
: Vytiskněte.apk
a sestavy analyzující zprávy.gc
: Vytiskněte zprávy související s GC.gref
: Vytiskněte globální referenční zprávy JNI.lref
: Vytiskněte místní referenční zprávy JNI.Poznámka:
To bude opravdu spam
adb logcat
. V Xamarin.Android 5.1 to také vytvoří.__override__/lrefs.txt
soubor, který může být obrovský. Vyhýbat se.timing
: Vytiskněte některé informace o načasování metody. Tím se vytvoří také soubory.__override__/methods.txt
a.__override__/counters.txt
.
debug.mono.max_grefc
Hodnota debug.mono.max_grefc
systémové vlastnosti je celé číslo.
Tato hodnota přepíše výchozí zjištěný maximální počet GREF pro cílové zařízení.
Poznámka: Tato možnost je použitelná pouze s tím, že hodnota nebude v čase k dispozici se souborem adb shell setprop debug.mono.max_grefc
environment.txt .
debug.mono.profile
Systémová debug.mono.profile
vlastnost povolí profiler.
Je ekvivalentní a používá stejné hodnoty jako možnost mono --profile
. (Viz mono(1) man page for more information.)
debug.mono.runtime_args
Systémová debug.mono.runtime_args
vlastnost obsahuje další možnosti, které by měly být analyzovány mono.
debug.mono.trace
Systémová debug.mono.trace
vlastnost umožňuje trasování.
Je ekvivalentní a používá stejné hodnoty jako možnost mono --trace
. (Viz mono(1) man page for more information.)
Obecně nepoužívejte. Použití trasování bude spamový adb logcat
výstup, několik zpomalí chování programu a změní chování programu (až do přidání dalších chybových podmínek).
Někdy ale umožňuje provést další šetření...
debug.mono.wref
Systémová debug.mono.wref
vlastnost umožňuje přepsání výchozího zjištěného mechanismu JNI Weak Reference. Existují dvě podporované hodnoty:
jni
: Používejte slabé odkazy JNI vytvořenéJNIEnv::NewWeakGlobalRef()
a zničenéJNIEnv::DeleteWeakGlobalREf()
.java
: Použijte globální odkazy JNI, které odkazují najava.lang.WeakReference
instance.
java
se ve výchozím nastavení používá až přes rozhraní API-7 a rozhraní API-19 (Kit Kat) s povoleným art. (Rozhraní API-8 přidalo jni
odkazy a art přerušil jni
odkazy.)
Tato systémová vlastnost je užitečná pro testování a určité formy šetření. Obecně platí, že by nemělo být změněno.
XA_HTTP_CLIENT_HANDLER_TYPE
Poprvé představena v Xamarin.Android 6.1, tato proměnná prostředí deklaruje výchozí HttpMessageHandler
implementaci, která bude použita HttpClient
. Ve výchozím nastavení tato proměnná není nastavena a Xamarin.Android použije HttpClientHandler
.
XA_HTTP_CLIENT_HANDLER_TYPE=Xamarin.Android.Net.AndroidClientHandler
Poznámka:
Základní zařízení s Androidem musí podporovat protokol TLS 1.2. Android 5.0 a novější podporuje protokol TLS 1.2
Příklad
## Comments are lines which start with '#'
## Blank lines are ignored.
## Enable GREF messages to `adb logcat`
debug.mono.log=gref
## Clear out a Mono environment variable to decrease logging
MONO_LOG_LEVEL=