Aracılığıyla paylaş


Xamarin.Android Ortamı

Yürütme Ortamı

Yürütme ortamı , program yürütmeyi etkileyen ortam değişkenleri ve Android sistem özellikleri kümesidir. Android sistem özellikleri komutuyla adb shell setprop ayarlanabilirken, sistem özelliği ayarlanarak debug.mono.env ortam değişkenleri ayarlanabilir:

## 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'"

Android sistem özellikleri hedef cihazdaki tüm işlemler için ayarlanır.

Xamarin.Android 4.6'dan başlayarak, projeye bir ortam dosyası eklenerek hem sistem özellikleri hem de ortam değişkenleri uygulama başına temelinde ayarlanabilir veya geçersiz kılınabilir. Ortam dosyası, Build eylemine sahip Unix biçimli bir düz metin dosyasıdırAndroidEnvironment. Ortam dosyası key=value biçiminde çizgiler içerir. Açıklamalar ile #başlayan satırlardır. Boş satırlar yoksayılır.

Anahtar büyük harfle başlıyorsa, anahtar bir ortam değişkeni olarak değerlendirilir ve işlem başlatma sırasında ortam değişkenini belirtilen değere ayarlamak için setenv(3) kullanılır.

Anahtar küçük harfle başlıyorsa, anahtar bir Android sistem özelliği olarak değerlendirilir ve değer varsayılan değerdir: Xamarin.Android yürütme davranışını denetleyen Android sistem özellikleri önce Android sistem özellik deposundan aranır ve değer yoksa ortam dosyasında belirtilen değer kullanılır. Bu, tanılama amacıyla ortam dosyasından gelen değerleri geçersiz kılmak için kullanılmasına izin adb shell setprop vermektir.

Xamarin.Android Ortam Değişkenleri

Xamarin.Android, Derleme eylemi aracılığıyla adb shell setprop debug.mono.env veya aracılığıyla ayarlanabilen $(AndroidEnvironment) değişkeni desteklerXA_HTTP_CLIENT_HANDLER_TYPE.

XA_HTTP_CLIENT_HANDLER_TYPE

HttpMessageHandler'dan devralması gereken ve varsayılan oluşturucudan HttpClient()oluşturulur derleme nitelikli türü.

Xamarin.Android 6.1'de bu ortam değişkeni varsayılan olarak ayarlanmaz ve HttpClientHandler kullanılır.

Alternatif olarak, kullanılacak değer Xamarin.Android.Net.AndroidClientHandler belirtilebilir java.net.URLConnectionandroid tarafından desteklendiğinde TLS 1.2 kullanımına izin verebilen ağ erişimi için.

Xamarin.Android 6.1'de eklendi.

Xamarin.Android Sistem Özellikleri

Xamarin.Android, Derleme eylemi aracılığıyla adb shell setprop veya aracılığıyla ayarlanabilen $(AndroidEnvironment) aşağıdaki sistem özelliklerini destekler.

  • 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

Sistem özelliğinin debug.mono.debug değeri bir tamsayıdır. ise 1, işlemi ile mono --debug"sanki" başlatılmış gibi davranın. Bu genellikle, uygulamanın bir hata ayıklayıcıdan başlatılmasına gerek kalmadan yığın izlemelerinde vb. dosya ve satır bilgilerini gösterir.

debug.mono.env

Ortam değişkenlerinin ayrılmış listesini |içerir.

debug.mono.gc

Sistem özelliğinin debug.mono.gc değeri bir tamsayıdır. ise 1GC bilgilerinin günlüğe kaydedilmesi gerekir.

Bu, sistem özelliğinin içermesine debug.mono.log gceşdeğerdir.

debug.mono.log

Xamarin.Android'in oturum açacağı adb logcatek bilgileri denetler. Virgülle ayrılmış bir dizedir (, ), aşağıdaki değerlerden birini içerir:

  • all: Tüm iletileri yazdırın. Bu, iletileri içerdiği lref için nadiren iyi bir fikirdir.
  • assembly: İletileri yazdırma .apk ve derleme ayrıştırma.
  • gc: GC ile ilgili iletileri yazdırın.
  • gref: JNI Genel Başvuru iletilerini yazdırın.
  • lref: JNI Yerel Başvuru iletilerini yazdırın.

    Not

    Bu gerçekten istenmeyen posta adb logcatolacaktır. Xamarin.Android 5.1'de bu işlem, devasa bir dosya da oluşturur.__override__/lrefs.txt. Kaçınmak.

  • timing: Bazı yöntem zamanlama bilgilerini yazdırın. Bu, ve .__override__/counters.txtdosyalarını .__override__/methods.txt da oluşturur.

debug.mono.max_grefc

Sistem özelliğinin debug.mono.max_grefc değeri bir tamsayıdır. Bu değer , hedef cihaz için varsayılan algılanan maksimum GREF sayısını geçersiz kılar .

Lütfen unutmayın: Değer bir environment.txt dosyasıyla adb shell setprop debug.mono.max_grefc zamanında kullanılamayacağı için bu yalnızca ile kullanılabilir.

debug.mono.profile

debug.mono.profile Sistem özelliği profil oluşturucuyu etkinleştirir. seçeneğiyle eşdeğerdir ve seçeneğiyle aynı değerleri mono --profile kullanır. (Bkz. daha fazla bilgi için mono(1) adam sayfası.)

debug.mono.runtime_args

debug.mono.runtime_args Sistem özelliği mono tarafından ayrıştırılması gereken ek seçenekler içerir.

debug.mono.trace

debug.mono.trace Sistem özelliği izlemeyi etkinleştirir. seçeneğiyle eşdeğerdir ve seçeneğiyle aynı değerleri mono --trace kullanır. (Bkz. daha fazla bilgi için mono(1) adam sayfası.)

Genel olarak kullanmayın. İzlemenin kullanılması istenmeyen posta adb logcat çıkışına neden olur, program davranışını birkaç yavaşlatır ve program davranışını değiştirir (ek hata koşulları ekleme dahil).

Ancak bazen bazı ek araştırmaların gerçekleştirilmesini sağlar...

debug.mono.wref

debug.mono.wref Sistem özelliği, varsayılan algılanan JNI Zayıf Başvuru mekanizmasının geçersiz kılınmasına izin verir. Desteklenen iki değer vardır:

  • jni: tarafından JNIEnv::NewWeakGlobalRef() oluşturulan ve tarafından JNIEnv::DeleteWeakGlobalREf()yok edilen JNI zayıf başvurularını kullanın.
  • java: Örneklere başvuran java.lang.WeakReference JNI Genel başvurularını kullanın.

java varsayılan olarak, API-7 ve ART etkin API-19 (Kit Kat) üzerinde kullanılır. (API-8 başvuruları ekledi jni ve ART başvuruları kırdıjni.)

Bu sistem özelliği test ve belirli araştırma biçimleri için kullanışlıdır. Genel olarak değiştirilmemelidir.

XA_HTTP_CLIENT_HANDLER_TYPE

İlk olarak Xamarin.Android 6.1'de kullanıma sunulan bu ortam değişkeni tarafından HttpClientkullanılacak varsayılan HttpMessageHandler uygulamayı bildirir. Varsayılan olarak bu değişken ayarlanmaz ve Xamarin.Android kullanır HttpClientHandler.

XA_HTTP_CLIENT_HANDLER_TYPE=Xamarin.Android.Net.AndroidClientHandler

Not

Temel alınan Android cihazın TLS 1.2'yi desteklemesi gerekir. Android 5.0 ve üzeri TLS 1.2'i destekler

Örnek

## 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=