Condividi tramite


Attributo Debuggable

Per consentire il debug, Android supporta Java Debug Wire Protocol (JDWP). Si tratta di una tecnologia che consente agli strumenti come ADB di comunicare con JVM. Anche se JDWP è importante durante lo sviluppo, deve essere disabilitato prima della pubblicazione dell'applicazione.

JDWP può essere configurato dal valore dell'attributo android:debuggable in un'applicazione Android. Scegliere uno dei tre modi seguenti per impostare questo attributo in Xamarin.Android:

AndroidManifest.xml

Creare o aprire AndroidManifext.xml il file e impostare l'attributo android:debuggable . Prestare particolare attenzione a non spedire la build di versione con il debug abilitato.

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

Aggiungere un attributo della classe Application

Se l'app Xamarin.Android ha una classe con un [Application] attributo , aggiornare l'attributo a [Application(Debuggable = true)]. Impostarlo su false per disabilitarlo.

Aggiungere un attributo assembly

Se l'app Xamarin.Android non ha già un [Application] attributo di classe, aggiungere un attributo [assembly: Application(Debuggable=true)] a livello di assembly in un file c#, ad esempio . Properties\AssemblyInfo.cs Impostarlo su false per disabilitarlo.

Riepilogo

Se sono presenti sia AndroidManifest.xml che ApplicationAttribute, i contenuti di AndroidManifest.xml sono prioritari rispetto a quanto specificato da ApplicationAttribute.

Se si aggiungono sia un attributo di classe che un attributo assembly, verrà generato un errore del compilatore:

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

Per impostazione predefinita, se né l'oggetto AndroidManifest.xmlApplicationAttribute è presente, il valore dell'attributo android:debuggable dipende dal fatto che vengano generati o meno simboli di debug. Se sono presenti simboli di debug, Xamarin.Android imposta l'attributo android:debuggable su true .

Avviso

Il valore dell'attributo android:debuggable NON dipende necessariamente dalla configurazione di compilazione. Le build di rilascio possono avere l'attributo android:debuggable impostato su true. Se si usa un attributo per impostare questo valore, è possibile scegliere di eseguire il wrapping dell'attributo in una direttiva del compilatore:

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