Android 混淆白名单(基础+第三方)持续更新···

标签: Android混淆
4人阅读 评论(0) 收藏 举报
分类:

Android 混淆基础配置及第三方混淆

一、基础配置

记录下,以后项目直接复制用。

混淆前配置:1、打开混淆,在项目/app/build.gradle文件里,将buildTypes节点下,将minifyEnabled设置为true就是开启混淆,开启混淆后生成relase版apk,代码就是被混淆后的。

1、配置

下列配置写在app目录下的proguard-rules.pro文件里面。 下列所有设置的keep ——- ,在生成relase版apk时,都不会被混淆。

# 设置混淆的压缩比率 0 ~ 7
-optimizationpasses 5
# 混淆后类名都为小写   Aa aA
-dontusemixedcaseclassnames
# 指定不去忽略非公共库的类
-dontskipnonpubliclibraryclasses
#不做预校验的操作
-dontpreverify
# 混淆时不记录日志
-verbose
# 混淆采用的算法.
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
#保留代码行号,方便异常信息的追踪
-keepattributes SourceFile,LineNumberTable

#dump文件列出apk包内所有class的内部结构
-dump class_files.txt        
#seeds.txt文件列出未混淆的类和成员
-printseeds seeds.txt
#usage.txt文件列出从apk中删除的代码
-printusage unused.txt
#mapping文件列出混淆前后的映射
-printmapping mapping.txt

#不提示V4包下错误警告
-dontwarn android.support.v4.**
#保持下面的V4兼容包的类不被混淆
-keep class android.support.v4.**{*;}
#避免混淆Android基本组件,下面是兼容性比较高的规则:
-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
#避免混淆所有native的方法,涉及到C、C++
-keepclasseswithmembernames class * {
    native <methods>;
}
#不提示V4包下错误警告
-dontwarn android.support.v4.**
#保持下面的V4兼容包的类不被混淆
-keep class android.support.v4.**{*;}
#避免混淆自定义控件类的get/set方法和构造函数
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}
#避免混淆枚举类
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

#避免混淆序列化类
#不混淆Parcelable和它的实现子类,还有Creator成员变量
-keep class * implements android.os.Parcelable {
    public static final android.os.Parcelable$Creator *;
}

#不混淆Serializable和它的实现子类、其成员变量
-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();
}

#避免混淆JSON类的构造函数
#使用GSON、fastjson等框架时,所写的JSON对象类不混淆,否则无法将JSON解析成对应的对象
-keepclassmembers class * {
    public <init>(org.json.JSONObject);
}

二、第三方框架

bugly

#=============bugly==============start
-dontwarn com.tencent.bugly.**
-keep public class com.tencent.bugly.**{*;}
#=============bugly==============end

logger

#=============logger==============start
-dontwarn com.orhanobut.**
-keep public class com.orhanobut.**{*;}
#=============logger==============end

ButterKnife

#=============ButterKnife==============start
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }
-keepclasseswithmembernames class * {    
    @butterknife.* <fields>;
}
-keepclasseswithmembernames class * {    
    @butterknife.* <methods>;
}
#=============ButterKnife==============end

Gson

#=============Gson==============start
# 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.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }
-keep class com.google.gson.** { *;}
#这句非常重要,主要是滤掉 com.demo.demo.bean包下的所有.class文件不进行混淆编译,com.demo.demo是你的包名
-keep class com.demo.demo.bean.** {*;}
#=============Gson==============end

ShareSDK

#=============ShareSDK==============start
-keep class cn.sharesdk.**{*;}
-keep class com.sina.**{*;}
-keep class **.R$* {*;}
-keep class **.R{*;}
-dontwarn cn.sharesdk.**
-dontwarn **.R$*
-dontwarn com.tencent.**
-keep class com.tencent.** {*;}
#=============ShareSDK==============end

Rxjava

#=============Rxjava==============start
# rx
-dontwarn rx.**
-keepclassmembers class rx.** { *; }
# retrolambda
-dontwarn java.lang.invoke.*
#=============Rxjava==============end

Okhttputils

#=============Okhttputils==============start
#okhttputils
-dontwarn com.zhy.http.**
-keep class com.zhy.http.**{*;}
#okhttp
-dontwarn okhttp3.**
-keep class okhttp3.**{*;}
#okio
-dontwarn okio.**
-keep class okio.**{*;}
#=============Okhttputils==============end

努力更新中·····

查看评论

android 代码混淆 不混淆第三方jar包

android 代码混淆 不混淆第三方jar包 标签: Android混淆jar包 2013-09-12 16:55 2375人阅读 评论(0) 收藏 举报  分类: ...
  • w690333243
  • w690333243
  • 2017-03-19 09:40:29
  • 3173

Android 混淆打包不混淆第三方jar包

  • 2016年02月02日 11:13
  • 128KB
  • 下载

Android源码中添加第三方jar包以及去除混淆编译问题

本文以zyt.jar 包为例进行说明 1.在Android.mk 文件中添加 # Added for source code compile start 为jar起一个别名 LOCAL_...
  • gaobaoshen1
  • gaobaoshen1
  • 2016-11-30 10:14:34
  • 709

android代码混淆时,如何防止第三方jar包被混淆导致程序出错

代码混淆是给其他人破解自己的程序带来更多困难,但混淆不能影响我们程序的正常运行.最近在代码混淆时出现一个问题:就是第三方jar被混淆时出现程序错误,错误主要是说找不到相关的类.     这个问题也不奇...
  • a_little_a_day
  • a_little_a_day
  • 2015-01-26 11:17:06
  • 2149

(使用通过混淆+自己第三方保留成功混淆)AndroidStudio 混淆打包

AndroidStudio中的项目可以用compile的形式引入github上的开源项目,可以引用module,而不一定都要用libs文件夹中添加jar包的形式。在最终realease打包时,混淆的设...
  • mazhidong
  • mazhidong
  • 2017-03-22 04:13:16
  • 5283

android studio 代码混淆如何忽略第三方jar包

android studio 代码混淆如何忽略第三方jar包 日前在打包混淆包含第三方jar包的android studio项目时 报出了各种错误,但是debug版本却能正常运行,于是怀疑andro...
  • i374711088
  • i374711088
  • 2015-07-07 10:41:48
  • 29927

Android 混淆 (不定期完善第三方混淆规则)

开启混淆 在AS中,借助于SDK中自带的Proguard工具,开启混淆只需要在release闭包中添加如下两行代码: release { minifyE...
  • recordGrowth
  • recordGrowth
  • 2017-02-11 16:38:22
  • 2091

Android 混淆打包不混淆第三方jar包

项目因为要发布,所以要混淆打包。 混淆打包流程: 1.在proguard-project.txt文件中添加不需要混淆的类和第三方的jar包     这个是保持自己包中不需要混淆的类,如果有些...
  • qwiwuqo
  • qwiwuqo
  • 2014-06-23 00:29:12
  • 33181

解决android应用引用第三方jar包混淆打包报错

1、project.properties文件中 取消这行注释 #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:progu...
  • guesspalm
  • guesspalm
  • 2014-02-28 15:37:10
  • 1570

Android资源混淆工具使用说明

本文主要是讲述资源混淆组件的用法以及性能,资源混淆组件不涉及编译过程,只需输入一个apk(无论签名与否,debug版,release版均可,在处理过程中会直接将原签名删除),可得到一个实现资源混淆后的...
  • u013718120
  • u013718120
  • 2016-07-12 14:32:20
  • 3868
    个人资料
    等级:
    访问量: 1848
    积分: 117
    排名: 119万+