可偵錯的屬性

為了進行偵錯,Android 支援 Java 偵錯連線通訊協定 (Java Debug Wire Protocol, JDWP, 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>

新增 Application 類別屬性

如果您的 Xamarin.Android 應用程式具有具有 屬性的 [Application] 類別,請將 屬性更新為 [Application(Debuggable = true)]。 將它設定為 false 停用。

新增元件屬性

如果您的 Xamarin.Android 應用程式還沒有 [Application] 類別屬性,請在 c# 檔案中新增元件層級屬性 [assembly: Application(Debuggable=true)]Properties\AssemblyInfo.cs例如 。 將它設定為 false 停用。

摘要

若同時具有 AndroidManifest.xmlApplicationAttribute,則 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."

根據預設, 如果 和 ApplicationAttribute 都不存在AndroidManifest.xml, 屬性的值android:debuggable取決於是否產生偵錯符號。 如果偵錯符號存在,則 Xamarin.Android 會為您設定 android:debuggable 屬性 true

警告

屬性的值 android:debuggable 不一定取決於組建組態。 發行組建的 android:debuggable 屬性也可設為 true。 如果您使用 屬性來設定此值,您可以選擇將屬性包裝在編譯程式指示詞中:

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