Prostředí Xamarin.Android

Prostředí pro spouštění

Prostředí pro spouštění je sada proměnných prostředí a systémových vlastností Androidu, které ovlivňují provádění programu. Systémové vlastnosti Androidu je možné nastavit pomocí příkazu , zatímco proměnné prostředí je možné nastavit adb shell setprop 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'"

Systémové vlastnosti Androidu jsou nastavené pro všechny procesy na cílovém zařízení.

Počínaje Xamarin.Androidem 4.6 je možné nastavit nebo přepsat systémové vlastnosti i proměnné prostředí pro každou aplikaci přidáním souboru prostředí do projektu. Soubor prostředí je soubor prostého textu ve formátu Unixu s akcí Sestavení . Soubor prostředí obsahuje řádky ve formátu key=value. Komentáře jsou řádky, které začínají # na . Prázdné řádky se ignorují.

Pokud klíč začíná velkým písmenem, pak se klíč bude považovat za proměnnou prostředí a proměnná setenv(3) se použije k nastavení proměnné prostředí na zadanou hodnotu během spouštění procesu.

Pokud klíč začíná malým písmenem, pak se s klíčem zachází jako se systémovou vlastností Androidu a výchozí hodnotou je: Systémové vlastnosti Androidu, které řídí chování při provádění Xamarin.Android, se nejprve načtou z úložiště systémových vlastností Androidu, a pokud není k dispozici žádná hodnota, použije se hodnota zadaná v souboru prostředí. To umožňuje použití k přepsání hodnot, které pocházejí adb shell setprop ze souboru prostředí pro diagnostické účely.

Proměnné prostředí Xamarin.Android

Xamarin.Android podporuje XA_HTTP_CLIENT_HANDLER_TYPE proměnnou , kterou je možné nastavit prostřednictvím adb shell setprop debug.mono.env akce Sestavení nebo $(AndroidEnvironment) .

XA_HTTP_CLIENT_HANDLER_TYPE

Typ kvalifikovaný pro sestavení, který musí dědit z Třídy HttpMessageHandler a je vytvořen z výchozího konstruktoru.

V Xamarin.Android 6.1 není tato proměnná prostředí ve výchozím nastavení nastavená a použije se HttpClientHandler.

Další možností je Xamarin.Android.Net.AndroidClientHandler zadat hodnotu, která se má použít.java.net.URLConnection pro přístup k síti, java.net.URLConnection 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 prostřednictvím akce adb shell setprop Sestavení nebo $(AndroidEnvironment) .

  • 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 systémové debug.mono.debug vlastnosti je celé číslo. Pokud 1 , pak se chovají "jako kdyby" proces byl spuštěn s mono --debug . V trasování zásobníku atd.se obvykle zobrazují informace o souboru a řádku, aniž by bylo nutné aplikaci spustit z ladicího programu.

debug.mono.env

Obsahuje | seznam proměnných prostředí oddělených oddělovači.

debug.mono.gc

Hodnota systémové debug.mono.gc vlastnosti je celé číslo. Pokud 1 je , měly by se protokolovat informace o globálním katalogu.

To je ekvivalentem toho, že debug.mono.log systémová vlastnost obsahuje gc .

debug.mono.log

Určuje, které další informace se Xamarin.Android bude protokolovat k adb logcat . Je to řetězec oddělený čárkami ( , ), který obsahuje jednu z následujících hodnot:

  • all: Vytiskněte all zprávy. To je jen zřídka dobrý nápad, protože zahrnuje lref zprávy.
  • assembly: Tisk a .apk analýza sestavení zpráv.
  • gc: Vytiskněte zprávy související s uvolňováním paměti.
  • gref: Vytiskněte zprávy globálních referenčních zpráv JNI.
  • lref: Vytiskněte zprávy místních referenčních zpráv JNI.

    Poznámka

    Tím se ve skutečnosti spam . V Xamarin.Androidu 5.1 se tím také vytvoří .__override__/lrefs.txt soubor , který může získat .__override__/lrefs.txt. Se zabránilo.

  • timing: Vytiskněte některé informace o časování metody. Tím se také vytvoří soubory .__override__/methods.txt.__override__/counters.txt a .

debug.mono.max_grefc

Hodnota systémové debug.mono.max_grefc vlastnosti je celé číslo. Hodnota přepisuje výchozí zjištěný maximální počet GREF pro cílové zařízení.

Upozorňujeme: Toto je možné použít pouze s parametrem , protože hodnota nebude k dispozici v čase s environment.txt souborem.

debug.mono.profile

Vlastnost debug.mono.profile system umožňuje profiler. Je ekvivalentní a používá stejné hodnoty jako mono --profile parametr . (Další informace najdete na stránce mono (1) man.)

debug.mono.runtime_args

Vlastnost debug.mono.runtime_args system obsahuje další možnosti, které by měl parsovat debug.mono.runtime_args.

debug.mono.trace

Vlastnost debug.mono.trace system umožňuje trasování. Je ekvivalentní a používá stejné hodnoty jako mono --trace parametr . (Další informace najdete na stránce mono (1) man.)

Obecně nepoužívejte . Použití trasování bude spamový výstup, několik zpomalí chování programu a změní chování programu (až do přidání dalších adb logcat chybových podmínek včetně).

Někdyale umožňuje provést další šetření...

debug.mono.wref

Vlastnost debug.mono.wref system umožňuje přepsat výchozí zjištěný mechanismus slabého odkazu JNI. Existují dvě podporované hodnoty:

  • jni: Použijte slabé odkazy JNI vytvořené a JNIEnv::NewWeakGlobalRef() zničené objektem JNIEnv::DeleteWeakGlobalREf() .
  • java: Použijte odkazy JNI Global, které java.lang.WeakReference odkazují na instance.

java se ve výchozím nastavení používá prostřednictvím rozhraní API-7 a v rozhraní API-19 (Kit Kat) s povoleným režimem ART. (Rozhraní API-8 jni přidalo odkazy a funkce ART jnijni odkazy.)

Tato systémová vlastnost je užitečná pro testování a určité formy šetření. Obecně platí,že by se neměl měnit.

XA_HTTP_CLIENT_HANDLER_TYPE

Tato proměnná prostředí poprvé zavedená v Xamarin.Android 6.1 deklaruje výchozí implementaci, HttpMessageHandler kterou bude používat HttpClient . Ve výchozím nastavení tato proměnná není nastavená 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ší podporují 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=