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.URLConnection
android 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 1
GC bilgilerinin günlüğe kaydedilmesi gerekir.
Bu, sistem özelliğinin içermesine debug.mono.log
gc
eşdeğerdir.
debug.mono.log
Xamarin.Android'in oturum açacağı adb logcat
ek 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ğilref
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 logcat
olacaktı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.txt
dosyaları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ındanJNIEnv::NewWeakGlobalRef()
oluşturulan ve tarafındanJNIEnv::DeleteWeakGlobalREf()
yok edilen JNI zayıf başvurularını kullanın.java
: Örneklere başvuranjava.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 HttpClient
kullanı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=