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.csz. 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