Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
To make debugging possible, Android supports the Java Debug Wire Protocol (JDWP). This is a technology that allows tools such as ADB to communicate with a JVM. While JDWP is important during development, it should be disabled prior to the application being published.
JDWP can be configured by the value of the android:debuggable
attribute in an Android application. Choose one of the following three ways to set this attribute in Xamarin.Android:
AndroidManifest.xml
Create or open AndroidManifext.xml
file, and set the android:debuggable
attribute there. Take extra care not to ship your release build with debugging enabled.
<application android:label="@string/app_name"
android:debuggable="true"
android:icon="@mipmap/appicon">
...
</application>
Add an Application class attribute
If your Xamarin.Android app has a class with an [Application]
attribute, update the attribute to [Application(Debuggable = true)]
. Set it to false
to disable.
Add an assembly attribute
If your Xamarin.Android app does NOT already have an [Application]
class attribute, add an assembly-level attribute [assembly: Application(Debuggable=true)]
in a c# file such as, Properties\AssemblyInfo.cs
. Set it to false
to disable.
Summary
If both the AndroidManifest.xml
and the ApplicationAttribute
are present, the contents of AndroidManifest.xml
take priority over what is specified by the ApplicationAttribute
.
If you add both a class attribute and an assembly attribute, there will be a compiler error:
"Error The "GenerateJavaStubs" task failed unexpectedly.
System.InvalidOperationException: Application cannot have both a type with an [Application] attribute and an [assembly:Application] attribute."
By default – if neither the AndroidManifest.xml
nor the ApplicationAttribute
is present – the value of the android:debuggable
attribute depends on whether or not debug symbols are generated. If debug symbols are present, then Xamarin.Android will set the android:debuggable
attribute to true
for you.
Warning
The value of the android:debuggable
attribute does NOT necessarily depend on the build configuration. It is possible for release builds to have the android:debuggable
attribute set to true. If you use an attribute to set this value, you can choose to wrap the attribute in a compiler directive:
#if DEBUG
[Application(Debuggable = true)]
#else
[Application(Debuggable = false)]
#endif