美文网首页
android 代码混淆

android 代码混淆

作者: 爱吃猫的咸鱼 | 来源:发表于2016-11-10 00:53 被阅读0次

    为什么要把代码混淆呢? 

    为了防止别银反编译,窃取你的劳动成果。

    代码混淆就是在保证应用的功能不变的情况下 把代码格式打乱 字母删减  比如:用a代替abc  用b代替sss 各种乱  使别人根本无法看懂   下面就来说说如何操作

    代码混淆其实很简单 ,在项目的proguard-rules.pro文件里面添加基本的配置 和你项目中使用到jar包的配置 或者依赖的库的配置  具体配置看自己项目里都用了什么  网上也有一大堆基本配置可以参考,配置好之后直接开始打包签名就可以了

    下面是我写的一个小项目里的proguard-rules.pro文件里的所有内容 直接粘贴 

    # Add project specific ProGuard rules here.

    # By default, the flags in this file are appended to flags specified

    # in D:\Android\AndroidSDK\newsdk/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 *;

    #}

    # Glide图片库的混淆处理

    -keeppublic class * implements com.bumptech.glide.module.GlideModule

    -keeppublic enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {

    **[] $VALUES;

    public *;

    }

    -keepattributesSignature

    # Gson混淆脚本

    #-keepattributes Signature-keepattributes *Annotation*

    -keepclass sun.misc.Unsafe {*;}

    -keepclass com.google.gson.stream.** {*;}

    #使用Gson时需要配置Gson的解析对象及变量都不混淆。不然Gson会找不到变量。

    #将下面替换成自己的实体类

    -keepclass com.example.administrator.duguodong.bean.** {*;}

    # OkHttp3

    -dontwarncom.squareup.okhttp3.**

    -keepclass com.squareup.okhttp3.** {*;}

    -dontwarnokio.**

    # Okio

    -dontwarncom.squareup.**

    -dontwarnokio.**

    -keeppublic class org.codehaus.* {*;}

    -keeppublic class java.nio.* {*;}

    #上面是导入的model。同样的其他的也是如此

    -keepclass com.github.** {*;}

    #上面这个是避免混淆你导入的maven类库之类的

    -dontwarncom.example.administrator.duguodong.**

    #生成对应的混淆信息

    #注意的是fastJson要特殊对待

    #指定代码的压缩级别

    -optimizationpasses5

    #包明不混合大小写

    -dontusemixedcaseclassnames

    #不去忽略非公共的库类

    -dontskipnonpubliclibraryclasses

    #优化  不优化输入的类文件

    -dontoptimize

    #不做预校验

    -dontpreverify

    #混淆时是否记录日志

    -verbose

    #混淆时所采用的算法

    -optimizations!code/simplification/arithmetic,!field/*,!class/merging/*

    #忽略警告

    -ignorewarning

    #apk包内所有class的内部结构

    #  -dump class_files.txt

    #未混淆的类和成员

    #  -printseeds seeds.txt

    #列出从apk中删除的代码

    #  -printusage unused.txt

    #混淆前后的映射

    #  -printmapping mapping.txt

    # -------------系统类不需要混淆--------------------------

    -keeppublic class * extends android.app.Fragment

    -keeppublic class * extends android.app.Activity

    -keeppublic class * extends android.app.Application

    -keeppublic class * extends android.app.Service

    -keeppublic class * extends android.content.BroadcastReceiver

    -keeppublic class * extends android.content.ContentProvider

    -keeppublic class * extends android.app.backup.BackupAgentHelper

    -keeppublic class * extends android.preference.Preference

    -keeppublic class * extends android.support.**

    -keeppublic class com.android.vending.licensing.ILicensingService

    #保留support下的所有类及其内部类

    -keepclass android.support.** {*;}

    #保留R下面的资源

    -keepclass **.R$* {*;}

    -keepclasseswithmembernamesclass * {#保持native方法不被混淆

    native ;

    }

    -keepclasseswithmembersclass * {#保持自定义控件类不被混淆

    public (android.content.Context, android.util.AttributeSet);

    }

    -keepclasseswithmembersclass * {#保持自定义控件类不被混淆

    public (android.content.Context, android.util.AttributeSet, int);

    }

    -keepclassmembersclass * extends android.app.Activity {#保持自定义控件类不被混淆

    public void *(android.view.View);

    }

    -keepclassmembersenum * {#保持枚举enum类不被混淆

    public static **[] values();

    public static ** valueOf(java.lang.String);

    }

    -keepclass * implements android.os.Parcelable {#保持Parcelable不被混淆

    public static final android.os.Parcelable$Creator *;

    }

    相关文章

      网友评论

          本文标题:android 代码混淆

          本文链接:https://www.haomeiwen.com/subject/tqwtpttx.html