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.cs
takim 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