Bagikan melalui


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 termasuk lref 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 oleh JNIEnv::NewWeakGlobalRef() dan dihancurkan oleh JNIEnv::DeleteWeakGlobalREf().
  • java: Gunakan referensi JNI Global instans referensi java.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 memecahkanjni 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=