可调试属性
若要进行调试,Android 需支持 Java 调试线协议 (JDWP)。 这是一种允许 ADB 等工具与 JVM 通信的技术。 尽管在开发期间 JDWP 非常重要,仍应在发布应用程序之前将其禁用。
JDWP 可以由 Android 应用程序中 android:debuggable
属性的值配置。 选择以下三种方法之一在 Xamarin.Android 中设置此属性:
AndroidManifest.xml
创建或打开 AndroidManifext.xml
文件,并在其中设置 android:debuggable
属性。 请特别注意,不要交付启用了调试的发行版本。
<application android:label="@string/app_name"
android:debuggable="true"
android:icon="@mipmap/appicon">
...
</application>
添加应用程序类属性
如果 Xamarin.Android 应用具有一个包含 [Application]
属性的类,请将该属性更新为 [Application(Debuggable = true)]
。 将其设置为 false
以禁用。
添加程序集属性
如果 Xamarin Android 应用还没有 [Application]
类属性,请在 c# 文件(例如 Properties\AssemblyInfo.cs
)中添加程序集级别属性 [assembly: Application(Debuggable=true)]
。 将其设置为 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