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
Vínculos relacionados
- Debuggable apps in the Android market (Aplicaciones que se pueden depurar en Android Market)