Atributo depurável
Para possibilitar a depuração, o Android é compatível com o JDWP (protocolo de transmissão de depuração do Java). Essa é uma tecnologia que permite que ferramentas como ADB se comuniquem com uma JVM. Embora o JDWP seja importante durante o desenvolvimento, ele deve ser desabilitado antes da publicação do aplicativo.
O JDWP pode ser configurado pelo valor do android:debuggable
atributo em um aplicativo Android. Escolha uma das três maneiras a seguir de definir esse atributo no Xamarin.Android:
AndroidManifest.xml
Crie ou abra AndroidManifext.xml
o arquivo e defina o android:debuggable
atributo lá. Tome cuidado extra para não enviar seu build de versão com a depuração habilitada.
<application android:label="@string/app_name"
android:debuggable="true"
android:icon="@mipmap/appicon">
...
</application>
Adicionar um atributo de classe de aplicativo
Se o aplicativo Xamarin.Android tiver uma classe com um [Application]
atributo, atualize o atributo para [Application(Debuggable = true)]
. Defina-o como false
para desabilitar.
Adicionar um atributo de assembly
Se o aplicativo Xamarin.Android ainda não tiver um [Application]
atributo de classe, adicione um atributo [assembly: Application(Debuggable=true)]
no nível do assembly em um arquivo c#, como . Properties\AssemblyInfo.cs
Defina-o como false
para desabilitar.
Resumo
Se AndroidManifest.xml
e ApplicationAttribute
estiverem presentes, o conteúdo de AndroidManifest.xml
tem prioridade sobre o que é especificado pelo ApplicationAttribute
.
Se você adicionar um atributo de classe e um atributo de assembly, haverá um erro do compilador:
"Error The "GenerateJavaStubs" task failed unexpectedly.
System.InvalidOperationException: Application cannot have both a type with an [Application] attribute and an [assembly:Application] attribute."
Por padrão – se nem o AndroidManifest.xml
nem o ApplicationAttribute
estiver presente – o android:debuggable
valor do atributo dependerá se os símbolos de depuração serão gerados ou não. Se os símbolos de depuração estiverem presentes, o Xamarin.Android definirá o android:debuggable
atributo como true
para você.
Aviso
O valor do android:debuggable
atributo NÃO depende necessariamente da configuração de build. É possível que builds de versão definam o atributo android:debuggable
para true. Se você usar um atributo para definir esse valor, poderá optar por encapsular o atributo em uma diretiva do compilador:
#if DEBUG
[Application(Debuggable = true)]
#else
[Application(Debuggable = false)]
#endif