首先要开启混淆:即设置为true即可
在build.gradle里
buildTypes { release { // 不显示Log buildConfigField "boolean", "LOG_DEBUG", "true" shrinkResources true(这里) zipAlignEnabled true // 移除无用的resource文件 minifyEnabled true(这里) proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { buildConfigField "boolean", "LOG_DEBUG", "true" minifyEnabled false zipAlignEnabled true shrinkResources true } }
再次在混淆的规则文件里 跟build.gradle 同级别的目录里的proguard_rules.pro 文件里
如下:
# Add project specific ProGuard rules here. # By defaults, the flags in this file are appended to flags specified # in E:\androidsdk/tools/proguard/proguard-android.txt # You can edit the include path and order by changing the proguardFiles # directive in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # Add any project specific keep options here: # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} -dontskipnonpubliclibraryclasses # 不忽略非公共的库类 -optimizationpasses 5 # 指定代码的压缩级别 -dontusemixedcaseclassnames # 是否使用大小写混合 -dontpreverify # 混淆时是否做预校验 #-verbose # 混淆时是否记录日志 -keepattributes *Annotation* # 保持注解 -ignorewarning # 忽略警告 -dontoptimize # 优化不优化输入的类文件 -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆时所采用的算法 #保持哪些类不被混淆 -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 com.android.vending.licensing.ILicensingService #生成日志数据,gradle build时在本项目根目录输出 -dump class_files.txt #apk包内所有class的内部结构 -printseeds seeds.txt #未混淆的类和成员 -printusage unused.txt #打印未被使用的代码 -printmapping mapping.txt #混淆前后的映射 #如果有引用v4包可以添加下面这行 #-keep public class * extends android.support.v4.app.Fragment -keep public class * extends android.support.** { *; } #如果引用了v4或者v7包 -dontwarn android.support.* #忽略警告 -dontwarn android.support.v4.** -ignorewarning # 混淆jar #-libraryjars libs/gson-2.2.4.jar # 混淆类 #-keep class sun.misc.Unsafe { *; } # 混淆包 -keep class com.google.gson.examples.android.model.** { *; } #dialog -keep class me.drakeet.materialdialog.** { *; } #加载框 -keep class com.kaopiz.kprogresshud.** { *; } #下拉刷新 -keep class in.srain.cube.views.ptr.** { *; } -keepattributes Signature #不混淆泛型 -keepnames class * implements java.io.Serializable #不混淆Serializable #-keepclassmembers class **.R$* { #不混淆资源类 # public static <fields>; #} -keepclasseswithmembernames class * { # 保持 native 方法不被混淆 native <methods>; } -keepclasseswithmembers class * { # 保持自定义控件类不被混淆 public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * { # 保持自定义控件类不被混淆 public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers class * extends android.app.Activity { # 保持自定义控件类不被混淆 public void *(android.view.View); } -keepclassmembers enum * { # 保持枚举 enum 类不被混淆 public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆 public static final android.os.Parcelable$Creator *; } #不混淆资源类 -keepclassmembers class **.R$* { public static <fields>; } -keep class **.R$* { *; } #容云的代码的混淆 -keepattributes Exceptions,InnerClasses -keepattributes Signature # RongCloud SDK -keep class io.rong.** {*;} -keep class * implements io.rong.imlib.model.MessageContent {*;} -dontwarn io.rong.push.** -dontnote com.xiaomi.** -dontnote com.google.android.gms.gcm.** -dontnote io.rong.** #支付宝 #-libraryjars libs/alipaySdk-20161129.jar -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.tencent.** { *;} # VoIP -keep class io.agora.rtc.** {*;} #xutl3 -keepattributes Signature,*Annotation* -keep public class org.xutils.** { public protected *; } -keep public interface org.xutils.** { public protected *; } -keepclassmembers class * extends org.xutils.** { public protected *; } -keep class com.otb.designerassist.activity.** {*;} -keepclassmembers @org.xutils.db.annotation.* class * {*;} -keepclassmembers @org.xutils.http.annotation.* class * {*;} -keepclassmembers class * { @org.xutils.view.annotation.Event <methods>; } -keep class com.iyees.yishi.application.javaBean.** {*;} -keep class com.iyees.yishi.application.adapter.** {*;} # Location #-libraryjars libs/BaiduLBS_Android.jar 替换成自己所用版本的jar包 #-libraryjars libs/AMap_Search_V3.4.0_20160811.jar 替换成自己所用版本的jar包 #-libraryjars libs/AMap_Channel_Location_V1.4.0_20160708.jar 替换成自己所用版本的jar包 #-libraryjars libs/AMap_2DMap_V2.9.0_20160525.jar 替换成自己所用版本的jar包 -keep class com.baidu.** { *; } -keep class vi.com.gdi.bgl.android.**{*;} -keep class com.amap.api.**{*;} -keep class com.amap.api.services.**{*;} #解析数据的 # 红包 # 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.** { *; } -keep class com.uuhelper.Application.** {*;} -keep class net.sourceforge.zbar.** { *; } -keep class com.google.android.gms.** { *; } -keep class com.alipay.** {*;} -keep class com.jrmf360.rylib.** {*;} #有盟统计的混淆 -keep class com.umeng.** { *; } -keep class com.umeng.analytics.** { *; } -keep class com.umeng.common.** { *; } -keep class com.umeng.newxp.** { *; } #第三方类库 -keep class com.github.** { *; } -libraryjars ../library # ButterKnife -keep class butterknife.** { *; } -dontwarn butterknife.internal.** -keep class **$$ViewBinder { *; } -keepclasseswithmembernames class * {* ; } # 银联 -dontwarn com.unionpay.** -keep class com.unionpay.** { *; } #保持自定义组件不被混淆 -keep public class * extends android.view.View { public <init>(android.content.Context); public <init>(android.content.Context, android.util.AttributeSet); public <init>(android.content.Context, android.util.AttributeSet, int); public void set*(...); } #保持 Serializable 不被混淆 -keepnames class * implements java.io.Serializable -ignorewarnings
这里最后一部 对应用进行签名打包即可