2013-08-17 19 views
28

Sto utilizzando la libreria di supporto v7 per mostrare un ActionBar su Android 2.x. Funziona abbastanza bene ma ho dovuto correggere alcuni errori di classe/metodo non trovati dopo aver abilitato Proguard.Configurazione Proguard Android per la libreria di supporto v7 ActionBar

Esistono linee guida su quali classi devono essere conservate?

Finora ho questi:

-keep public class android.support.v7.internal.widget.ActionBarContainer 
-keep class android.support.v7.internal.widget.ActionBarView$HomeView 
-keep public class android.support.v7.internal.widget.ActionBarContextView 

sembra funzionare ora, ma io non sono così sicuro che non andrà in crash a un certo punto a causa di qualche altra classe presumibilmente interna si fa riferimento in alcuni file XML .

risposta

4

Io uso questo, in qualche modo simile a quello che la versione v4 suggerito:

-keep class android.support.v7.internal.** { *; } 
-keep interface android.support.v7.internal.** { *; } 
+1

Dove hai trovato quel suggerimento per v4? –

+0

Beh, non posso ricordare. Se usi Google per questo, troverai alcuni riferimenti, incluso qui su SO. Forse non è stato suggerito ufficialmente da nessuna parte, non lo so, ma è piuttosto logico e funziona anche. :-) –

+0

L'aggiunta di queste due righe senza "interno" (ad esempio android.support.v7. **) ha risolto il problema. Allo stesso modo ho aggiunto queste linee per la v4. –

51

ho risolto con:

-dontwarn android.support.v7.** 
-keep class android.support.v7.** { *; } 
-keep interface android.support.v7.** { *; } 
+0

Da dove l'hai preso? google ha questo ovunque? Il "**" significa tutti i file e le sottocartelle, in modo ricorsivo? Qual è la parte all'interno di "{}" (mi dispiace non ricordo)? –

+1

Non lo usano? Quello è strano. –

+6

Questo non è raccomandato. Manterrà tutte le classi di libreria, anche quelle che non ti servono. Vedi http://developer.android.com/tools/support-library/setup.html – HyBRiD

Problemi correlati