您的位置:首页 > 移动开发 > Android开发

android 代码混淆

2016-11-10 00:55 295 查看
为什么要把代码混淆呢? 为了防止别银反编译,窃取你的劳动成果。代码混淆就是在保证应用的功能不变的情况下 把代码格式打乱 字母删减  比如:用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 *;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: