android 混淆字符串,android 代码混淆
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 代码混淆相关推荐
- 浅谈Android保护技术__代码混淆
浅谈Android保护技术__代码混淆 浅谈Android保护技术__代码混淆 代码混淆 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读 ...
- 在Android Studio中进行代码混淆
此文章来源于http://blog.csdn.net/wenwen091100304/article/details/52802247点击打开链接 在Android APP开发完成后,为了防止APP被 ...
- android虹软人脸识别代码混淆,虹软人脸识别Android Sample Code
AFR_FSDKInterface engine = new AFR_FSDKEngine(); //用来存放提取到的人脸信息, face_1 是注册的人脸,face_2 是要识别的人脸 AFR_FS ...
- java代码混淆加密_Java代码混淆和加密--Jocky(转)
1.1 什么是Jocky? 我们知道,Java是一种跨平台的编程语言,其源码(.java文件)被编译成与平台无关的字节码(.class文件),然后在运行期动态链接. 这样,编译后的类文件中将包含有符号 ...
- allatori混淆工具_代码混淆神器 Allatori
准备工作 此次案例使用官方 Demo,不使用任何插件 环境:windows 10 1.Allatori简介 Allatori 是第二代 Java 混淆器,可为您的知识产权提供全方位的保护. 尽管大多数 ...
- android显示字符串,Android自定义View用切图显示字符串
近期开发收音机有个需求,将频率值以图片的形式显示出来(如结尾效果图所示).然而,一开始用TextView写出来的效果太丑了,提交上去肯定不合格.于是乎我想到了写一个自定义View,将频率的数字切图排布 ...
- android 表情字符串,Android 显示输入法中的emoji表情以及String字符串转码
实现用原生键盘输入表情并显示,有两种办法: 发送时将String字符串转换为Unicode编码字符串,显示接收的列表时用Unicode编码字符串转化为String字符串 发送时将String字符串转换 ...
- android 返回字符串,android – 如何从异步回调使用Retrofit返回String或JSONObject?
我想到了.这是尴尬,但它是非常简单-临时解决方案可能是这样的: public void success(Response response, Response ignored) { TypedInpu ...
- android加密字符串,Android 加密解密字符串详解
加密和解密的字符串: package eoe.demo; import java.security.SecureRandom; import javax.crypto.Cipher; import j ...
- Android应用代码混淆
Android应用代码混淆 一.代码混淆原因 Java是一种跨平台的.解释型语言,Java 源代码编译成中间"字节码"存储于class 文件中. 由于跨平台的需要,Java字节码中 ...
最新文章
- 机器学习研究者必知的八个神经网络架构
- python下timer定时器常用的两种实现方法
- jquery ajax error但状态是200,jQuery $ .ajaxError()在200上运行 - 好的
- LeetCode 516. 最长回文子序列(动态规划)
- HTTP CSP详解
- 维基百科(wikipedia)数据下载(含地理数据)
- 极限编程(xp),iso国际标准化组织
- IEEE Trans LaTex模板参考文献格式
- 树莓派和电脑之间串口通信
- 2021最新薪酬报告出炉
- 西安适合计算机专业的研究所,计算机类专业比较厉害的6所大学,适合于中等偏上的学生报考...
- C语言:记录在主线程中停止子线程
- 阿里IoT套件 使用记录2 消息转发
- 事件模型-温度预警问题
- 洛谷1146 硬币翻转
- 京东淘宝拼多多自动查券找券搜券返利机器人实现方法分享
- 计算机图形学(光线追踪)
- 展讯7731C_M Android6.0 充电指示灯实现
- 汉字转拼音,用户表增加拼音字段,并将汉字姓名对应的拼音赋值给拼音字段
- VScode 显示垂直标尺