proguard
文章平均质量分 79
锐湃
这个作者很懒,什么都没留下…
展开
-
编译解决:Missing classes detected while running R8.
但R8使用起来一直不友好,因为自从使用R8之后编译问题不断。主要还是和混淆相关,经常报错,今天用compose开发应用又遇到一个,构建生产环境包的时候IDE报错提示如下:”Android R8是一个代码混淆和压缩工具,可以将应用程序的大小和安全性优化。©著作权归作者所有:来自51CTO博客作者wx5a3d0ad21ba8b的原创作品,请联系作者获取转载授权,否则将追究法律责任。把混下规则添加到应用的混淆配置文件(proguard-rules.pro)中即可解决,转载 2024-05-27 20:16:08 · 1191 阅读 · 0 评论 -
EventBus混淆its super classes have no public methods with the @Subscribe annotation
遇到问题先不要慌,也不要盲目搜索答案,这样会浪费时间,且可能混淆你的视线先认真仔细的看一下日志,一般日志都会给你提示结合一切可用信息,快速准确的定位问题如果非要搜,建议先去官方文档找答案根据日志提示,我定位到问题是EventBus查看使用教程,并没有发现什么问题在EventBus的issues中看看是否有同样的问题,果然是有的,并知道了是R8压缩导致的去google官网查看R8相关介绍,并知道了原因,且提供了解决方案举一反三,也适用其他的问题。转载 2024-04-11 15:42:16 · 325 阅读 · 0 评论 -
Android R8 mapping.txt文件解读
信息一样,而且除了第一行 __[:originalstartline[:originalendline]] __有两个值之外,后面的 __[:originalstartline[:originalendline]] __都只有一个值, 则表示这部分代码是__inline__代码。__mapping.txt__文件的格式如上所示:__classline__是类信息,紧接着是__N__个__fieldline__的变量信息,以及__M__个__methodline__的方法信息。转载 2023-11-30 10:50:52 · 548 阅读 · 0 评论 -
理解混淆的输出
然后混淆就完成了它所有的工作(压缩代码和混淆),它输出了最后一个很重要的文件——所有代码被处理后的完整列表。就是所有的class文件,格式并不是最优的,所以它是个巨大的文件。混淆的第一件事情就是读取配置的所有文件,然后读取所有的java字节码(.class文件)创建class池。最后一点需要注意的是这些文件是构建的重要的一部分,尤其是mapping.txt。混淆下一步需要做的是混淆尽可能多的代码,它会重命名类和成员为无意义的名称如“a”,“b”等等。如果只有类中某些成员被移除,会在下一行输出被移除的成员。转载 2023-11-30 10:46:45 · 36 阅读 · 0 评论 -
关于一个平平无奇的NPE引申出来的部分proguard知识点的理解
代码总是要被打到dex里按照字节码来执行,Android是基于寄存器的虚拟机。崩溃栈有时候会跟我们看到的不一样,我们参照以下的原则来查看crash,肯定能水到渠成。一般情况,直接查看代码,崩溃栈跟现有代码清晰一致,皆大欢喜。出现崩溃栈跟现有代码对不上,在obfuscate阶段肯定发生了内联,先去usage.txt里查看“嫌疑人代码”有没有被内联掉如果发生内联,去mapping.txt里面查找被内联到了哪里,可能是同一个类,也可能是不同的类。转载 2023-11-30 10:39:50 · 114 阅读 · 0 评论 -
需要了解的ProGuard
为了使你的Android应用更小,可以在发布版本中启用缩减功能。通过使用R8来进行缩减,可以删除未使用的代码和资源,缩短类名并进行优化。Android Gradle插件(v3.4.0+)使用R8来执行这些任务。代码缩减:检测并安全地删除应用及其库中未使用的代码,有助于避免64k引用限制。资源缩减:从应用中删除未使用的资源,与代码缩减协同工作。混淆:缩短类和成员名称,减小DEX文件的大小。优化:进一步分析和优化你的代码。转载 2023-11-09 18:05:51 · 223 阅读 · 0 评论 -
consumerProguardFiles 和 proguardFiles 区别
proguardFiles:consumerProguardFiles:子 module 混淆文件内容需要特别注意下:转自:Android|模块化探索抽取 basic 简化子 module 冗余-腾讯云开发者社区-腾讯云转载 2023-11-09 18:00:00 · 755 阅读 · 0 评论 -
用 proguardgui.bat 还原混淆代码
在我们开发 app 或者 sdk 的时候,为了安全起见,防止被别人反编译,所以我们都会对我们的代码进行混淆配置。但是混淆之后,利用一些工具,进行 bug 崩溃的采集的时候,那些代码我们看不懂,既然看不懂,还怎么解决bug?不过放心,Android SDK 自带的工具中,有个 proguardgui.bat 可以帮助我们还原代码,我们现在就要简单学习一下,这个工具怎么使用。转载 2022-09-05 17:47:58 · 1059 阅读 · 0 评论 -
ProguardGui界面化工具使用
在点击Add input按钮,添加我们需要进行混淆的jar(no_proguard.jar)点击Add output按钮,填入我们要输出的jar包的名称。3、依次设置压缩(Shrinking)、混淆(Obfuscation)、优化(OPtimization)和Information按钮,设置混淆各种配置。1、准备未混淆过的jar,双击打开AndroidSDK安装目录\tools\proguard\bin\proguardgui.bat。2、设置我们需要混淆的jar包和混淆后输出的jar包。转载 2022-09-05 17:33:54 · 1037 阅读 · 0 评论 -
代码混淆解决方案,适配AndroidX
在Studio中做混淆,基本就是对Proguard-rules.pro文件的操作。混淆的过程也是有规律可循的。下面我将分几个部分来分别介绍混淆过程。(1)如何开启混淆。(2)混淆的公共部分。(3)需要我们不混淆的代码。(4)libs下的第三方Jar包的混淆方式。(5)complie的第三方Jar包的混淆方式。(6)代码注释的混淆方式。转载 2022-09-05 11:17:55 · 1427 阅读 · 2 评论 -
多模块混淆、多module混淆、多library混淆的正确姿势
博客中我们提到了混淆。混淆的文章其实网上也很多,介绍的都很好,但是关于多个module的混淆规则就不是这么详细,有的也是错误的,经过了2天的多次实践以及查阅资料(多次打包和反编译看源码,很费时间啊),终于达到了我的目的。一般来说,在组件化开发的情况下,app module的代码是很少的,依赖的第三方库也是很少的。网上很多关于子module的混淆配置是错误的,经过我的多次实践得出,主模块的混淆开关配置会直接影响到子模块,也就是说如果你的主模块开启的混淆,就算你的子模块关闭混淆开关,最终子模块还是会被混淆的。转载 2022-09-05 10:37:46 · 541 阅读 · 0 评论 -
补齐Android技能树 - 从害怕到玩转Android代码混淆
0x0、引言Android代码混淆,老生常谈了,不过大部分Android仔对它的认识可能还处于这样的阶段(比如:写这篇文章前的我):1、日常开发Debug包时不用混淆,正式发布Release包前开启代码混淆; 2、混淆好处① → 类、方法、变量名变成短且无意义的名字,提高反编译后代码的阅读成本; 3、混淆好处② → 删除无用的类、方法与属性,缩减了APK包的大小; 4、混淆好处③ → 对字节码进行优化,移除无用指令,应用运行更快; 5、怎么混淆 → 主项目的 build.gradle 设置转载 2021-06-08 18:12:28 · 346 阅读 · 0 评论 -
proguard 不混淆方法名_Proguard 常用规则
入口为了决定哪些代码要被保留哪些代码要出丢弃和混淆,必须指定入口点。这些入口点通常是 main方法,activity,service等。 在压缩阶段,Proguard从这些入口点开始递归确定哪些类或类成员要被使用,其余的都会被丢弃。 在优化阶段,ProGuard 会进一步优化代码。在其他优化中,可以将不是入口点的类和方法设为 private,static 或 final ,删除未使用的参数,并且可以内联一些方法。 在混淆阶段,ProGuard 会重新命名不属于入口点的类和类成员转载 2021-02-25 17:15:57 · 4299 阅读 · 0 评论 -
android 代码混淆及问题大集锦
最近在需要对所开发的项目进行了代码混淆,在android studio中开启代码混淆其实还是挺方便的,不过因为代码混淆产生的问题非常多,特别是对于一些涉及到反射的第三方库经常因为名称的变化导致无法使用。 下面介绍android studio中对android项目进行代码混淆的详细步骤: (1)代码混淆开启 想要开启代码混淆功能,只需要在相应的项目中将 build.gradle 的相应设置开启即可。android{ buildTypes { release {转载 2021-02-25 17:11:19 · 450 阅读 · 0 评论 -
Android 代码混淆配置总结
一、前言为何需要混淆呢?简单的说,就是将原本正常的项目文件,对其类,方法,字段,重新命名,a,b,c,d,e,f…之类的字母,达到混淆代码的目的,这样反编译出来,结构乱糟糟的,看了也头大。另外说明一下,本文的混淆总结基于AndroidStudio的IDE开发环境。二、官方默认的混淆配置其实在androidStudio中做混淆,基本就是对Proguard-rules.pro文件的操作。混淆的过程也是有规律可循的。先看看官方的proguard-android.txt文件,位于/tools/p..转载 2021-02-25 17:01:42 · 582 阅读 · 0 评论 -
Android 代码混淆 混淆方案
本篇文章:自己在混淆的时候整理出比较全面的混淆方法,比较实用,自己走过的坑,淌出来的路。请大家不要再走回头路,可能只要我们代码加混淆,一点不对就会导致项目运行崩溃等后果,有许多人发现没有打包运行好好地,打包完成以后而又不不可以了,导致了许多困惑,本片文章来问大家解决困惑,希望对大家有帮助。Android混淆最佳实践1. 混淆配置android{buildTypes { release { buildConfigField "boolean", .转载 2021-02-25 16:53:13 · 332 阅读 · 0 评论