可偵錯的屬性
為了進行偵錯,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.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."
根據預設, 如果 和 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
相關連結
- Debuggable apps in the Android market (Android Market 中的可偵錯應用程式)