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 adb shell setprop komutuyla, ortam değişkenleri ise sistem özelliği ayar tarafından da ayar debug.mono.env olabilir:
## 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 cihaza yönelik tüm işlemler için ayarlanır.
Xamarin.Android 4.6'dan başlayarak, projeye bir ortam dosyası ekleyerek hem sistem özellikleri hem de ortam değişkenleri uygulama başına temelinde ayar veya geçersiz kılınabilir. Ortam dosyası, Derleme eylemine sahip Unix biçimli düz metin dosyasıdır.
Ortam dosyası key=value biçiminde satırlar içerir.
Açıklamalar, ile baş inen # satırlardır. Boş satırlar yoksayılır.
Anahtar büyük harfle başlıyorsa, anahtar bir ortam değişkeni olarak kabul edilir ve işlem başlatma sırasında ortam değişkenlerini 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 kabul edilir ve değer varsayılan değerdir: Xamarin.Android yürütme davranışını kontrol altına alan Android sistem özellikleri android sistem özelliği mağazasından ilk olarak arama yapar ve hiçbir değer yoksa ortam dosyasında belirtilen değer kullanılır. Bu, tanılama adb shell setprop amacıyla ortam dosyasından gelen değerleri geçersiz kılmak için kullanılmaya izin verir.
Xamarin.Android Ortam Değişkenleri
Xamarin.Android, XA_HTTP_CLIENT_HANDLER_TYPE Derleme eylemi aracılığıyla veya aracılığıyla adb shell setprop debug.mono.env ayarlan $(AndroidEnvironment) değişkenini destekler.
XA_HTTP_CLIENT_HANDLER_TYPE
HttpMessageHandler'dan devralması gereken ve varsayılan oluşturucudan oluşturulmuş derleme tarafından uygun tür.
Xamarin.Android 6.1'de bu ortam değişkeni varsayılan olarak ayarlanmaz ve HttpClientHandler kullanılır.
Alternatif olarak, Xamarin.Android.Net.AndroidClientHandler değeri kullanmak üzere belirtilebilirjava.net.URLConnection Ağ erişimi için, Android java.net.URLConnection desteklene zaman TLS 1.2'nin kullanımına izin verebilirsiniz.
Xamarin.Android 6.1'e eklendi.
Xamarin.Android Sistem Özellikleri
Xamarin.Android, Aşağıdaki sistem özelliklerini destekler; bu özellik Derleme eylemi aracılığıyla adb shell setprop veya aracılığıyla $(AndroidEnvironment) ayarlandırabilirsiniz.
debug.mono.debugdebug.mono.envdebug.mono.gcdebug.mono.logdebug.mono.max_grefcdebug.mono.profiledebug.mono.runtime_argsdebug.mono.tracedebug.mono.wrefXA_HTTP_CLIENT_HANDLER_TYPE
debug.mono.debug
Sistem özelliğinin debug.mono.debug değeri bir tamsayıdır. ise, 1 işlem ile başlatmış gibi "gibi" mono --debug davranır.
Bu genellikle uygulamanın bir hata ayıklayıcısından başlatılmış olması gerekmeden yığın izlemelerinde 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 bilgileri günlüğe kayded gerekir.
Bu, sistem özelliğinin debug.mono.log içermesi ile gc eşdeğerdir.
debug.mono.log
Xamarin.Android'in oturum açtıracak ek bilgileri kontrol adb logcat eder.
Bu, aşağıdaki değerlerden birini içeren , virgülle ayrılmış bir dizedir ( ):
all: Tümallİletiler de dahil olmak için bu nadiren iyi birlreffikirdir.assembly: İletileri.apkyazdırma ve derleme ayrıştırma.gc: GC ile ilgili iletileri yazdırma.gref: JNI Genel Başvuru iletilerini yazdırma.lref: JNI Yerel Başvuru iletilerini yazdırma.Not
Bu, gerçekten istenmeyen posta olarak gelir. Xamarin.Android 5.1'de bu, gigantik bir dosya
.__override__/lrefs.txtda.__override__/lrefs.txtÖnle.timing: Bazı yöntem zamanlama bilgilerini yazdırabilirsiniz. Bu, ve dosyalarını da.__override__/methods.txt.__override__/counters.txtoluşturacak.
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 şunları unutmayın: Bu yalnızca ile kullanılabilir çünkü değer bir dosya dosyasıyla zamanında environment.txt.
debug.mono.profile
Sistem debug.mono.profile özelliği profil oluşturma özelliğini sağlar.
seçeneğiyle eşdeğerdir ve seçeneğiyle aynı değerleri mono --profile kullanır. (Daha fazla bilgi için mono(1) adam sayfasına bakın.)
debug.mono.runtime_args
sistem debug.mono.runtime_args özelliği, mono tarafından ayrıştırıcısı gereken ek seçenekler debug.mono.runtime_args
debug.mono.trace
Sistem debug.mono.trace özelliği izlemeyi etkinleştirir.
seçeneğiyle eşdeğerdir ve seçeneğiyle aynı değerleri mono --trace kullanır. (Daha fazla bilgi için mono(1) adam sayfasına bakın.)
Genel olarak, kullanmayın. İzlemenin kullanımı istenmeyen posta çıkışı oluşturur, program davranışını yavaşlatma ve program davranışını değiştirme (ek hata koşulları ekleme dahil olmak adb logcat üzere) olur.
Ancakbazen bazı ek araştırmaların gerçekleştirile...
debug.mono.wref
Sistem debug.mono.wref özelliği, algılanan varsayılan JNI Zayıf Başvuru mekanizmasının geçersiz kılınma özelliğine izin verir. Desteklenen iki değer vardır:
jni: tarafından oluşturulan ve tarafından yok edilmiş JNIJNIEnv::NewWeakGlobalRef()zayıf başvurularınıJNIEnv::DeleteWeakGlobalREf()kullanın.java: Örneklere başvurulan JNI Geneljava.lang.WeakReferencebaşvurularını kullanın.
java varsayılan olarak API-7 ve API-19 (Kit Kat) üzerinden ART etkin olarak kullanılır. (API-8 başvuruları jni eklemişti ve ART jnijni kırmıştı.)
Bu sistem özelliği, test ve belirli araştırma biçimleri için yararlıdır. Genel olarak,değişmemiş olması gerekir.
XA_HTTP_CLIENT_HANDLER_TYPE
İlk olarak Xamarin.Android 6.1'de tanıtıldı, bu ortam değişkeni tarafından kullanılacak HttpMessageHandler varsayılan uygulama HttpClient bildirmektedir. Varsayılan olarak bu değişken ayarlanmaz ve Xamarin.Android, HttpClientHandler kullanır.
XA_HTTP_CLIENT_HANDLER_TYPE=Xamarin.Android.Net.AndroidClientHandler
Not
Temel alınan Android cihazı TLS 1.2'yi desteklemeli. Android 5.0 ve sonrası TLS 1.2'yi 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=