工作中快速混淆

来源:互联网 发布:淘宝保健品怎么发布 编辑:程序博客网 时间:2024/05/21 11:27

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

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

-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(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