android 代码混淆 垃圾代码制造
一 开启混淆
minifyEnabled true 设置为true
并在项目根目录建立proguard-android.txt的文件
android {
buildTypes {debug {minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'jniDebuggable truesigningConfig signingConfigs.debug}release {minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'signingConfig signingConfigs.debug}}
}
二 混淆逻辑配置
proguard-android.txt
1混淆的功能
proguard包括四个功能,shrinker(压缩), optimizer(优化),obfuscator(混淆),preverifier(预校验),他们的作用分别是:
shrink: 检测并移除没有用到的类,变量,方法和属性;
optimize: 优化代码,非入口节点类会加上private/static/final, 在字节码级别执行优化,让应用运行的更快。。
obfuscate: 增大反编译难度,类和类成员会被随机命名,除非用keep保护。
preverify: 预校验代码是否符合Java1.6或者更高的规范.
2关闭方法
3 如果开启混淆,简单的例子
这里只写一些简单的obfuscate
保留混淆包 -keep
-keep class com.unity3d.player.* { *; }
-keep class com.unity3d.player.* # 一颗星只保持本包的类名(不包含内容)
-keep class com.unity3d.player.** # 二颗星表示保持本包和子包下的类名(不包含内容)
保留混淆的类 -keepclasseswithmembers //因为开启混淆后, 不被引用的方法会被丢弃掉
-keepclasseswithmembers class com.*****.cn.UnityPlayerActivity{public void commLogin(java.lang.String);}
4 注意事项
1,jni方法不可混淆,因为这个方法需要和native方法保持一致;
-keepclasseswithmembernamesclass*{# 保持native方法不被混淆 native ;}
2,反射用到的类不混淆(否则反射可能出现问题);
3,AndroidMainfest中的类不混淆,所以四大组件和Application的子类和Framework层下所有的类默认不会进行混淆。自定义的View默认也不会被混淆;所以像网上贴的很多排除自定义View,或四大组件被混淆的规则在Android Studio中是无需加入的;
4,与服务端交互时,使用GSON、fastjson等框架解析服务端数据时,所写的JSON对象类不混淆,否则无法将JSON解析成对应的对象;
5,使用第三方开源库或者引用其他第三方的SDK包时,如果有特别要求,也需要在混淆文件中加入对应的混淆规则;
6,有用到WebView的JS调用也需要保证写的接口方法不混淆,原因和第一条一样;
7,Parcelable的子类和Creator静态成员变量不混淆,否则会产生Android.os.BadParcelableException异常;
-keepclass*implementsAndroid.os.Parcelable{# 保持Parcelable不被混淆 publicstaticfinalAndroid.os.Parcelable$Creator *;}
8,使用enum类型时需要注意避免以下两个方法混淆,因为enum类的特殊性,以下两个方法会被反射调用。
-keepclassmembersenum* {publicstatic**[] values();publicstatic**valueOf(java.lang.String); }
5 资料参考:
1.http://proguard.sourceforge.net/
2.http://developer.android.com/tools/help/proguard.html
三 垃圾代码制造
android.applicationVariants.all { variant ->androidJunkCode.configMap.put(variant.name, {packageBase = "com.abc.game" //生成java类根包名packageCount = 30 //生成包数量activityCountPerPackage = 3 //每个包下生成Activity类数量otherCountPerPackage = 50 //每个包下生成其它类的数量methodCountPerClass = 20 //每个类下生成方法数量resPrefix = "color_" //生成的layout、drawable、string等资源名前缀drawableCount = 300 //生成drawable资源数量stringCount = 300 //生成string数量}) }
反编译后的效果
混淆项目的示例下载地址
hx_code_test.zip-Android文档类资源-CSDN下载
根目录的build.gradle中:
buildscript {repositories {mavenCentral()}dependencies {classpath "com.github.qq549631030:android-junk-code:1.1.2"}
}
app目录的build.gradle模块中:
apply plugin: 'com.android.application' apply plugin: 'android-junk-code'androidJunkCode {variantConfig {release {//变体名称,如果没有设置productFlavors就是buildType名称,如果有设置productFlavors就是flavor+buildType,例如(freeRelease、proRelease)packageBase = "cn.hx.plugin.ui" //生成java类根包名packageCount = 30 //生成包数量activityCountPerPackage = 3 //每个包下生成Activity类数量excludeActivityJavaFile = false //是否排除生成Activity的Java文件,默认false(layout和写入AndroidManifest.xml还会执行),主要用于处理类似神策全埋点编译过慢问题otherCountPerPackage = 50 //每个包下生成其它类的数量methodCountPerClass = 20 //每个类下生成方法数量resPrefix = "junk_" //生成的layout、drawable、string等资源名前缀drawableCount = 300 //生成drawable资源数量stringCount = 300 //生成string数量}} }
新版本下载地址
https://download.csdn.net/download/liutietuo/72096272https://download.csdn.net/download/liutietuo/72096272
android 代码混淆 垃圾代码制造相关推荐
- iOS 代码混淆 垃圾代码
app风靡的时代,总有一些奇葩的需求. 为了刷量,刷排名,制作壳包,为了通过苹果爸爸审核,想到代码混淆,垃圾代码等策略. 作为一名程序员,怎么办? 爬了一些文章博客.总的来说有一下几方面: 字符串加密 ...
- 【无标题】android 代码混淆 垃圾代码制造
原文链接:https://blog.csdn.net/liutietuo/article/details/108824904 一 开启混淆 minifyEnabled true 设置为true 并在项 ...
- Android高级混淆和代码保护技术
本文讲的是 Android高级混淆和代码保护技术, 这是一篇关于 Android 代码保护的文章,旨在介绍代码混淆.防止逆向工程的各种高级技巧.大家都很忙,我也赶着回去继续开发我的新应用,因此话不多说 ...
- Android 高级混淆和代码保护技术
转载自@drakeet Android大牛的博客 http://drakeet.me/android-advanced-proguard-and-security/ Android 高级混淆和代码保护 ...
- android代码混淆aar_android代码混淆个人总结及踩坑
前言 公司项目使用组件化开发的形式,需要对自己负责的模块进行一些混淆配置,关于混淆相信做android开发的都或多或少有过一些接触,通过对混淆文件的配置从而将代码中的类名,方法名,成员变量等进行无意义 ...
- oc代码混淆_OC代码混淆工具
之前用python写了一个OC代码混淆脚本(python脚本),每次运行不方便,且其他人使用起来困难,就尝试写了一个mac工具. 工具地址:点我下载 密码:2405 现阶段工具还处于初级阶段,功能 ...
- oc代码混淆_iOS 代码混淆
一般做了防调试的话,被调试进程会退出的,是防动态分析措施. 代码混淆加花这些是防静态分析措施. 反调试是防动态分析措施. 混淆的方法 方法名混淆其实就是字符串替换,有2个方法可以,一个是#define ...
- Python代码部署的三种加密方案:代码混淆、代码编译、代码打包
前言 最近需要源码部署一个项目,因此探索一下保护源码的方式,由简单到复杂主要总结为以下三大类: 代码混淆:主要是改变一些函数名.变量名 代码打包:思路是把Python代码打包成 .exe 的可执行文件 ...
- oc代码混淆_oc代码混淆
#!/usr/bin/env python#coding=utf8 importosimportreimportrandom#规避文件夹 exclude_dirs = ["JBSDKOthe ...
- Android代码混淆
作为一名技术开发人员,为了保护源代码,阻止反向工程我们势必会接触到代码混淆.代码混淆亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为,代码混淆可以用于程序源代码, ...
最新文章
- ***CSS魔法堂:选择器及其优先级
- mysql 自带工具详解
- 图像上添加噪声 并滤波
- UA SIE545 优化理论基础3 Fritz-John与Kuhn-Tucker理论总结 带等式约束与不等式约束的极值问题
- python中可变参数和关键字参数_python的可变参数和关键字参数(*args **kw)
- goudp文件传输服务器,golang udp服务端客户端例子
- HoloLens开发手记-配置开发环境 Install the tools
- 《互联网理财一册通》一一第1章 做好互联网理财前的准备工作
- 理工计算机系相关内容,弗吉尼亚理工大学计算机系
- 枚举与常量需要注意的一个问题
- 基于bootstrap的双边栏选择框_iphone自带Dock栏美化功能,你out了
- MATLAB免疫算法求解超市物流配送中心选址问题实例
- Service Unavailable出现原因及解决方法
- ir指令、立即数的作用_计算机系统概论-笔记
- TVDI中线性拟合干湿边的步骤
- java Virtual Machine Launcher
- 一文搞懂什么是神经网络Neural Network【详细介绍】
- C#中操作Excel(4)—— 向Excel中插入两种图表以及设置图表格式
- Could Not Autowired ,No Beans of ....
- 哥谭第一季/全集Gotham迅雷下载
热门文章
- 计算机控制面板没,没有nvidia控制面板,手把手教你电脑没有nvidia控制面板
- sentinel——SLC数据下载、DEM数据下载拼接、精密轨道数据下载方法
- CodeProject 精彩系列
- maxscript编辑器脚本高亮显示
- ntko php,NTKO OFFICE文档控件
- 腾讯x5内核使用方法 手动安装 全网最简单
- 【学习笔记】数据分析师相关岗位招聘情况分析
- 资源收集:2020年11月行政区划代码
- windows自带黑体_win10字体设置黑体|win10系统文字如何设置黑体字体
- Android UUID.randomUUID()生成唯一数,1到100随机数