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 1by 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 obsahuje lref 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ý. Se zabránilo.

  • 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_grefcenvironment.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í na java.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šiljni 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=