Android混淆整理

本文详细介绍了Android应用的混淆配置,包括代码压缩级别、大小写混合处理、第三方库混淆、预校验、日志记录等。重点讲解了如何保护Activity、Fragment、Application等核心类不被混淆,以及对support.v4/v7包、Serializable实现类、枚举、自定义组件、资源类、第三方库如ormlite、json-lib、universalimageloader和Gson的特殊混淆规则设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码混淆规则
指定代码的压缩级别 -optimizationpasses 5
是否使用大小写混合-dontusemixedcaseclassnames
是否混淆第三方jar. -dontskipnonpubliclibraryclasses
混淆时是否做预校验 -dontpreverify
混淆时是否记录日志 -verbose
混淆时所采用的算法:

-optimizations!code/simplification/arithmetic,!field/,!class/merging/
-keep public class * extends android.app.Activity

基本配置-不能被混淆的

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Fragment
-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.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference

support.v4/v7包不混淆

-keep class android.support.* { ; }
-keep class android.support.v4.* { ; }
-keep public class * extends android.support.v4.**
-keep interface android.support.v4.app.* { ; }
-keep class android.support.v7.* { ; }
-keep public class * extends android.support.v7.**
-keep interface android.support.v7.app.* { ; }
-dontwarn android.support.** # 忽略警告

保持注解继承类不混淆

-keep class * extends java.lang.annotation.Annotation {*;}

保持Serializable实现类不被混淆

-keepnames class * implements java.io.Serializable

保持Serializable不被混淆并且enum 类也不被混淆

-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}

保持枚举enum类不被混淆

-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}

自定义组件不被混淆

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

不混淆资源类

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

第三方jar包library混淆配置

ormlite混淆配置
-libraryjars libs/ormlite-android-5.0.jar
-libraryjars libs/ormlite-core-5.0.jar
-dontwarn com.j256.ormlite.**
-keep class com.j256.ormlite.* { ;}
-keep class com.envy15.cherry.base.orm.* { ;}

json-lib混淆配置

-libraryjars libs/json-lib-2.4-jdk15.jar
-dontwarn net.sf.json.**
-keep class net.sf.json.* { ;}

json-lib关联包

-libraryjars libs/commons-beanutils-1.8.3.jar
-dontwarn org.apache.commons.**
-keep class org.apache.commons.* { ;}

universalimageloader图片加载框架不混淆

-keep class com.nostra13.universalimageloader.* { ; }
-dontwarn com.nostra13.universalimageloader.**

Gson相关的不混淆配置

-keepattributes Signature
-keepattributes Annotation
-keep class com.google.gson.* { ; }
-dontwarn com.google.gson.**
-keep class com.envy15.cherry.fragment.crossover.model.* { ; }
-dontwarn com.envy15.cherry.fragment.crossover.model.**
-keep class com.envy15.cherry.fragment.discover.model.* { ; }
-dontwarn com.envy15.cherry.fragment.discover.model.**
-keep class com.envy15.cherry.fragment.local.model.* { ; }
-dontwarn com.envy15.cherry.fragment.local.model.**
-keep class com.envy15.cherry.fragment.setting.model.* { ; }
-dontwarn com.envy15.cherry.fragment.setting.model.**

保持哪些类不被混淆

-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.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {

保持 native 方法不被混淆
native <methods>;

-keepclassmembers class * extends android.app.Activity { # 保持自定义控件类不被混淆
public void *(android.view.View);
}

保持枚举 enum 类不被混淆

-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}

保持 Parcelable 不被混淆

-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}

保持自己定义的类不被混淆

-keep class MyClass;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值