以下包含了常见的基本代码与一些三方框架的混淆方案。

##########################基本混淆参数######################

# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改

-optimizationpasses 5

# 混合时不使用大小写混合,混合后的类名为小写

-dontusemixedcaseclassnames

# 指定不去忽略非公共库的类

-dontskipnonpubliclibraryclasses

# 这句话能够使我们的项目混淆后产生映射文件

# 包含有类名->混淆后类名的映射关系

-verbose

# 指定不去忽略非公共库的类成员

-dontskipnonpubliclibraryclassmembers

# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。

-dontpreverify

# 保留Annotation不混淆

-keepattributes *Annotation*,InnerClasses

# 避免混淆泛型

-keepattributes Signature

#去除警告

-ignorewarnings

# 抛出异常时保留代码行号

-keepattributes SourceFile,LineNumberTable

# 指定混淆是采用的算法,后面的参数是一个过滤器

# 这个过滤器是谷歌推荐的算法,一般不做更改

-optimizations !code/simplification/cast,!field/*,!class/merging/*

####################################################################

# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆

# 因为这些子类都有可能被外部调用

-keep public class * extends android.app.Activity

-keep public class * extends android.app.Appliction

-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 * extends android.view.View

-keep public class com.android.vending.licensing.ILicensingService

# 保留support下的所有类及其内部类

-keep class android.support.** {*;}

# 保留继承的

-keep public class * extends android.support.v4.**

-keep public class * extends android.support.v7.**

-keep public class * extends android.support.annotation.**

# 保留R下面的资源

-keep class **.R$* {*;}

# 保留本地native方法不被混淆

-keepclasseswithmembernames class * {

native ;

}

# 保留在Activity中的方法参数是view的方法,

# 这样以来我们在layout中写的onClick就不会被影响

-keepclassmembers class * extends android.app.Activity{

public void *(android.view.View);

}

# 保留枚举类不被混淆

-keepclassmembers enum * {

public static **[] values();

public static ** valueOf(java.lang.String);

}

# 保留我们自定义控件(继承自View)不被混淆

-keep public class * extends android.view.View{

*** get*();

void set*(***);

public (android.content.Context);

public (android.content.Context, android.util.AttributeSet);

public (android.content.Context, android.util.AttributeSet, int);

}

#webChromeClient

-keepclassmembers class * extends android.webkit.WebChromeClient {

public void openFileChooser(...);

}

# 保留Parcelable序列化类不被混淆

-keep class * implements android.os.Parcelable {

public static final android.os.Parcelable$Creator *;

}

# 保留Serializable序列化的类不被混淆

-keepnames class * implements java.io.Serializable

-keepclassmembers class * implements java.io.Serializable {

static final long serialVersionUID;

private static final java.io.ObjectStreamField[] serialPersistentFields;

!static !transient ;

!private ;

!private ;

private void writeObject(java.io.ObjectOutputStream);

private void readObject(java.io.ObjectInputStream);

java.lang.Object writeReplace();

java.lang.Object readResolve();

}

# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆

-keepclassmembers class * {

void *(**On*Event);

void *(**On*Listener);

}

# webView处理,项目中没有使用到webView忽略即可

-keepclassmembers class fqcn.of.javascript.interface.for.webview {

public *;

}

-keepclassmembers class * extends android.webkit.webViewClient {

public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);

public boolean *(android.webkit.WebView, java.lang.String);

}

-keepclassmembers class * extends android.webkit.webViewClient {

public void *(android.webkit.webView, jav.lang.String);

}

#MPAndroidChart

-keep class com.github.mikephil.charting.** { *; }

#android-gif-drawable

-keep public class pl.droidsonroids.gif.GifIOException{(int);}

-keep class pl.droidsonroids.gif.GifInfoHandle{(long,int,int,int);}

# EventBus

-keepattributes *Annotation*

-keepclassmembers class * {

@org.greenrobot.eventbus.Subscribe ;

}

-keep enum org.greenrobot.eventbus.ThreadMode { *; }

# Only required if you use AsyncExecutor

-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {

(java.lang.Throwable);

}

#Glide

-keep public class * implements com.bumptech.glide.module.GlideModule

-keep public class * extends com.bumptech.glide.module.AppGlideModule

-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {

**[] $VALUES;

public *;

}

# for DexGuard only

#-keep resourcexmlelements manifest/application/meta-data@value=GlideModule

#okhttp/OKGO

#-dontwarn okhttp3.**

#-dontwarn okio.**

#-keep class okio.**{*;}

#-dontwarn javax.annotation.**

#-dontwarn org.conscrypt.**

## A resource is loaded with a relative path so the package of this class must be preserved.

#-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase

-dontwarn okhttp3.**

-keep class okhttp3.**{*;}

#okio

-dontwarn okio.**

-keep class okio.**{*;}

# RxJava RxAndroid

-dontwarn sun.misc.**

-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {

long producerIndex;

long consumerIndex;

}

-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {

rx.internal.util.atomic.LinkedQueueNode producerNode;

}

-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {

rx.internal.util.atomic.LinkedQueueNode consumerNode;

}

-keepclassmembers class rx.android.**{*;}

#播放GIF框架

-keep public class pl.droidsonroids.gif.GifIOException{(int);}

-keep class pl.droidsonroids.gif.GifInfoHandle{(long,int,int,int);}

# Gson

-keep class com.google.gson.stream.** { *; }

-keepattributes EnclosingMethod

-keep class org.xz_sale.entity.**{*;}

-keep class com.google.gson.** {*;}

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

-keep class sun.misc.Unsafe { *; }

-keep class com.google.gson.stream.** { *; }

-keep class com.google.gson.examples.android.model.** { *; }

#解决沉浸式方案

-keep class com.gyf.barlibrary.* {*;}

#butterknife

-keep class butterknife.** { *; }

-dontwarn butterknife.internal.**

-keep class **$$ViewBinder { *; }

-keepclasseswithmembernames class * {

@butterknife.* ;

}

-keepclasseswithmembernames class * {

@butterknife.* ;

}

#不混淆加密工具类DESUtils

-keep class com.wanhe.eng100.listening.utils.DESUtils {*;}

-dontwarn com.wanhe.eng100.listening.utils.DESUtils

#不混淆javaBean

-keep class com.wanhe.eng100.listening.bean.** {*;}

-dontwarn com.wanhe.eng100.listening.bean.**

#第三方jar包jaudiotagger

-dontwarn org.jaudiotagger.**

-keep class org.jaudiotagger.** {*;}

# 支付宝

-keep class com.alipay.android.app.IAlixPay{*;}

-keep class com.alipay.android.app.IAlixPay$Stub{*;}

-keep class com.alipay.android.app.IRemoteServiceCallback{*;}

-keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}

-keep class com.alipay.sdk.app.PayTask{ public *;}

-keep class com.alipay.sdk.app.AuthTask{ public *;}

-keep class com.alipay.sdk.app.H5PayCallback {

;

;

}

-keep class com.alipay.android.phone.mrpc.core.** { *; }

-keep class com.alipay.apmobilesecuritysdk.** { *; }

-keep class com.alipay.mobile.framework.service.annotation.** { *; }

-keep class com.alipay.mobilesecuritysdk.face.** { *; }

-keep class com.alipay.tscenter.biz.rpc.** { *; }

-keep class org.json.alipay.** { *; }

-keep class com.alipay.tscenter.** { *; }

-keep class com.ta.utdid2.** { *;}

-keep class com.ut.device.** { *;}

# 微信支付

-dontwarn com.tencent.mm.**

-dontwarn com.tencent.wxop.stat.**

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

#友盟分享

-dontshrink

-dontoptimize

-dontwarn com.google.android.maps.**

-dontwarn android.webkit.WebView

-dontwarn com.umeng.**

-dontwarn com.tencent.weibo.sdk.**

-dontwarn com.facebook.**

-keep public class javax.**

-keep public class android.webkit.**

-dontwarn android.support.v4.**

-keep enum com.facebook.**

-keepattributes Exceptions,InnerClasses,Signature

-keepattributes *Annotation*

-keepattributes SourceFile,LineNumberTable

-keep public interface com.facebook.**

-keep public interface com.tencent.**

-keep public interface com.umeng.socialize.**

-keep public interface com.umeng.socialize.sensor.**

-keep public interface com.umeng.scrshot.**

-keep public class com.umeng.socialize.* {*;}

-keep class com.facebook.**

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

-keep class com.umeng.scrshot.**

-keep public class com.tencent.** {*;}

-keep class com.umeng.socialize.sensor.**

-keep class com.umeng.socialize.handler.**

-keep class com.umeng.socialize.handler.*

-keep class com.umeng.weixin.handler.**

-keep class com.umeng.weixin.handler.*

-keep class com.umeng.qq.handler.**

-keep class com.umeng.qq.handler.*

-keep class UMMoreHandler{*;}

-keep class com.tencent.mm.sdk.modelmsg.WXMediaMessage {*;}

-keep class com.tencent.mm.sdk.modelmsg.** implements com.tencent.mm.sdk.modelmsg.WXMediaMessage$IMediaObject {*;}

-keep class im.yixin.sdk.api.YXMessage {*;}

-keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData{*;}

-keep class com.tencent.mm.sdk.** {

*;

}

-keep class com.tencent.mm.opensdk.** {

*;

}

-keep class com.tencent.wxop.** {

*;

}

-keep class com.tencent.mm.sdk.** {

*;

}

-dontwarn twitter4j.**

-keep class twitter4j.** { *; }

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

-dontwarn com.tencent.**

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

-dontwarn com.kakao.**

-keep public class com.umeng.com.umeng.soexample.R$*{

public static final int *;

}

-keep public class com.linkedin.android.mobilesdk.R$*{

public static final int *;

}

-keepclassmembers enum * {

public static **[] values();

public static ** valueOf(java.lang.String);

}

-keep class com.tencent.open.TDialog$*

-keep class com.tencent.open.TDialog$* {*;}

-keep class com.tencent.open.PKDialog

-keep class com.tencent.open.PKDialog {*;}

-keep class com.tencent.open.PKDialog$*

-keep class com.tencent.open.PKDialog$* {*;}

-keep class com.umeng.socialize.impl.ImageImpl {*;}

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

-dontwarn com.sina.**

-keep class com.alipay.share.sdk.** {

*;

}

-keepnames class * implements android.os.Parcelable {

public static final ** CREATOR;

}

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

-keep class com.android.dingtalk.share.ddsharemodule.** { *; }

#避免泛型混淆

#-keepattributes Signature

#去掉混淆-dontshrink报错

-keep class * extends com.umeng.socialize.net.base.SocializeReseponse {

*;

}

Android代码混淆处理,android代码混淆解决方案相关推荐

  1. android studio 混淆jar,android studio如何生成混淆代码的jar

    释放双眼,带上耳机,听听看~! 今天,简单讲讲android里如何在生成jar包时,同时对jar包的代码进行混淆,避免别人看到核心代码. 之前,我对领导说我打包生成的SDK,别人使用android s ...

  2. android 第三方加密软件,Android实用图文教程之代码混淆、第三方平台加固加密、渠道分发...

    第一步:代码混淆(注意引入的第三方jar) 在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt. ...

  3. [转]Android 项目的代码混淆,Android proguard 使用说明

    简介 Java代码是非常容易反编译的.为了很好的保护Java源代码,我们往往会对编译好的class文件进行混淆处理. ProGuard是一个混淆代码的开源项目.它的主要作用就是混淆,当然它还能对字节码 ...

  4. android代码混淆作用,Android分享:代码混淆那些事

    1) 前言 ProGuard是一个开源的Java代码混淆器.它可以混淆Android项目里面的java代码,对的,你没看错,仅仅是java代码.它是无法混淆Native代码,资源文件drawable. ...

  5. Android代码混淆方法,Android 代码混淆零基础入门

    内容提要 本篇文章主要有三个部分,让读者读完后能自己写规则混淆项目 对Android代码怎么开启混淆做一个简单的介绍. 对混淆规则做一个简单介绍: 在混淆过后Crash日志反推代码工具retrace. ...

  6. 代码混淆android.mk,利用ollvm进行代码混淆

    OLLVM简介 OLLVM(Obfuscator-LLVM)是瑞士西北应用科技大学于2010年6月份发起的一个项目,该项目旨在提供一套开源的针对LLVM的代码混淆工具,以增加对逆向工程的难度. OLL ...

  7. (转)Android studio 使用心得(五)—代码混淆和破解apk

    这篇文章等是跟大家分享一在Android studio 进行代码混淆配置.之前大家在eclipse上也弄过代码混淆配置,其实一样,大家可以把之前在eclipse上的配置文件直接拿过来用.不管是.cfg ...

  8. Android 代码混淆 包名被混淆 主工程二次混淆 一站解决你的混淆

    代码混淆 (Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为.代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代码.执行代 ...

  9. android 混淆不混淆第三方jar,Android 第三方Jar包FastJson 代码混淆时的解决方法 - Android开发论坛 - 51CTO技术论坛_中国领先的IT技术社区...

    我们做AndroidApp软件的时候,经常会对App进行签名打包和代码混淆,在工程中没有使用第三方Jar文件的时候不用考虑很多因素,现在要说的是当你在你的工程使用使用了FastJson这个快速解析Js ...

最新文章

  1. 周报速递丨中国 5G 基站全球占比 70% ;360 宣布转型数字安全公司
  2. Eclipse 各版本版本号代号对应一览表
  3. redis数据库各种数据类型的增删改查命令
  4. CGVAE -> Delinker -> DeepCoy
  5. 矩池云上使用Visdom可视化图像说明
  6. SaaS已死。下一个。
  7. Selenium - What will happen behind the scenes when running client code
  8. 巴斯大学计算机科学研究生,巴斯大学计算机科学.pdf
  9. 片上总线Wishbone 学习(九)总线周期之单次读操作
  10. 有n个人围成一圈编号1~n,顺序排好,从第一个人开始1到3报数,凡是报到3的人退出圈子,C语言编程出圈顺序
  11. cad调了比例因子没反应_为什么你总混淆各种CAD命令?
  12. 认真推荐几个高质量的原创公众号
  13. html给页面整体添加左右边距_DIV CSS padding内补白(内边距)left right top bottom案例教程...
  14. 从未这么明白的设计模式(三):装饰器模式
  15. Spark~Spark介绍
  16. 一篇文章构建你的 NodeJS 知识体系
  17. 设计师:平面设计师、网页设计师、服装设计师、动画/3D设计师、UI设计师等设计师简介(工作内容、方向,知识储备)
  18. 结合若依框架实现微信小程序授权登录
  19. 用Python写了一个贪吃蛇大冒险小游戏
  20. linux nas 多硬盘,较低负担的四硬盘 NAS 选择,Synology DS416j 登场

热门文章

  1. 深入浅出通信原理知识点3
  2. Oracle 分析函数 over 和MySQL 实现类似效果写法
  3. 计算机学院早操规定,柚通知 | 南京邮电大学早操管理规定(暂行)
  4. iPad 屏幕镜像到 macbook
  5. 东北大学acm暑期夏令营结构体
  6. PowerBuilder(PB6)安装过程中的种种问题及解决方式
  7. 香橙派orangepi pc plus h3 启动tf卡制作
  8. Eclipse开启弹出Subversive Connector Discovery窗口解决办法
  9. 2.Latex安装和TeXworks Editor基础
  10. django入门学习