2012-08-03 5 views
3

Il y avaitProguard garder la classe ActionBarSherlock

-keep class com.actionbarsherlock.** { *; } 

dans ma config proguard. Comme proposé par les gars Actionbarsherlock (voir http://actionbarsherlock.com/faq.html). Mais seulement après avoir ajouté

-keep public class * extends com.actionbarsherlock.app.SherlockFragment 

les classes qui SherlockFragment étendu ont été maintenus et j'ai pu utiliser les fragments.

Pourquoi?

+0

Je suis curieux, avez-vous mis à jour vos outils SDK au moins r20? Depuis le mois de juin de cette année, ils auraient dû utiliser des vues personnalisées dans xml safe avec proguard (http://developer.android.com/tools/sdk/tools-notes.html): '' Ajout de la prise en charge automatique de ProGuard pour l'aapt -G Cette modification oblige le système de génération à générer un fichier de règles de conservation ProGuard temporaire contenant des classes référencées à partir de fichiers XML (tels que des vues personnalisées) et à passer à ProGuard au moment de la réduction. "' –

Répondre

5

Supposons que vous avez la déclaration fragment suivant, utilisé dans la mise en page xml:

public class MyFragment extends SherlockFragment { 
    … 
} 

classe MyFragment est pas com.actionbarsherlock.* paquet, donc ProGuard va obscurcir le nom de classe. Afin de maintenir les classes, qui pourraient être utilisés dans la mise en page XML, ajoutez ces paramètres:

# keep all classes that might be used in XML layouts 
-keep public class * extends android.view.View 
-keep public class * extends android.view.ViewGroup 
-keep public class * extends android.support.v4.app.Fragment 
+0

pouvez-vous jeter un coup d'œil sur le commentaire j'ai quitté l'OP? Je pensais que, à partir des outils SDK r20 que les vues personnalisées étaient déjà sans danger à utiliser avec proguard. –

Questions connexes