gradle 配置如下

minifyEnabled true 为混淆开关

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg' 为具体的混淆规则

其中proguard-android.txt' 为sdk目录下默认的混淆文件 proguard.cfg是为了满足项目自定义的混淆规则 文件名可修改

buildTypes {

release {

minifyEnabled true

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg'

signingConfig signingConfigs.release

}

}

以下为自己项目中实际配置的混淆内容

可以根据现有规则 按项目需求做修改

忽略混淆警告

-ignorewarnings

对于一些基本指令的添加

############################################## 代码混淆压缩比,在0~7之间,默认为5,一般不做修改

-optimizationpasses 5

混合时不使用大小写混合,混合后的类名为小写

-dontusemixedcaseclassnames

指定不去忽略非公共库的类

-dontskipnonpubliclibraryclasses

这句话能够使我们的项目混淆后产生映射文件# 包含有类名->混淆后类名的映射关系

-verbose

指定不去忽略非公共库的类成员

-dontskipnonpubliclibraryclassmembers

不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。

-dontpreverify

保留Annotation不混淆

-keepattributes Annotation,InnerClasses

避免混淆泛型

-keepattributes Signature

抛出异常时保留代码行号

-keepattributes SourceFile,LineNumberTable

指定混淆是采用的算法,后面的参数是一个过滤器# 这个过滤器是谷歌推荐的算法,一般不做更改

-optimizations !code/simplification/cast,!field/,!class/merging/

把混淆类中的方法名也混淆了

-useuniqueclassmembernames

优化时允许访问并修改有修饰符的类和类的成员

-allowaccessmodification

将文件来源重命名为“SourceFile”字符串

-renamesourcefileattribute SourceFile

处理support包

-dontnote android.support.**

-dontwarn android.support.**

保留继承的

-keep public class * extends android.support.v4.**

-keep public class * extends android.support.v7.**

-keep public class * extends android.support.annotation.**

保留R下面的资源

-keep class .R$ {;}

保留四大组件,自定义的Application等这些类不被混淆

-keep public class * extends android.app.Activity

-keep public class * extends android.app.Appliction

-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.preference.Preference

-keep public class com.android.vending.licensing.ILicensingService

Fragment不需要在AndroidManifest.xml中注册,需要额外保护下

-keep public class * extends android.support.v4.app.Fragment

-keep public class * extends android.app.Fragment

保留在Activity中的方法参数是view的方法,

这样以来我们在layout中写的onClick就不会被影响

-keepclassmembers class * extends android.app.Activity{

public void *(android.view.View);

}

对于带有回调函数的onXXEvent、*OnListener的,不能被混淆

-keepclassmembers class * {

void (OnEvent);

void (OnListener);

}

保留本地native方法不被混淆

-keepclasseswithmembernames class * {

native ;

}

-keepclassmembers enum * {

public static **[] values();

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

}

保留Keep注解的类名和方法

-keep,allowobfuscation @interface android.support.annotation.Keep

-keep @android.support.annotation.Keep class *

-keepclassmembers class * {

@android.support.annotation.Keep *;

}

保持某个包下面所有的类

-keep class cc.ewell.mcs.base.asyncTask.** { ; }

-keep class cc.ewell.mcs.base.bean.* { ; }

-keep class com.chad.library.adapter.* { *; }

-keep class * extends com.chad.library.adapter.base.BaseViewHolder { *; }

-keep class cc.ewell.mcs.bean.** { ; }

-keep class cc.ewell.mcs.view.* { ; }

-keep class cc.ewell.mcs.base.util.view.* { *; }

-keep class retrofit.http.** { *; }

-keep class * extends android.view.View { ; }

-keep public class * implements java.io.Serializable{ ; }

-keep class cc.ewell.mcs.presenter.action.MainEvents{;}

-dontwarn org.xmlpull.v1.XmlPullParser

-dontwarn org.xmlpull.v1.XmlSerializer

-keep class org.xmlpull.v1. {*;}

android 混淆字符串,android 代码混淆相关推荐

  1. 浅谈Android保护技术__代码混淆

    浅谈Android保护技术__代码混淆 浅谈Android保护技术__代码混淆 代码混淆 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读 ...

  2. 在Android Studio中进行代码混淆

    此文章来源于http://blog.csdn.net/wenwen091100304/article/details/52802247点击打开链接 在Android APP开发完成后,为了防止APP被 ...

  3. android虹软人脸识别代码混淆,虹软人脸识别Android Sample Code

    AFR_FSDKInterface engine = new AFR_FSDKEngine(); //用来存放提取到的人脸信息, face_1 是注册的人脸,face_2 是要识别的人脸 AFR_FS ...

  4. java代码混淆加密_Java代码混淆和加密--Jocky(转)

    1.1 什么是Jocky? 我们知道,Java是一种跨平台的编程语言,其源码(.java文件)被编译成与平台无关的字节码(.class文件),然后在运行期动态链接. 这样,编译后的类文件中将包含有符号 ...

  5. allatori混淆工具_代码混淆神器 Allatori

    准备工作 此次案例使用官方 Demo,不使用任何插件 环境:windows 10 1.Allatori简介 Allatori 是第二代 Java 混淆器,可为您的知识产权提供全方位的保护. 尽管大多数 ...

  6. android显示字符串,Android自定义View用切图显示字符串

    近期开发收音机有个需求,将频率值以图片的形式显示出来(如结尾效果图所示).然而,一开始用TextView写出来的效果太丑了,提交上去肯定不合格.于是乎我想到了写一个自定义View,将频率的数字切图排布 ...

  7. android 表情字符串,Android 显示输入法中的emoji表情以及String字符串转码

    实现用原生键盘输入表情并显示,有两种办法: 发送时将String字符串转换为Unicode编码字符串,显示接收的列表时用Unicode编码字符串转化为String字符串 发送时将String字符串转换 ...

  8. android 返回字符串,android – 如何从异步回调使用Retrofit返回String或JSONObject?

    我想到了.这是尴尬,但它是非常简单-临时解决方案可能是这样的: public void success(Response response, Response ignored) { TypedInpu ...

  9. android加密字符串,Android 加密解密字符串详解

    加密和解密的字符串: package eoe.demo; import java.security.SecureRandom; import javax.crypto.Cipher; import j ...

  10. Android应用代码混淆

    Android应用代码混淆 一.代码混淆原因 Java是一种跨平台的.解释型语言,Java 源代码编译成中间"字节码"存储于class 文件中. 由于跨平台的需要,Java字节码中 ...

最新文章

  1. 机器学习研究者必知的八个神经网络架构
  2. python下timer定时器常用的两种实现方法
  3. jquery ajax error但状态是200,jQuery $ .ajaxError()在200上运行 - 好的
  4. LeetCode 516. 最长回文子序列(动态规划)
  5. HTTP CSP详解
  6. 维基百科(wikipedia)数据下载(含地理数据)
  7. 极限编程(xp),iso国际标准化组织
  8. IEEE Trans LaTex模板参考文献格式
  9. 树莓派和电脑之间串口通信
  10. 2021最新薪酬报告出炉
  11. 西安适合计算机专业的研究所,计算机类专业比较厉害的6所大学,适合于中等偏上的学生报考...
  12. C语言:记录在主线程中停止子线程
  13. 阿里IoT套件 使用记录2 消息转发
  14. 事件模型-温度预警问题
  15. 洛谷1146 硬币翻转
  16. 京东淘宝拼多多自动查券找券搜券返利机器人实现方法分享
  17. 计算机图形学(光线追踪)
  18. 展讯7731C_M Android6.0 充电指示灯实现
  19. 汉字转拼音,用户表增加拼音字段,并将汉字姓名对应的拼音赋值给拼音字段
  20. VScode 显示垂直标尺

热门文章

  1. 【数据挖掘】使用R语言进行聚类分析
  2. 网贷、助贷、信贷、借贷,你搞懂了吗?
  3. 两种方式,实现 SpringBoot 中数据库密码加密
  4. linux 驱动打印机驱动怎么安装步骤,Linux 打印机驱动安装
  5. (二十)美萍酒店管理系统:系统维护_系统设置_房间类型_单个添加、多个添加
  6. java ssm框架论文,ssm框架理解
  7. bin文件的安装方法
  8. aspen怎么做灵敏度分析_【技巧篇】Aspen系列篇之——灵敏度分析
  9. Android 开发,你遇上 Emoji 头疼吗?
  10. 计算机网络之了解计算机网络