Attribut „Debuggable“
Um das Debuggen zu ermöglichen, unterstützt Android das Java Debug Wire Protocol (JDWP). Dies ist eine Technologie, die es Tools wie adb ermöglicht, mit einer JVM zu kommunizieren. JDWP ist zwar während der Entwicklung wichtig, sollte aber vor der Veröffentlichung der Anwendung deaktiviert werden.
JDWP kann mit dem Wert des android:debuggable
-Attributs in einer Android-Anwendung konfiguriert werden. Wählen Sie eine der drei folgenden Methoden zum Festlegen dieses Attributs in Xamarin.Android aus:
AndroidManifest.xml
Erstellen oder Öffnen einerAndroidManifext.xml
-Datei und Festlegen des android:debuggable
-Attributs in dieser Datei. Achten Sie besonders darauf, Ihren Releasebuild nicht mit aktiviertem Debuggen zu liefern.
<application android:label="@string/app_name"
android:debuggable="true"
android:icon="@mipmap/appicon">
...
</application>
Hinzufügen eines Anwendungsklassenattributs
Wenn Ihre Xamarin.Android-App über eine Klasse mit einem [Application]
-Attribut verfügt, aktualisieren Sie das Attribut auf [Application(Debuggable = true)]
. Um es zu deaktivieren, legen Sie es auf false
fest.
Hinzufügen eines Assemblyattributs
Wenn Ihre Xamarin.Android-App NICHT bereits über ein [Application]
Klassenattribute verfügt, fügen Sie ein Attribut [assembly: Application(Debuggable=true)]
auf Assemblyebene in einer c#-Datei hinzu, Properties\AssemblyInfo.cs
z. B. . Um es zu deaktivieren, legen Sie es auf false
fest.
Zusammenfassung
Wenn jeweils AndroidManifest.xml
und ApplicationAttribute
vorhanden sind, hat der Inhalt von AndroidManifest.xml
Priorität vor dem, was durch ApplicationAttribute
angegeben wird.
Wenn Sie sowohl ein Klassenattribut als auch ein Assemblyattribut hinzufügen, tritt ein Compilerfehler auf:
"Error The "GenerateJavaStubs" task failed unexpectedly.
System.InvalidOperationException: Application cannot have both a type with an [Application] attribute and an [assembly:Application] attribute."
Wenn weder AndroidManifest.xml
noch ApplicationAttribute
vorhanden sind, hängt der Wert des android:debuggable
-Attributs standardmäßig davon ab, ob Debugsymbole generiert werden oder nicht. Wenn Debugsymbole vorhanden sind, legt Xamarin.Android das android:debuggable
-Attribut für Sie auf true
fest.
Warnung
Der Wert des android:debuggable
-Attributs hängt NICHT zwingend von der Buildkonfiguration ab. Es ist möglich, für Releasebuilds das android:debuggable
-Attribut auf TRUE festzulegen. Wenn Sie ein Attribut verwenden, um diesen Wert festzulegen, können Sie das Attribut in eine Compileranweisung einschließen:
#if DEBUG
[Application(Debuggable = true)]
#else
[Application(Debuggable = false)]
#endif