android 代码混淆proguard方案

本文详细介绍了在项目配置中解决代码混淆问题的方法,包括调整混淆规则、保持特定类和方法的可见性以及保留重要类库等。通过具体配置示例,帮助开发者顺利进行代码混淆,确保应用的兼容性和稳定性。

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

做代码混淆出现种种问题,
配置:在project.properties文件中增加混淆配置信息
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

然后添加下面代码到proguard-project.txt文件总算是可以运行了

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-ignorewarnings 
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

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

-keep public class * extends android.widget.**{*;}

-keep public class * extends android.widget.LinearLayout{
    public *;
}


# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature

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

# Gson specific classes
-keep class cn.sharesdk.** {*;}

-libraryjars libs/baidumapapi_v2_1_2.jar
-libraryjars libs/lib_anotation.jar
-libraryjars libs/lib_base.jar
-libraryjars libs/lib_json.jar
-libraryjars libs/lib_net.jar
-libraryjars libs/lib_pullrefresh.jar
-libraryjars libs/lib_timer.jar
-libraryjars libs/lib_universalimageloader.jar
-libraryjars libs/lib_util.jar
-libraryjars libs/lib_zxing.jar
-libraryjars libs/locSDK_3.3.jar
-libraryjars libs/Msc.jar
-libraryjars libs/ShareSDK-Core.jar
-libraryjars libs/ShareSDK-QZone.jar
-libraryjars libs/ShareSDK-SinaWeibo.jar
-libraryjars libs/ShareSDK-TencentWeibo.jar
-libraryjars libs/ShareSDK-Wechat-Core.jar
-libraryjars libs/ShareSDK-Wechat-Moments.jar
-libraryjars libs/ShareSDK-Wechat.jar
-libraryjars libs/zxingcore.jar

##---------------Begin: proguard configuration common for all Android apps ----------
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose
-dump class_files.txt 
-printseeds seeds.txt 
-printusage unused.txt 
-printmapping mapping.txt 
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*


-allowaccessmodification
-keepattributes *Annotation*
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
-repackageclasses ''

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

# Explicitly preserve all serialization members. The Serializable interface
# is only a marker interface, so it wouldn't save them.
-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();
}

# Preserve all native method names and the names of their classes.
-keepclasseswithmembernames class * {
    native ;
}


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


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


# Preserve static fields of inner classes of R classes that might be accessed
# through introspection.
-keepclassmembers class **.R$* {
  public static ;
}


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


-keep public class * {
    public protected *;
}


-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}
##---------------End: proguard configuration common for all Android apps ------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值