工作中快速混淆

博客轉移到個人站點:
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 (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———

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

發佈了49 篇原創文章 · 獲贊 38 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章