上一篇文章介绍了混淆的基础知识,包括保留指定的包名、类名、方法名以及字段名。本篇文章将重点介绍混淆的广义概念,包括压缩、优化和混淆几个阶段。
在Java编译时,源代码(.java)会被转换成字节码(.class),相比源代码,字节码更加简洁。然而,生成的字节码中可能包含一些没有用到的代码,特别是当项目中使用了第三方类库时,未引用的代码会更多。
压缩阶段会分析生成的字节码,在确保项目正常运行的同时移除一些未引用的类、字段和方法。为了验证移除未引用代码的效果,我们创建一个module,包含AdvancedCourseActivity和Subject两个类,其中Subject没有被引用。
对混淆后的项目进行签名打包,并反编译生成的apk文件,检查是否仍然存在Subject的字节码文件。
反编译后的项目结构如下:
由以上结果可见,Subject的字节码文件已被成功移除。
接下来我们修改Subject类中的代码如下:
然后在AdvancedCourseActivity中引用Subject提供的构造方法和get方法。我们想知道未被引用的set方法是否会被移除。
反编译后的项目结构如下:
从以上结果可见,混淆后仅保留了被引用的字段(courseName、creditHour)和方法(getCourseName()、getCreditHour()),以及构造方法。我们将在后续的混淆中巧妙地使用压缩规则,类似于Android Studio的App Link Assistant功能。
那么,如果我们不想执行代码的压缩,该怎么做呢?这时候,我们需要学习一些压缩阶段的规则(除此之外,还有优化规则和混淆规则)。
压缩规则的可选项包括以下几种:
1. -dontshrink:开启混淆,默认压缩所有类。通过添加该关键字,可关闭压缩过程。在文件中添加以下规则:
反编译后的项目结构如下:
由上图可见,压缩阶段已被关闭,Subject的字节码文件仍然存在。
2. -printusage [filename]:将压缩阶段未引用的所有类信息打印到指定文件中。如果未在中指定该选项,则默认输出到路径:
在上述示例中,Subject的set方法未被引用,在usage.txt文件中可以找到相关信息。这一功能可用于检查签名打包后,在压缩阶段移除了哪些代码,并验证是否符合要求。
3. -whyareyoukeeping class_specification:打印保留类和内部成员的详细说明。class_specification指定需要了解的类名。详细说明将在Gradle控制台查看。例如,我们想了解为什么保留Subject类信息,可在文件中添加以下规则:
运行当前项目后,Gradle控制台将显示如下信息:
以上信息表明Subject类被引用了setCourseName()和setCreditHour()方法,以及get方法和构造方法。在AdvancedCourseActivity的void onCreate()方法中进行了调用。
至此,我们完成了压缩阶段的学习。
wegame崩坏三怎么上手机端的号?wegame崩坏三上手机端的号,电脑中先打开登二维码登用手机彻底崩坏三个人主页或就开始界面的扫码登,这样的话上手机端的号。《崩坏3》的官服和渠道服的区别是什么?当然这个区分我还是挺好的区分的,官方服务器的
使用进行配置对于Win10Xbox无法连接网络的问题,首先我们可以尝试使用工具进行配置。以下是具体步骤:1. 使用快捷键“Win R”打开“运行”窗口。2. 在输入框中键入“”,点击确定。3. 在左侧任务栏图标中选择“计算机配置”→“管理模
在Excel中,工作簿(Workbook)是我们存储数据的文件,而工作表(Worksheet)则是工作簿中用于组织和管理数据的单个表格。单元格(Cell)是工作表中最小的数据单元。1. 创建工作簿和工作表在Excel中可以通过多种方式创建工
苹果12mini手机怎么清理缓存垃圾?苹果12迷你手机,想要清除缓存很垃圾的话,你可以直接到苹果的APP store里面选择清理垃圾删除手机垃圾最简单的方法?1.清理缓存可以称为 " "占据了手机的内存。清理内存是释放手机内存的必要手段。打
在日常的工作中,我们经常需要对数据进行分类汇总以便更好地分析和理解。如果我们需要按部门统计工资发放情况,Excel中的分类汇总功能就能派上用场。下面将介绍如何使用分类汇总功能来实现这一目标。步骤一:排序数据在使用分类汇总功能之前,我们需要先
在小米MIUI 12系统中,通知振动是一个很实用的功能,但有时候我们可能希望关闭它,以避免干扰或节省电量。本文将详细介绍如何在小米MIUI 12系统中关闭通知振动,并提供了操作步骤和演示例子。步骤一:进入设置首先,我们需要进入手机的设置界面
mysql怎么打开图形化界面?下载一个MysqlFront,填写用户名、密码等相关信息。-启动mysql服务:net启动mysql因为我的安装已经完成,就不贴安装命令图了。如何登录mysql?cmd怎么连接mysql数据库?1.按住wind
剪映专业版是一款功能强大的视频编辑软件,它提供了多种类型的BGM供用户选择,包括搞笑、推理等。下面我们将介绍具体的操作步骤,帮助你在剪映专业版中添加BGM。打开剪映专业版首先,打开剪映专业版应用程序。你可以在电脑上找到它并点击运行,或者在手
键盘输入乱码是一个常见的问题,在使用电脑过程中经常会遇到。这个问题的出现可能是由于多种原因,比如操作系统设置不正确、键盘布局不匹配、驱动程序错误等。下面将详细介绍几种常见的键盘输入乱码问题及相应的解决方法。 第一种情况是操作系统设置不
小米钱q3相机比例怎么设置?可以,打开设置,相机和相框,设置为全屏16:9。小米11默认拍照是全屏这样好吗?小米11 的默认照片是全屏的,这张照片内容更丰富,很不错。小米手机玩王者荣耀界面怎么全屏?方法其实很简单,具体操作步骤如下1.在手