-optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify -verbose -dontwarn -dontskipnonpubliclibraryclassmembers -ignorewarnings -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod # 保持 native 方法不被混淆 -keepclasseswithmembernames class * { native <methods>; } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet, int); } # 保留Parcelable序列化类不被混淆 -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } # 保留Serializable序列化的类不被混淆 -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; !static !transient <fields>; !private <fields>; !private <methods>; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } # 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆 -keepclassmembers class * { void *(**On*Event); void *(**On*Listener); } #保持第三方包不混淆 -dontwarn com.tencent.** -keep class com.tencent.**{*;} -keep class com.qq.**{*;} -keep class tencent.tls.**{*;} #保持指定包下的类不混淆 -keep class nodepp.**{*;} -keep public class com.nodepp.smartnode.helper.**{*;} -keep public class com.nodepp.smartnode.helper.**{*;} -keep public class com.nodepp.smartnode.model.**{*;} -keep public class com.nodepp.smartnode.callback.**{*;} #移除log日志,需要把sdk\tools\proguard目录下的proguard-android.txt文件下的-dontoptimize注释掉才能生效 -assumenosideeffects class android.util.Log { public static boolean isLoggable(java.lang.String, int); public static int v(...); public static int i(...); public static int w(...); public static int d(...); public static int e(...); }
android { compileSdkVersion 22 buildToolsVersion '22.0.1' defaultConfig { minSdkVersion 15 targetSdkVersion 22 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false //false表示不混淆,true表示开启混淆 //Zipalign优化 zipAlignEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { minifyEnabled false //false表示不混淆,true表示开启混淆 //Zipalign优化 zipAlignEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } lintOptions { abortOnError false } }
打包jar 的话直接在命令行输入gradlew makejar就行,在module下的gradle.build进行配置,混淆文件也是module下的
打包apk进行混淆时直接build整个工程,在app下的gradle.build进行配置,混淆文件也是app下的