Atributo Debuggable

Para que la depuración sea posible, Android admite el protocolo JDWP (Java Debug Wire Protocol). Se trata de una tecnología que permite que herramientas como ADB se comuniquen con una JVM. Aunque JDWP es importante durante el desarrollo, se debe deshabilitar antes de la publicación.

JDWP puede ser el valor del atributo android:debuggable en una aplicación Android. Elija una de las tres maneras siguientes para establecer este atributo en Xamarin.Android:

AndroidManifest.xml

Se crea o se abre el archivo AndroidManifext.xml y se establece ahí el atributo android:debuggable. Tenga cuidado y no envíe su versión de lanzamiento con la depuración habilitada.

 	<application android:label="@string/app_name"
               android:debuggable="true"
               android:icon="@mipmap/appicon">
    ...
	</application>

Adición de un atributo de clase de aplicación

Si la aplicación de Xamarin.Android tiene una clase con un atributo [Application], actualice el atributo a [Application(Debuggable = true)]. Establézcalo en false para deshabilitarlo.

Adición de un atributo de ensamblado

Si la aplicación de Xamarin.Android aún NO tiene un atributo de la clase [Application], agregue un atributo en el nivel de ensamblado [assembly: Application(Debuggable=true)] en un archivo de c#, como Properties\AssemblyInfo.cs. Establézcalo en false para deshabilitarlo.

Resumen

Si AndroidManifest.xml y ApplicationAttribute existen, el contenido de AndroidManifest.xml tiene prioridad sobre lo que se especifica mediante ApplicationAttribute.

Si agrega un atributo de clase y un atributo de ensamblado, se producirá un error del compilador:

"Error The "GenerateJavaStubs" task failed unexpectedly.
System.InvalidOperationException: Application cannot have both a type with an [Application] attribute and an [assembly:Application] attribute."

De forma predeterminada, si no existen AndroidManifest.xml ni ApplicationAttribute, el valor predeterminado del atributo android:debuggable depende de si se generan o no símbolos de depuración. Si existen símbolos de depuración, Xamarin.Android establece el atributo android:debuggable en true.

Advertencia

El valor del atributo android:debuggable no depende necesariamente de la configuración de compilación. Puede que las compilaciones de lanzamiento tengan el atributo android:debuggable establecido en true. Si usa un atributo para establecer este valor, puede elegir ajustar el atributo en una directiva de compilador:

#if DEBUG
[Application(Debuggable = true)]
#else
[Application(Debuggable = false)]
#endif