Android studio 混淆打包 proguard-rules.pro 与 bulid.gradle 配置总结

来源:互联网 发布:珠海网络电视台 编辑:程序博客网 时间:2024/05/19 04:02

现在写的app 基本都是经过混淆了的,如果不混淆, 发布出去,别人一反编译 就可以直接看你的源码了

ok 来说一下混淆吧:



build.gradle文件

apply plugin: 'com.android.application'android {    //签名文件 改为自己的路径    signingConfigs {        config {            keyAlias 'xiao'            keyPassword 'key'            storeFile file('F:/Android/keystore.jks')            storePassword 'key'//            v2SigningEnabled false //是否采用APK Signature Scheme v2        }    }    compileSdkVersion 25    buildToolsVersion '25.0.3'    //useLibrary 'org.apache.http.legacy'    defaultConfig {        applicationId "com.web"        minSdkVersion 16        targetSdkVersion 25        versionCode 12        versionName "1.0.0"        jackOptions {            enabled true        }        signingConfig signingConfigs.config    }    buildTypes {        release {            signingConfig signingConfigs.config            // 是否进行混淆            minifyEnabled false            // 混淆文件的位置            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'            // 不显示Log            buildConfigField "boolean", "LOG_DEBUG", "false"            //Zipalign优化            zipAlignEnabled true            // 移除无用的resource文件            shrinkResources true        }        debug {            signingConfig signingConfigs.config            // 显示Log            buildConfigField "boolean", "LOG_DEBUG", "true"            versionNameSuffix "-debug"            minifyEnabled false            zipAlignEnabled false            shrinkResources false        }    }    compileOptions {        targetCompatibility 1.8        sourceCompatibility 1.8    }    productFlavors {    }}dependencies {    // 编译libs目录下的所有jar包    compile fileTree(include: ['*.jar'], dir: 'libs')    //noinspection GradleCompatible    compile 'com.android.support:support-v4:25.3.1'    compile 'com.android.support:design:25.3.1'    compile 'com.github.bumptech.glide:glide:3.7.0'}

proguard-rules.pro混淆文件

###################################################################################### start on 2017/5/16 15:59# update author: qihao on 2017/7/4 17:53  http://blog.csdn.net/gfg156196# Email:sin2t@sina.com######################################################################################    #指定代码的压缩级别    -optimizationpasses 5    #包名不混合大小写    -dontusemixedcaseclassnames    #不去忽略非公共的库类    -dontskipnonpubliclibraryclasses     #优化  不优化输入的类文件    -dontoptimize     #混淆时是否做预校验    -dontpreverify     #混淆时是否记录日志    -verbose     # 混淆时所采用的算法    -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*    #保护注解    -keepattributes *Annotation*     #如果引用了v4或者v7包    -dontwarn android.support.**    #保持 native 方法不被混淆    -keepclasseswithmembernames class * {        native <methods>;    }    #保持自定义控件类不被混淆    -keepclasseswithmembers class * {        public <init>(android.content.Context, android.util.AttributeSet);    }    #保持自定义控件类不被混淆    -keepclassmembers class * extends android.app.Activity {       public void *(android.view.View);    }     # 保持自定义控件类不被混淆    -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 不被混淆    -keepnames class * implements java.io.Serializable    #保持 Serializable 不被混淆并且enum 类也不被混淆    -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();    }    #保持枚举 enum 类不被混淆 如果混淆报错,建议直接使用上面的 -keepclassmembers class * implements java.io.Serializable即可    #-keepclassmembers enum * {    #  public static **[] values();    #  public static ** valueOf(java.lang.String);    #}    -keepclassmembers class * {        public void *ButtonClicked(android.view.View);    }    #不混淆资源类    -keepclassmembers class **.R$* {        public static <fields>;    }    #避免混淆泛型 如果混淆报错建议关掉    #–keepattributes Signature    #关闭所有日志 log, java.io.Print, printStackTrace    -assumenosideeffects class android.util.Log {        public static *** e(...);        public static *** w(...);        public static *** i(...);        public static *** d(...);        public static *** v(...);    }    -assumenosideeffects class java.io.PrintStream {        public *** print(...);        public *** println(...);    }    -assumenosideeffects class java.lang.Throwable {        public *** printStackTrace(...);    }######################################################################################  end 2017/7/4 17:53  http://blog.csdn.net/gfg156196#######################################################################################


如有需要请复制使用  如发现遗漏请留言。








阅读全文
1 0
原创粉丝点击