2012-08-03 40 views
3

Proguard的不断类actionbarsherlock

-keep class com.actionbarsherlock.** { *; } 
在我的ProGuard配置

。正如Actionbarsherlock家伙所提议的(见http://actionbarsherlock.com/faq.html)。 但只增加

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

其扩展SherlockFragment被保留,所以我能够使用的片段的类后。

为什么?

+0

我很好奇,您是否已将SDK工具更新到至少r20?自今年6月份以来,他们应该使用xml safe中的自定义视图(使用proguard)(http://developer.android.com/tools/sdk/tools-notes.html):'“为aapt -G添加了自动ProGuard支持标志,这种改变会使构建系统生成一个临时的ProGuard保留规则文件,其中包含从XML文件中引用的类(例如自定义视图),并在收缩时将其传递给ProGuard。“' – 2012-09-28 05:27:34

回答

5

让我们假设你有下面的代码片段声明,在XML布局中使用:

public class MyFragment extends SherlockFragment { 
    … 
} 

MyFragment类不在com.actionbarsherlock.*包,这样的ProGuard会混淆类名。为了保留可能用于xml布局的类,请添加以下参数:

# 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

你可以看看我离开OP的评论?我认为从SDK工具r20开始,自定义视图已经可以安全地用于proguard。 – 2012-09-28 05:29:23