Атрибут 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