Атрибут Debuggable

Для отладки Android поддерживает протокол JDWP (Java Debug Wire Protocol). Эта технология позволяет некоторым средствам, например ADB, взаимодействовать с виртуальной машиной Java. Протокол JDWP очень важен на этапе разработки, но не забывайте отключить его перед публикацией приложения.

JDWP можно настроить с помощью значения атрибута android:debuggable в приложении Android. Выберите один из трех приведенных ниже способов установки этого атрибута в Xamarin.Android.

AndroidManifest.xml

Создайте или откройте файл AndroidManifext.xml и задайте в нем атрибут android:debuggable. Будьте осторожны: не отправляйте сборку выпуска с включенной отладкой.

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

Добавление атрибута класса Application

Если в приложении Xamarin.Android есть класс с атрибутом [Application], обновите атрибут до [Application(Debuggable = true)]. Задайте для него значение false, чтобы отключить его.

Добавление атрибута assembly

Если у приложения Xamarin.Android еще [Application] нет атрибута класса, добавьте атрибут [assembly: Application(Debuggable=true)] уровня сборки в файл c#, Properties\AssemblyInfo.csнапример. Задайте для него значение false, чтобы отключить его.

Итоги

Если присутствуют одновременно AndroidManifest.xml и ApplicationAttribute, содержимое AndroidManifest.xml имеет более высокий приоритет, чем ApplicationAttribute.

Если вы добавите атрибут класса и атрибут сборки, возникнет ошибка компилятора:

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

По умолчанию , если ни тот AndroidManifest.xml , ApplicationAttribute ни другой атрибут не присутствует, значение атрибута android:debuggable зависит от того, создаются ли символы отладки. Если отладочные символы присутствуют, Xamarin.Android устанавливает для атрибута android:debuggable значение true.

Предупреждение

Значение атрибута android:debuggable НЕ всегда зависит от конфигурации сборки. Может случиться так, что для сборки выпуска атрибут android:debuggable имеет значение true. Если вы используете атрибут для установки этого значения, вы можете создать оболочку для атрибута в директиве компилятора:

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