如何使用 proguard 混淆选择性课程?
Posted
技术标签:
【中文标题】如何使用 proguard 混淆选择性课程?【英文标题】:How do I obsfucate selective classes using 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.** *;
【问题讨论】:
【参考方案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
【讨论】:
以上是关于如何使用 proguard 混淆选择性课程?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Eclipse 使用 Proguard 混淆 apk?
Proguard:如何避免缩小(和混淆)整个包以避免删除(和混淆)“未使用的方法”?