【问题标题】:How do I obsfucate selective classes using proguard?如何使用 proguard 混淆选择性课程?
【发布时间】:2015-06-10 17:15:32
【问题描述】:

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

-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.** { *; }

【问题讨论】:

    标签: java android android-fragments proguard


    【解决方案1】:

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

    用于排除特定类

    -keep class com.demo.fragment.myfragment { *; }

    用于排除整个包类

    -keep class com.demo.fragment. { *; }**

    【讨论】:

    • 这会将类排除在混淆之外,对吧?我想强制“包含混淆”
    【解决方案2】:

    您似乎正在使用此处提供的 proguard 文件模板 https://code.google.com/p/google-gson/source/browse/trunk/examples/android-proguard-example/proguard.cfg

    自 2011 年以来一直没有更新

    也检查一下 ProGuard for Android and GSON

    【讨论】:

      猜你喜欢
      • 2010-10-14
      • 1970-01-01
      • 2012-06-24
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-29
      • 2011-05-29
      相关资源
      最近更新 更多