2013-10-04 15 views
7

Vedo un comportamento Proguard non spiegato.Perché proguard processa AndroidManifest.xml

progven AFAIK non presta attenzione al manifest Android. Inoltre, nel mio proguard.cfg non ho menzionato le classi correlate a BroadcastReceiver. Quindi presumo che quelli dovrebbero essere spogliati.

Tuttavia vedo qualcosa di strano in bin/proguard.txt:

# view AndroidManifest.xml #generated:784 
-keep class com.fiksu.asotracking.InstallTracking { <init>(...); } 

e quella classe (descendand di BroadcastReceiver) non ottiene spogliato. La ragione non dice nulla di significativo per me:

[proguard] com.fiksu.asotracking.InstallTracking 
[proguard] is kept by a directive in the configuration. 

Se la classe non è menzionata in manifesta, viene spogliato.

Sarebbe bello sapere perché.

+0

Avete controllato '/tools/proguard/proguard-android.txt'. Di solito contiene le dichiarazioni che impediscono a Proguard di uccidere completamente la tua applicazione. – Jens

+0

Sì, a quanto mi risulta non contiene nulla relativo a BroadcastReceivers o manifest, o lo interpreto in modo errato. – lstipakov

+0

La definizione sdk di solito contiene qualcosa di simile a questo: '-keep public class * estende android.content.BroadcastReceiver' che impedisce ai ricevitori di essere storpiati. – Jens

risposta

9

Il processo di compilazione esegue lo strumento aapt per creare automaticamente il file di configurazione bin/proguard.txt, basato su AndroidManifest.xml e altri file xml. Il processo di compilazione passa quindi il file di configurazione a ProGuard. Quindi ProGuard in effetti non considera AndroidManifest.xml, ma aapt + ProGuard fa.

+0

Grazie, Eric! Significa anche che non abbiamo più bisogno di aggiungere manualmente le direttive "keep" per i ricevitori, i servizi e così via? – lstipakov

+0

@Stipa Questo è corretto. La configurazione predefinita all'interno dell'SDK dovrebbe fornire tutte le impostazioni generiche e aapt dovrebbe creare tutte le configurazioni specifiche dell'applicazione (eccetto la riflessione specifica dell'applicazione). –

Problemi correlati