• 不能混淆
  • appgradle里面打开proguard
  • 模板
  • 常用第三方
    • 百度地图jar包换成自己的版本记得签名要匹配
    • pinyin4j
    • glide proguard
    • for DexGuard only
    • Retain generated class which implement Unbinder
    • butterknife
    • Begin proguard configuration for Gson -
    • xUtils30
    • RxJava RxAndroid
    • Retrofit
    • Retrolambda
    • OkHttp
    • OkHttp3

不能混淆

  • 在AndroidManifest中配置的类,比如四大组件
  • JNI调用的方法
  • 反射用到的类
  • WebView中JavaScript调用的方法
  • Layout文件引用到的自定义View
  • 一些引入的第三方库(一般都会有混淆说明的)(没说明就把整个包不混淆或自己根据不能混淆的规则去写)
    推荐两个开源项目,里面收集了一些第三方库的混淆规则
    android-proguard-snippets
    android-proguard-cn

app.gradle里面打开proguard

buildTypes{        release{            minifyEnabled true            zipAlignEnabled true            shrinkResources true            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }        debug{            minifyEnabled false            zipAlignEnabled false            shrinkResources false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }

模板

#指定压缩级别-optimizationpasses 5#不跳过非公共的库的类成员-dontskipnonpubliclibraryclassmembers#打印混淆时的详细信息-verbose#混淆时采用的算法-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*#把混淆类中的方法名也混淆了-useuniqueclassmembernames#优化时允许访问并修改有修饰符的类和类的成员-allowaccessmodification#将文件来源重命名为“SourceFile”字符串-renamesourcefileattribute SourceFile#保留行号-keepattributes SourceFile,LineNumberTable#保持泛型-keepattributes Signature#保持所有实现 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();}#Fragment不需要在AndroidManifest.xml中注册,需要额外保护下-keep public class * extends android.support.v4.app.Fragment-keep public class * extends android.app.Fragment# 保持测试相关的代码-dontnote junit.framework.**-dontnote junit.runner.**-dontwarn android.test.**-dontwarn android.support.test.**-dontwarn org.junit.**-keep class com.hs.map.shunloc.util.beanutil.**{*;}-keep class * extends android.app.Application-keep class org.apache.** { *; }-dontwarn org.apache.**-keep class com.sun.mail.** { *; }-dontwarn com.sun.mail.**-keep class java.beans.** { *; }-dontwarn java.beans.**-keep class org.json.** { *; }-dontwarn org.json.**-keep class java.lang.invoke.** { *; }-dontwarn java.lang.invoke.**-keep class sun.misc.Unsafe { *; }-dontwarn sun.misc.Unsafe-keep interface android.support.v7.** { *; }-keep class android.support.v7.** { *; }-keep interface android.support.v4.** { *; }-keep class android.support.v4.** { *; }-dontwarn android.app.Notification

常用第三方

百度地图(jar包换成自己的版本,记得签名要匹配)

-keep class com.baidu.** {*;}-keep class vi.com.** {*;}-keep class com.sinovoice.** {*;}-keep class pvi.com.** {*;}-dontwarn com.baidu.**-dontwarn pvi.com.**-dontwarn vi.com.**

pinyin4j

-dontwarn net.sourceforge.pinyin4j.**-keep class net.sourceforge.pinyin4j.**{*;}-keep class net.sourceforge.pinyin4j.format.**{*;}-keep class net.sourceforge.pinyin4j.format.exception.**{*;}

glide proguard

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

for DexGuard only

#-keepresourcexmlelements manifest/application/meta-data@value=GlideModule

Retain generated class which implement Unbinder.

-keep public class * implements butterknife.Unbinder { public (...); }

butterknife

-keep class butterknife.*-keepclasseswithmembernames class * { @butterknife.* <methods>; }-keepclasseswithmembernames class * { @butterknife.* <fields>; }

—————Begin: proguard configuration for Gson ———-

# Gson uses generic type information stored in a class file when working with fields. Proguard# removes such information by default, so configure it to keep all of it.-keepattributes Signature# For using GSON @Expose annotation-keepattributes *Annotation*# 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.reflect{*;}-keep class com.google.gson.**{*;}# Prevent proguard from stripping interface information from TypeAdapterFactory,# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)-keep class * implements com.google.gson.TypeAdapterFactory-keep class * implements com.google.gson.JsonSerializer-keep class * implements com.google.gson.JsonDeserializer##---------------End: proguard configuration for Gson ----------

xUtils3.0

-keepattributes Signature,Annotation-keep public class org.xutils.** {public protected *;}-keep public interface org.xutils.** {public protected *;}-keepclassmembers class * extends org.xutils.** {public protected *;}-keepclassmembers @org.xutils.db.annotation.* class * {*;}-keepclassmembers @org.xutils.http.annotation.* class * {*;}-keepclassmembers class * {@org.xutils.view.annotation.Event *;}

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

Retrofit

-dontwarn retrofit2.**-keep class retrofit2.** { *; }-keepattributes Signature-keepattributes Exceptions

Retrolambda

-dontwarn java.lang.invoke.*

OkHttp

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

OkHttp3

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

更多相关文章

  1. Android(安卓)sdk manager 下载安装中的错误收集
  2. android 广播机制
  3. android ScrollView嵌套RecyclerView只显示一条数据的解决办法
  4. Android怎样添加AT命令
  5. Android(安卓)SnackBar
  6. android和html交互--动态注入方法
  7. Android软键盘不能正确显示
  8. android 访问网络不能在主线程中进行以及在线程中操作UI的解决方
  9. Android之ProGuard混淆器

随机推荐

  1. 网络监听Network Daemon(Android(安卓)Ne
  2. 在文字周围环绕一层阴影效果[android:sha
  3. android sdcard 相关操作
  4. android Vibrator
  5. Android(安卓)adb常用命令
  6. android 对文件的操作模式
  7. android 利用TrafficStats类获取本应用的
  8. AndroidのCountDownTimer倒计时器
  9. Android:软件卸载的另一种方法adb uninst
  10. mtk android 配置mcp