Lingkungan Xamarin.Android
Lingkungan eksekusi
Lingkungan eksekusi adalah serangkaian variabel lingkungan dan properti sistem Android yang memengaruhi eksekusi program. Properti sistem Android dapat diatur dengan adb shell setprop
perintah , sementara variabel lingkungan dapat diatur dengan mengatur debug.mono.env
properti sistem:
## 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'"
Properti sistem Android diatur untuk semua proses pada perangkat target.
Dimulai dengan Xamarin.Android 4.6, properti sistem dan variabel lingkungan dapat diatur atau ditimpa berdasarkan per aplikasi dengan menambahkan file lingkungan ke proyek. File lingkungan adalah file teks biasa berformat Unix dengan tindakan Build .AndroidEnvironment
File lingkungan berisi baris dengan format key=value.
Komentar adalah baris yang dimulai dengan #
. Baris kosong diabaikan.
Jika kunci dimulai dengan huruf besar, maka kunci diperlakukan sebagai variabel lingkungan dan setenv(3) digunakan untuk mengatur variabel lingkungan ke nilai yang ditentukan selama startup proses.
Jika kunci dimulai dengan huruf kecil, maka kunci diperlakukan sebagai properti dan nilai sistem Android adalah nilai default: Properti sistem Android yang mengontrol perilaku eksekusi Xamarin.Android dicari terlebih dahulu dari penyimpanan properti sistem Android, dan jika tidak ada nilai yang ada maka nilai yang ditentukan dalam file lingkungan digunakan. Ini untuk mengizinkan adb shell setprop
digunakan untuk mengambil alih nilai yang berasal dari file lingkungan untuk tujuan diagnostik.
Variabel Lingkungan Xamarin.Android
Xamarin.Android mendukung XA_HTTP_CLIENT_HANDLER_TYPE
variabel , yang dapat diatur baik melalui adb shell setprop debug.mono.env
atau melalui $(AndroidEnvironment)
tindakan Build.
XA_HTTP_CLIENT_HANDLER_TYPE
Jenis yang memenuhi syarat rakitan yang harus diwarisi dari HttpMessageHandler dan dibangun dari HttpClient()
konstruktor default.
Di Xamarin.Android 6.1, variabel lingkungan ini tidak diatur secara default, dan HttpClientHandler akan digunakan.
Atau, nilai Xamarin.Android.Net.AndroidClientHandler
dapat ditentukan untuk digunakan java.net.URLConnection
untuk akses jaringan, yang dapat mengizinkan penggunaan TLS 1.2 saat Android mendukungnya.
Ditambahkan di Xamarin.Android 6.1.
Properti Sistem Xamarin.Android
Xamarin.Android mendukung properti sistem berikut, yang dapat diatur baik melalui adb shell setprop
atau melalui $(AndroidEnvironment)
tindakan Build.
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
Nilai debug.mono.debug
properti sistem adalah bilangan bulat. Jika 1
, maka berulah "seolah-olah" proses dimulai dengan mono --debug
.
Ini umumnya menunjukkan informasi file dan baris dalam jejak tumpukan, dll., tanpa mengharuskan aplikasi dimulai dari debugger.
debug.mono.env
|
Berisi daftar variabel lingkungan yang dipisahkan.
debug.mono.gc
Nilai debug.mono.gc
properti sistem adalah bilangan bulat.
Jika 1
, informasi GC harus dicatat.
Ini setara dengan memiliki debug.mono.log
properti sistem yang berisi gc
.
debug.mono.log
Mengontrol informasi tambahan mana yang akan dicatat Xamarin.Android ke adb logcat
.
Ini adalah string yang dipisahkan koma (,
), berisi salah satu nilai berikut:
all
: Cetak semua pesan. Ini jarang ide yang baik, karena termasuklref
pesan.assembly
: Cetak dan.apk
rakitan mengurai pesan.gc
: Cetak pesan terkait GC.gref
: Cetak pesan Referensi Global JNI.lref
: Cetak pesan Referensi Lokal JNI.Catatan
Ini akan benar-benar spam
adb logcat
. Di Xamarin.Android 5.1, ini juga akan membuat.__override__/lrefs.txt
file, yang bisa menjadi raksasa. Hindari.timing
: Cetak beberapa informasi pengaturan waktu metode. Ini juga akan membuat file.__override__/methods.txt
dan.__override__/counters.txt
.
debug.mono.max_grefc
Nilai debug.mono.max_grefc
properti sistem adalah bilangan bulat.
Nilai ini mengambil alih jumlah GREF maksimum default yang terdeteksi untuk perangkat target.
Harap dicatat: Ini hanya dapat digunakan dengan adb shell setprop debug.mono.max_grefc
karena nilai tidak akan tersedia tepat waktu dengan file environment.txt .
debug.mono.profile
Properti debug.mono.profile
sistem memungkinkan profiler.
Ini setara dengan, dan menggunakan nilai yang sama dengan, mono --profile
opsi . (Lihat mono(1) halaman man untuk informasi lebih lanjut.)
debug.mono.runtime_args
Properti debug.mono.runtime_args
sistem berisi opsi tambahan yang harus diurai oleh mono.
debug.mono.trace
Properti debug.mono.trace
sistem memungkinkan pelacakan.
Ini setara dengan, dan menggunakan nilai yang sama dengan, mono --trace
opsi . (Lihat mono(1) halaman man untuk informasi lebih lanjut.)
Secara umum, jangan gunakan. Penggunaan pelacakan akan menghasilkan spam adb logcat
, beberapa perilaku program yang memperlambat, dan mengubah perilaku program (hingga dan termasuk menambahkan kondisi kesalahan tambahan).
Namun, terkadang, hal ini memungkinkan beberapa penyelidikan tambahan dilakukan...
debug.mono.wref
Properti debug.mono.wref
sistem memungkinkan pengesampingan mekanisme Referensi Lemah JNI yang terdeteksi default. Ada dua nilai yang didukung:
jni
: Gunakan referensi lemah JNI, seperti yang dibuat olehJNIEnv::NewWeakGlobalRef()
dan dihancurkan olehJNIEnv::DeleteWeakGlobalREf()
.java
: Gunakan referensi JNI Global instans referensijava.lang.WeakReference
mana.
java
digunakan, secara default, hingga melalui API-7 dan pada API-19 (Kit Kat) dengan ART diaktifkan. (REFERENSI tambahan jni
API-8, dan ART memecahkan jni
referensi.)
Properti sistem ini berguna untuk pengujian dan bentuk investigasi tertentu. Secara umum, itu tidak boleh diubah.
XA_HTTP_CLIENT_HANDLER_TYPE
Pertama kali diperkenalkan di Xamarin.Android 6.1, variabel lingkungan ini menyatakan implementasi default HttpMessageHandler
yang akan digunakan oleh HttpClient
. Secara default variabel ini tidak diatur, dan Xamarin.Android akan menggunakan HttpClientHandler
.
XA_HTTP_CLIENT_HANDLER_TYPE=Xamarin.Android.Net.AndroidClientHandler
Catatan
Perangkat Android yang mendasar harus mendukung TLS 1.2. Android 5.0 dan yang lebih baru mendukung TLS 1.2
Contoh
## 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=