java - 如何使用混淆器混淆选择性类?

标签 java android android-fragments proguard

我想使用混淆器混淆我的 Android Studio 项目中的一些类。这些是 com.myproject.fragments 文件夹中的一些 fragment 。所有这些类都扩展了 Android 的 Fragment 类。似乎到目前为止,我的混淆规则正在将这些类排除在混淆之外。请告诉我如何编辑混淆器规则文件以实现这种混淆。

-dontpreverify
-repackageclasses ''
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation*
-keepattributes Signature

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.content.Context

-keep public class * extends android.view.View {
    public <init>(android.content.Context);
    public <init>(android.content.Context, android.util.AttributeSet);
    public <init>(android.content.Context, android.util.AttributeSet, int);
    public void set*(...);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers class * extends android.content.Context {
   public void *(android.view.View);
   public void *(android.view.MenuItem);
}

-keepclassmembers class * implements android.os.Parcelable {
    static ** CREATOR;
}

-keepclassmembers class **.R$* {
    public static <fields>;
}

-keepclassmembers class * {
    @android.webkit.JavascriptInterface <methods>;
}


# Preserve the special static methods that are required in all enumeration classes.
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
    public *;
}

-keep public enum com.sync.model$** {
    **[] $VALUES;
    public *;
}

# Application classes that will be serialized/deserialized over Gson
-keep class com.myproject.models.** { *; }
-keep class com.myproject.httputils.** { *; }


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

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

-keepclassmembers class * extends com.actionbarsherlock.ActionBarSherlock {
    <init>(android.app.Activity, int);
}

# Gson specific classes
#-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }

最佳答案

您可以排除 Proguard 文件中的特定类和包...

用于排除特定类

-保持类 com.demo.fragment.myfragment { *;

用于排除整个包类

-保留 com.demo.fragment 类。 { *; }**

关于java - 如何使用混淆器混淆选择性类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29469044/

相关文章:

android - 网络驱动程序异常 : Message: A new session could not be created

android - 为什么 float 操作按钮在动画后消失?

android - 避免在 fragment 中重新加载

java - 用Java在文件中写入第x行

java - Java中的文件io

java - Maven surefire 找不到 ForkedBooter 类

java - TabHost.TabSpec 内容未出现

java - session bean 返回错误值

android - 库模块在我的项目应用程序模块android中不起作用

android - 之前调用Fragment的onStart()来显示Viewpager、navigation_mode_tabs