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