工作中快速混淆

博客转移到个人站点:
http://www.wangchengmeng.club/2018/02/01/%E5%B7%A5%E4%BD%9C%E4%B8%AD%E5%BF%AB%E9%80%9F%E6%B7%B7%E6%B7%86/

欢迎来吐槽

其实混淆不需要很大的技术,只是一种规则,这种规则你在项目中遇到得越多,在你后期开发中做混淆就越快,只是一个积累的过程,在这里我就分享一下我项目中大概的一些常用混淆吧,你需要就直接粘贴复制吧。

======================基本指令区========================

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose
-printmapping proguardMapping.txt
-optimizations !code/simplification/cast,!field/,!class/merging/
-keepattributes Annotation,InnerClasses
-keepattributes Signature
-keepattributes Exceptions,InnerClasses,Signature,Deprecated, SourceFile,LineNumberTable,EnclosingMethod

-allowaccessmodification
-repackageclasses
-dontoptimize
-keepattributes unchecked

============================默认保留区=================

-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 * extends android.view.View
-keep public class com.android.vending.licensing.ILicensingService
-keep class android.support.* {;}

-keepclasseswithmembernames class * {
native ;
}
-keepclassmembers class * extends android.app.Activity{
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class android.* { ;
}
-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);
}
-keepclasseswithmembers class * {
public (android.content.Context, android.util.AttributeSet);
public (android.content.Context, android.util.AttributeSet, int);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-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();
}
-keep class *.R$ {
*;
}
-keepclassmembers class * {
void *(**On*Event);
}
-keepclassmembernames class * {
java.lang.Class class (java.lang.String);java.lang.Classclass ( j a v a . l a n g . S t r i n g ) ; j a v a . l a n g . C l a s s c l a s s (java.lang.String, boolean);
}
-keep class * implements org.xml.sax.EntityResolver

-keepclassmembers class * {
** MODULE$;
}
-keep class org.apache.http.entity.mime.* { ;
}
-keep class org.apache.commons.codec.* { ;
}

The support library contains references to newer platform versions.
Don’t warn about those in case this app is linking against an older
platform version. We know about them, and they are safe.

-dontwarn android.support.**

==========================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);
}

Android 4.2JS调用Java代码的时候必须加上@JavascriptInterface才能调用。

-keepattributes JavascriptInterface
-keep class android.webkit.JavascriptInterface {*;}

===============================定制化区域==============
====1.实体类,加密算法、数据库、网络请求=========================

-keep class com.maogu.htclibrary.model.* { ;
}
-keep class com.maogu.tunhuoji.model.* { ;
}
-keep class com.maogu.htclibrary.http.* { ;
}
-keep class com.maogu.htclibrary.orm.* { ;
}
-keep class com.maogu.htclibrary.encrypt.* { ;
}

===================2.与js互相调用的类=====================

-keep public class com.maogu.tunhuoji.ui.activity.AuthActivity {
public void verifyRet(java.lang.String);
}
-keep public class com.maogu.tunhuoji.ui.activity.ShopWebActivity {
public void callbackShowTip(java.lang.String,java.lang.String);
}

===================3.第三方混淆=========================
————-激光推送不需要混淆:begin————

-dontwarn cn.jpush.**
-keep class cn.jpush.* { ; }
-dontwarn com.google.**
-keep class com.google.protobuf.* {;}

————-激光推送不需要混淆:end————
———-友盟不需要混淆:begin————

-dontwarn com.umeng.**
-keep class com.umeng*.* {; }

———-友盟不需要混淆:end————
———-shareSDK不需要混淆:begin————-

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

防止R文件反射部分被优化掉

-keep class *.R$ {*;}
-keep class *.R{;}
-dontwarn cn.sharesdk.**
-dontwarn *.R$

———-shareSDK不需要混淆:end————-
—————Begin: proguard configuration for Gson ———-
Gson specific classes

-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.* { ; }
-keep public class com.google.gson.* { ; }
-keep public class com.google.gson.* {public private protected ;}

json

-keep class a.b.c.d.* { ;
}
-keepclassmembernames class * {
public (org.json.JSONObject);
}
-keep public class org.jsoup.**{
public *;
}

—————End: proguard configuration for Gson ———-
—————butterknife 不要混淆:begin——————

-keep class butterknife.* { ; }
-dontwarn butterknife.internal.**
-keep class *$$ViewBinder { ; }

-keepclasseswithmembernames class * {
@butterknife.* ;
}

-keepclasseswithmembernames class * {
@butterknife.* ;
}

—————butterknife 不要混淆:end——————
————–okhttp混淆:begin————

-dontwarn com.squareup.okhttp.**
-keep class com.squareup.okhttp.* { ;}
-dontwarn okio.**

————–okhttp混淆:end————
————–eventBus的混淆:begin———

-keepclassmembers class ** {
public void onEvent*(**);
void onEvent*(**);
}

————–eventBus的混淆:end———–
————–腾讯bugly的混淆:begin———

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

————–腾讯bugly的混淆:end———–
————–rx系列的混淆:begin———

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

————–rx系列的混淆:end———–
————–HListView的混淆:begin———

-dontwarn it.sephiroth.android.library.**
-keepclassmembers class it.sephiroth.android.library.* { ; }

————–HListView的混淆:end———–
————–glide的混淆:begin———

-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser** {  
  **[]
** {    **[]
VALUES;
public *;
}

————–glide的混淆:end———–
————–http的混淆:begin———

-dontnote android.net.http.*
-dontnote org.apache.commons.codec.**
-dontnote org.apache.http.**

————–http的混淆:begin———
————–recyclerviewpager的混淆:begin———

-keep class com.lsjwzh.widget.recyclerviewpager.**
-dontwarn com.lsjwzh.widget.recyclerviewpager.**

————–recyclerviewpager的混淆:begin———
————–AndFix的混淆:begin———

-keep class com.alipay.euler.andfix.* { ; }

————–AndFix的混淆:end———
————–百度定位的混淆:begin———

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

————–百度定位的混淆:end———
————–听云:begin———

-keep class com.networkbench.* { ; }
-dontwarn com.networkbench.**
-keepattributes Exceptions, Signature, InnerClasses

————–听云:end———

当然还有更多的混淆,希望大家一起共享

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值