防止Proguard删除片段的空构造函数

Way*_*yne 23 android constructor proguard fragment

你知道,Fragment的所有子类都必须包含一个公共的空构造函数,但是当使用proguard时,这些构造函数将被删除.我已经指定了以下命令,但仍然删除了空构造函数.任何人都可以帮我保留Fragment的空构造函数吗?谢谢.

-keepclassmembers public class * extends android.support.v4.app.Fragment { 
   public <init>(***);
   #public <init>(); //already tried this
}

-keepclassmembers public class * extends com.xxx.MyFragment { 
   public <init>(***);
   #public <init>(); //already tried this
}
Run Code Online (Sandbox Code Playgroud)

Sni*_*las 35

这应该工作:

-keepclassmembers public class * extends android.support.v4.app.Fragment { 
   public <init>(...);
Run Code Online (Sandbox Code Playgroud)

我相信即使这样就足够了:

-keep public class * extends android.support.v4.app.Fragment
Run Code Online (Sandbox Code Playgroud)

因为保持类将强制proguard保持默认构造函数.

  • 第二种情况确实足够; 它将保留所有扩展,并自动保持其无参数构造函数(假设它们存在于原始类中). (2认同)