Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Ambiente de execução
O ambiente de execução é o conjunto de variáveis de ambiente e propriedades do sistema Android que influenciam a execução do programa. As propriedades do sistema Android podem ser definidas com o comando adb shell setprop, enquanto as variáveis de ambiente podem ser configuradas definindo-se a propriedade do sistema debug.mono.env:
## 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'"
As propriedades do sistema Android são definidas para todos os processos no dispositivo de destino.
Começando com o Xamarin.Android 4.6, as propriedades do sistema e as variáveis de ambiente podem ser definidas ou substituídas em uma base por aplicativo adicionando-se um arquivo de ambiente ao projeto. Um arquivo do ambiente é um arquivo de texto sem formatação em formato Unix com uma ação de build de AndroidEnvironment.
O arquivo de ambiente contém linhas com o formato chave=valor.
Os comentários são linhas que começam com #. As linhas em branco são ignoradas.
Se a chave começa com uma letra maiúscula, chave é tratada como uma variável de ambiente e setenv(3) é usado para definir a variável de ambiente para o valor especificado durante a inicialização do processo.
Se a chave começa com uma letra minúscula, a chave é tratada como uma propriedade do sistema Android e valor é o valor padrão: propriedades do sistema Android que controlam o comportamento de execução do Xamarin.Android são pesquisadas primeiro do repositório de propriedades do sistema Android e, se nenhum valor está presente, o valor especificado no arquivo de ambiente é usado. Isso é para permitir que adb shell setprop seja usado para substituir valores provenientes do arquivo de ambiente para fins de diagnóstico.
Variáveis de ambiente do Xamarin.Android
O Xamarin.Android é compatível com a variável XA_HTTP_CLIENT_HANDLER_TYPE, que pode ser definida por meio de adb shell setprop debug.mono.env ou por meio da ação de build $(AndroidEnvironment).
XA_HTTP_CLIENT_HANDLER_TYPE
O tipo qualificado por assembly que deve herdar de HttpMessageHandler e é construído por meio do construtor padrão HttpClient().
No Xamarin.Android 6.1, essa variável de ambiente não é definida por padrão e HttpClientHandler é usada.
Como alternativa, o valor Xamarin.Android.Net.AndroidClientHandler pode ser especificado para usar java.net.URLConnection para acesso à rede, o que pode permitir o uso do TLS 1.2 quando o Android for compatível.
Adicionado no Xamarin.Android 6.1.
Propriedades do sistema Xamarin.Android
O Xamarin.Android é compatível com as seguintes variáveis do sistema, que podem ser definidas por meio de adb shell setprop ou por meio da ação de build $(AndroidEnvironment).
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
O valor da propriedade do sistema debug.mono.debug é um inteiro. Se 1, comporte-se "como se" o processo começasse com mono --debug.
Geralmente, isso mostra informações de arquivo e de linha em rastreamentos de pilha, etc., sem a necessidade de o aplicativo ser iniciado de um depurador.
debug.mono.env
Contém uma lista de variáveis de ambiente separadas por |.
debug.mono.gc
O valor da propriedade do sistema debug.mono.gc é um inteiro.
Se 1, as informações de GC devem ser registradas.
Isso é equivalente a fazer com que propriedade do sistema debug.mono.log contenha gc.
debug.mono.log
Controla quais informações adicionais o Xamarin.Android registrará em adb logcat.
É uma cadeia de caracteres separada por vírgulas (,), que contém um dos seguintes valores:
all: imprimir todas as mensagens. Isso raramente é uma boa ideia, pois inclui mensagenslref.assembly: imprimir mensagens de análise de assembly e.apk.gc: imprimir mensagens relacionadas a GC.gref: imprimir mensagens de referência global de JNI.lref: imprimir mensagens de referência local de JNI.Observação
isso realmente enviará
adb logcatcomo spam. No Xamarin.Android 5.1, isso também criará um arquivo.__override__/lrefs.txt, que pode ficar gigantesco. Evitar.timing: imprimir algumas informações de tempo de método. Isso também criará os arquivos.__override__/methods.txte.__override__/counters.txt.
debug.mono.max_grefc
O valor da propriedade do sistema debug.mono.max_grefc é um inteiro.
O valor dela substitui a contagem máxima de GREF padrão detectada para o dispositivo de destino.
Observação: isso só pode ser usado com adb shell setprop debug.mono.max_grefc, pois o valor não estará disponível em tempo com um arquivo environment.txt.
debug.mono.profile
A propriedade do sistema debug.mono.profile habilita o criador de perfil.
Ele equivale à opção mono --profile e usa os mesmos valores que ela. (Consulte a página de manual do mono(1) para obter mais informações.)
debug.mono.runtime_args
A propriedade do sistema debug.mono.runtime_args contém opções adicionais que devem ser analisadas por mono.
debug.mono.trace
A propriedade do sistema debug.mono.trace habilita o rastreamento.
Ele equivale à opção mono --trace e usa os mesmos valores que ela. (Consulte a página de manual do mono(1) para obter mais informações.)
Em geral, a recomendação é não usar. O uso de rastreamento enviará a saída adb logcat como spam, deixando o comportamento do programa severamente mais lento; além disso, ele alterará o comportamento do programa (até mesmo incluindo a adição de condições de erro adicionais).
Às vezes, no entanto, ele permite que alguma investigação adicional seja executada...
debug.mono.wref
A propriedade do sistema debug.mono.wref permite substituir o mecanismo de referência fraca JNI padrão detectado. Há dois valores compatíveis:
jni: use referências fracas JNI, conforme criadas peloJNIEnv::NewWeakGlobalRef()e destruídas porJNIEnv::DeleteWeakGlobalREf().java: Use referências JNI Global que fazem referência ajava.lang.WeakReferenceinstâncias.
java é usado, por padrão, até a API-7 e na API-19 (Kit Kat) com ART habilitado. (API-8 adicionou jni referências e ART quebrou jni referências.)
Essa propriedade do sistema é útil para testes e para certas formas de investigação. Em geral, ela não deve ser alterada.
XA_HTTP_CLIENT_HANDLER_TYPE
Introduzida pela primeira vez no Xamarin.Android 6.1, essa variável de ambiente declara a implementação HttpMessageHandler padrão que será usada pelo HttpClient. Por padrão, essa variável não é definida e o Xamarin.Android usa a HttpClientHandler.
XA_HTTP_CLIENT_HANDLER_TYPE=Xamarin.Android.Net.AndroidClientHandler
Observação
O dispositivo Android subjacente deve ser compatível com TLS 1.2. O Android 5.0 e versões posteriores dão suporte à TLS 1.2
Exemplo
## 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=