Udostępnij za pośrednictwem


Atrybut debugowalny

Aby umożliwić debugowanie, system Android obsługuje protokół JDWP (Java Debug Wire Protocol). Jest to technologia, która umożliwia narzędziom takim jak ADB komunikowanie się z maszyną wirtualną JVM. Chociaż zestaw JDWP jest ważny podczas opracowywania, należy go wyłączyć przed opublikowaniem aplikacji.

JDWP można skonfigurować za pomocą wartości atrybutu android:debuggable w aplikacji systemu Android. Wybierz jeden z następujących trzech sposobów ustawiania tego atrybutu na platformie Xamarin.Android:

AndroidManifest.xml

Utwórz lub otwórz AndroidManifext.xml plik i ustaw android:debuggable tam atrybut. Zadbaj o to, aby nie dostarczać kompilacji wydania z włączonym debugowaniem.

 	<application android:label="@string/app_name"
               android:debuggable="true"
               android:icon="@mipmap/appicon">
    ...
	</application>

Dodawanie atrybutu klasy aplikacji

Jeśli aplikacja Xamarin.Android ma klasę z atrybutem [Application] , zaktualizuj atrybut na [Application(Debuggable = true)]. Ustaw ją na wartość , aby false ją wyłączyć.

Dodawanie atrybutu zestawu

Jeśli aplikacja Xamarin.Android nie ma jeszcze atrybutu [Application] klasy, dodaj atrybut [assembly: Application(Debuggable=true)] na poziomie zestawu w pliku c#, Properties\AssemblyInfo.cstakim jak . Ustaw ją na wartość , aby false ją wyłączyć.

Podsumowanie

AndroidManifest.xml Jeśli element i ApplicationAttribute są obecne, zawartość elementu przejmuje AndroidManifest.xml priorytet nad tym, co jest określone przez element ApplicationAttribute.

Jeśli dodasz zarówno atrybut klasy, jak i atrybut zestawu, wystąpi błąd kompilatora:

"Error The "GenerateJavaStubs" task failed unexpectedly.
System.InvalidOperationException: Application cannot have both a type with an [Application] attribute and an [assembly:Application] attribute."

Domyślnie — jeśli ani AndroidManifest.xml nie ma wartości , ani ApplicationAttribute nie jest obecny — wartość android:debuggable atrybutu zależy od tego, czy są generowane symbole debugowania. Jeśli symbole debugowania są obecne, dla atrybutu android:debuggable zostanie ustawiony atrybut true Xamarin.Android.

Ostrzeżenie

Wartość atrybutu android:debuggable NIE musi zależeć od konfiguracji kompilacji. Istnieje możliwość, że kompilacje wydania mają android:debuggable atrybut ustawiony na wartość true. Jeśli używasz atrybutu do ustawienia tej wartości, możesz opakowować atrybut w dyrektywie kompilatora:

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