首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

让ProGuard只接触一个类

ProGuard是一个用于Java字节码的优化和混淆工具。它可以通过删除未使用的代码、压缩字节码以及重命名类、方法和字段来减小应用程序的大小,并提高应用程序的性能和安全性。

ProGuard的主要功能包括:

  1. 代码优化:ProGuard可以分析和优化字节码,删除未使用的代码和无效的类、方法和字段,从而减小应用程序的体积。
  2. 代码混淆:ProGuard可以重命名类、方法和字段的名称,使得代码难以被逆向工程分析和理解,提高应用程序的安全性。
  3. 资源压缩:ProGuard可以对资源文件进行压缩,减小应用程序的大小。
  4. 类型检查:ProGuard可以检查字节码中的类型错误和不一致,帮助开发人员发现潜在的问题。

对于只想让ProGuard只接触一个类的情况,可以通过配置ProGuard的规则文件来实现。在ProGuard的配置文件中,可以使用"-keep"指令来指定要保留的类、方法和字段。例如,要让ProGuard只接触一个名为"ExampleClass"的类,可以在配置文件中添加以下规则:

代码语言:txt
复制
-keep class com.example.ExampleClass { *; }

这将告诉ProGuard保留"com.example.ExampleClass"类及其所有成员。

腾讯云提供了一款名为"腾讯云混淆保护"的产品,可以帮助开发者保护应用程序的安全性。该产品可以对应用程序进行代码混淆、资源加密和反调试等操作,提高应用程序的安全性。更多关于腾讯云混淆保护的信息可以在腾讯云官网上找到:腾讯云混淆保护

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

一个参数Golang GC耗时暴降到130!

想确定 GC 频率是否真的存在问题,有两种方法: 在运行的时候增加 GODEBUG=gctrace=1 的环境变量, Golang runtime 在每次 GC 时往 stderr 输出信息; 使用...然后我们回到 trace 首页,找到最底下的 MMU 链接: 点进去可以看见一个图表,因为我们关注影响程序执行的 STW 阶段,所以右边勾选 STW: 先简单介绍一下这个图的理解方法: X 轴表示我们取一个多长的时间窗口...5.3 Memory Limit 当然,把 GOGC 调大会 Golang 从 OS 里申请的内存增多,但因为之前实在是太少了,增多之后也还在合理范围内。...单独看这个问题,因为 Web 应用大多不存在很大量的全局数据,所以配合上 GOGC 的默认值 100,很多高 QPS 的在线服务可能都会存在 GC 过于频繁,没有利用上申请的 Pod 内存的问题。...⚠️开发者请注意⚠️ 腾讯云开发者社区有奖征文活动限时开放中 21天不限题征文挑战赛,瓜分10000元现金 2023.10.29-11.30期间,在腾讯云开发者社区发布原创技术文章,发文达3/7/14

4.1K44

ProGuard 在 Android 上的使用姿势

ProGuard 除了可以大幅减少代码的空间之外,还可以所有的标识符(包、和成员)都使用更短的名字,如 a.A 和 a.a.B。这个过程就是混淆。...当您从 XML 资源引用您的代码会时(通常使用底层的反射),这个情况也会发生。 在一次 Android 典型的构建过程中,AAPT(处理资源的工具)会生成一个额外的 ProGuard 规则文件。...这会在下面的场景中发生: 当 ProGuard 移除过多的 在某些情况下,ProGuard 并不知道一个或者方法被使用了,例如这个仅在反射时被使用或者仅在 XML 中被引用。...作为一个可选的方案来写 ProGuard 规则,您可以直接在某个不想被混淆和移除的、方法、属性上添加 @Keep 注解。...右击树上的一个节点可以您生成一个 keep 规则以便您粘贴到您的配置文件中。

2.6K40
  • 优雅的一个在线程安全和线程非安全间切换

    一个良好的多线程库,不应当一刀切的全加锁。因为有些时候,虽然是多线程环境,但可能依照设计一个只会被一个线程操作,这个时候加锁是多余的,纯浪费性能,但另一些场景又需要它是线程安全的。...假设有一个X: class X { public:     void xoo(); }; 这里总结几个常见的做法: 1.本身不加锁,由调用者来加锁,坏处是如果多数场景都是加锁的,由会产生重复代码 class...第一个是无锁的,第二个通过聚合第一个,并用锁包装一下 class RawX { public:     void xoo()     {         // RawX总是不加锁     } };...        _raw_x.xoo();     } private:     CLock _lock;     RawX _raw_x; }; 下面提出一种在mooon中使用的相对更优雅的方法,引用一个空锁...class CNullLock { public:     void lock()     {     }     void unlock()     {     } }; 接下来看新的X的实现,需要将它变成一个模板

    39320

    通过Gradle为APK瘦身

    ProGuard 还会重命名你的和字段。这一过程将保留应用的踪迹,反编译工程师更加难以读懂代码。...为了解决这个问题,你可以定义ProGuard 规则,排除那些被删除或混淆的。我们可以使用proguardFiles 属性来定义包含ProGuard 规则的文件。...例如,为了保留一个,你可以像下面这样添加一条简单的规则: -keep public class getDefaultProguardFile(‘proguard-android.txt...另外一个使用案例是当你导入一个拥有很多资源的依赖库,而你使用了其中的一小部分时,你可以通过激活缩减资源来解决这个问题。缩减资源的方式有两种:自动和手动。 1....如果设置ProGuard 你感觉很困难,或者你仅仅想在应用中去除不支持的语言资源或密度,那么你可以使用resConfigs 来缩减资源。

    75520

    如何在10分钟内Android应用大小减少 60%?

    要添加更多各构建变体专用的 ProGuard 规则,请在相应的productFlavor代码块中再添加一个proguardFiles属性。...请注意,您每次使用 ProGuard 创建发布构建时都会覆盖mapping.txt文件,因此您每次发布新版本时都必须小心地保存一个副本。...keepclassmembers 保留中的成员,防止它们被混淆或移除。 keepclassmembernames 保留中的成员,防止它们被混淆,但当成员没有被引用时会被移除。...APK Analyser 将会拆解你的应用并你知道 .apk 文件中的那个部分占据了大量空间。让我们看一下 Anti-Theft 在没有经过优化之前的截图。 ?...如果你觉得文章非常不错的话那就转发一个呗,更多小伙伴看到;如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足,谢谢~

    85520

    Android-Proguard(混淆)

    : 检测并移除没有用到的,变量,方法和属性; optimize: 优化代码,非入口节点会加上private/static/final, 在字节码级别执行优化,应用运行的更快。。...除了proguard之外,还有一个DexGuard,是专门用来优化混淆Android应用的。它包括资源混淆,字符串加密,加密和dex文件分割等。....*  # 一颗星保持本包的名(不包含内容) -keep class com.xzt.demotwo.** # 二颗星表示保持本包和子包下的名(不包含内容) # 保持本包的名和内容 -keep...String类型的构造方法   } #在方法后加入参数,限制特定的构造方法 -keep class com.xzt.demotwo.MainActivity{ public (String); } #要保留一个中的内部类及其内容不被混淆需要用...参考:彭涛(@彭涛me) 致力于技术变得易懂且有趣

    1.4K40

    Android插件化、热补丁中绕不开的ProGuard的坑

    ProGuard简介 ProGuard是2002年由比利时程序员Eric Lafortune发布的一款优秀的开源代码优化、混淆工具,适用于Java和Android应用,目标是程序更小,运行更快,在Java...-- 局部变量重分配,比如在if外面初始化了一个变量,但是这个变量在if内部用到,这样就可以将变量移动的if内部去。...背景 在我们实施插件化、热补丁修复时,为了插件、补丁和原来的宿主兼容,必须依赖ProGuard的applymapping功能的进行增量混淆,但在使用ProGuard的applymapping时会遇到部分方法混淆错乱的问题...ProGuard代码优化可以解决这些问题,移除没有使用到的代码、优化指令、逻辑,以及方法内部的局部变量分配和内联,程序运行的更快、占用磁盘、内存更低。...初始化 ProGuard初始化会读取我们配置的proguard-rule.txt和各种输入以及依赖的库,输入的被ClassPool统一管理,我们的rule.txt配置了keep的条件,ProGuard

    1.6K60

    Java 混淆器

    可是没过几天,同样功能的轮子出现在你的眼前,关键是核心代码都一样,此时你的内心是否会像一万草泥马奔腾而过呢? 面对此景,我们有没有办法,去混淆一些核心代码,来捍卫自己劳动成果呢?...ProGuard一个压缩(shrink)、优化(optimize)和混淆(obfuscate) Java 字节码文件的免费的工具。...如官方图示(看不清,懵懂就行) ProGuard 会对输入的 JAR 文件按照压缩、优化、混淆、预验证的顺序依次进行处理,最后得到输出 JAR 文件; ProGuard 使用依赖库(Library jars...)来辅助对 Input jars 之间的依赖关系进行解析,但是依赖库本身不会被处理,也不会被包含到 Output jars 中。...保护你劳动成果的方式有很多种,本次 2 分钟简单的分享,只是你们知道有 ProGuard 这款技术轮子存在,有太多的细节需要去实践,大家可以按需,自行按照官网进行深入使用。

    1.6K10

    【Android 安全】DEX 加密 ( Proguard 简介 | 默认 ProGuard 分析 )

    文章目录 一、Proguard 配置简介 二、Proguard 完整注释 一、Proguard 配置简介 ---- 更多 ProGuard 混淆配置参考 : https://www.guardsquare.com...保留这些成员 : # 保留这些成员 -keep public class com.google.vending.licensing.ILicensingService 5 ....保留被注解声明的 : 被 @android.support.annotation.Keep 注解修饰的不被混淆 ; # 保留被 @android.support.annotation 注解声明的...# 如果想要启用优化 , 不能ProGuard 项目配置中将优化标志设为 true ; # 相反还要在 build.gradle 中指向 "proguard-android-optimize.txt...native -keepclasseswithmembernames class * { native ; } # 不要混淆继承自 View 的 get set 函数 , 以便动画可以继续工作

    49900

    如何在10分钟内Android应用大小减少 60%?

    要添加更多各构建变体专用的 ProGuard 规则,请在相应的productFlavor代码块中再添加一个proguardFiles属性。...请注意,您每次使用 ProGuard 创建发布构建时都会覆盖mapping.txt文件,因此您每次发布新版本时都必须小心地保存一个副本。...proguard中一共有三组六个keep关键字的含义 keep 保留中的成员,防止它们被混淆或移除。 keepnames 保留中的成员,防止它们被混淆,但当成员没有被引用时会被移除。...keepclassmembers 保留中的成员,防止它们被混淆或移除。 keepclassmembernames 保留中的成员,防止它们被混淆,但当成员没有被引用时会被移除。...APK Analyser 将会拆解你的应用并你知道 .apk 文件中的那个部分占据了大量空间。让我们看一下 Anti-Theft 在没有经过优化之前的截图。

    1.6K10

    混淆技术 发布于 2023年05月30

    在Android开发中,最常用的混淆工具是ProGuard。以下是一些常见的Android混淆工具: ProGuard:这是一个开源的Java文件混淆器,也是Android官方推荐的混淆工具。...与ProGuard相比,DexGuard提供了更强大和多样的混淆选项,包括字符串加密、加密、资源混淆等。 R8:这是Google开发的一个新的混淆工具,目标是取代ProGuard。...这些规则是在proguard-rules.pro文件中定义的,这个文件通常位于应用模块的根目录中。在这个文件中,可以添加一些保留规则,告诉ProGuard不要混淆某些、方法或者变量。...例如,开发者可能希望ProGuard不要混淆模型,因为这些的字段可能被用作JSON的键: -keep class com.example.myapp.models.** { *; } 或者开发者也可以使用...虽然反混淆有其合法和合理的用途,如在调试时理解和修复混淆代码中的问题,但是也存在一些可能涉及不道德行为的情况: 侵犯版权:在没有明确授权的情况下反混淆他人的代码,可能侵犯了他们的版权,因为你正在接触和修改他们的知识产权

    39730

    代码加密 android,Android 开发怎样做代码加密或混淆「建议收藏」

    放在哪里都是一件人崩溃的事情。华清创客学院Android开发讲师在这里和读者一起交流一下怎样做代码加密或混淆这个问题?...1、 特定的public函数不做实际的事情,做简单处理后调用private函数。...proguard对会对一些特定的public函数不做混淆,以便被AndroidManifest.xml和各种layout引用。...2、会被AndroidMinifest.xml和layout引用的放在浅层的包中,需要隐藏的放在较深处,以便proguard混淆包名带来好处。...如果一个包中有需要不混淆的内容,则整个包名都不会被混淆。 3、将函数根据功能分细切短也会有些益处。当然如果隐藏代码的要求比较高,还是用native好了。 一般情况下,这样简单的三步下来。

    88510

    在 Android Instant App(安卓即时应用程序)中启用 ProGuard (混淆)

    现在我们明白了为什么 ProGuard(混淆)会失败了,是时候解决这个问题了:确保我们为项目配置添加必要的保留规则,以防止在不同模块(在一个模块中定义,在另一个中使用)之间的被移除或混淆。...为你所有的即时应用功能启用 ProGuard(混淆) 在可安装的应用程序版本构建过程中,ProGuard(混淆)运行一次:在使用 com.android.application 插件的模块中。...为从资源文件中出现的跨模块添加保留规则 我们差不多完成了,但还有一个细节需要我们处理。...---- 希望本指南能够你更好地理解为什么 ProGuard(混淆)可以使你的即时应用程序崩溃。遵循这些步骤应该能带你完成构建,并防止你的即时应用程序崩溃。...但这会本教程的其余部分(例如筛选框架)变得更加复杂,所以我将它作为练习给读者你。

    2.6K30

    Android开发笔记(七十三)代码混淆与反破解

    /proguard/proguard-android.txt:proguard-project.txt 下面是proguard-project.txt的一个例子: #指定代码的压缩级别 -optimizationpasses...4、jar包的文件名中不要有特殊字符,比如说“(”、“)”等字符在混淆时就会报错,文件名最好包含字母、横线、小数点。 5、使用WebView时,会被js调用的和方法,要屏蔽混淆。...fields>; public ; } 防二次打包 前面的《Android开发笔记(七十)反编译初步》提到,apk破解得到smali文件后,可以进行修改并重新打包,从而制造一个山寨的...花指令 代码混淆通过对名和方法名重命名,只是加大了破解的难度,但并不能完全阻止代码被破解。有个办法就是通过反编译程序出错,使得代码破解失败,花指令便是这样一种思想。...花指令(junk code)意思是程序中加入一些与业务无关的指令,希望在反汇编的时候出错,破解者无法正确地进行反汇编工作,从而迷失方向。

    1.8K40

    Android安全攻防战,反编译与混淆技术完全解析(下)

    混淆代码并不是代码无法被反编译,而是将代码中的、方法、变量等信息进行重命名,把它们改成一些毫无意义的名字。...keepclassmembernames 保留中的成员,防止它们被混淆,但当成员没有被引用时会被移除。...除此之外,proguard中的通配符也比较人难懂,proguard-android.txt中就使用到了很多通配符,我们来看一下它们之间的区别: 通配符 描述 匹配中的所有字段 <method...中的规则,但是直接在proguard-android.txt中修改会对我们本机上所有项目的混淆规则都生效,那么有没有什么办法针对当前项目的混淆规则做修改呢?...当然是有办法的了,你会发现任何一个Android Studio项目在app模块目录下都有一个proguard-rules.pro文件,这个文件就是用于让我们编写适用于当前项目的混淆规则的,那么接下来我们就利用刚才学到的所有知识来对混淆规则做修改吧

    1.7K70

    Android Proguard(混淆)

    (下面会讲) 除了proguard之外,还有一个DexGuard,是专门用来优化混淆Android应用的。它的功能包括资源混淆,字符串加密,加密和dex文件分割等。...我们也可以把proguard的参数写到一个配置文件中,比如说proguard.cfg。...在optimize这一阶段有效。这个选项的使用难度较高。 -optimizationpasses n 指定执行几次优化,默认情况下,执行一次优化。...如果声明保护一个,并没有指定受保护的成员。proguard只会保护它的名和它的无参构造函数。其它成员依旧会被压缩、优化、混淆。...allowobfuscation 与前几个类似,修饰-keep,参与混淆阶段,但是不参与压缩和优化阶段。 的匹配 ---- Class Specification是指一个成员的模板。

    2.6K30

    Maven - 代码混淆Proguard踩坑记

    Pre Maven - 代码混淆proguard-maven-plugin vs 代码加密classfinal 概述 ProGuard一个Java代码混淆工具,它可以你的Java程序变得更小、更快,...ProGuard主要做了三件事: 压缩代码 - 它会删除程序中没有用到的、属性和方法,程序变小。 优化代码 - 它会优化代码结构,程序运行更快。...混淆代码 - 它会把名、属性名和方法名改成难懂的名字,代码变得很难看懂。...所以ProGuard只是增加了反编译的难度,并不能完全防止代码被反编译。 总之,ProGuard一个很好用的Java代码混淆工具,可以保护你的代码,你的程序变小变快。...可以尝试使用Proguard的-keep指令保留这些。 反射相关错误:如果项目中使用了反射,确保在Proguard配置中保留相关和方法。

    58700

    【Android 安装包优化】开启 ProGuard 混淆 ( 压缩 Shrink | 优化 Optimize | 混淆 Obfuscate | 预检 | 混淆文件编写 | 混淆前后对比 )

    中 开启 Proguard , 在编译时 , 会自动进行如下一系列优化 : 压缩 Shrink : 检查 并 删除 没有使用的 , 字段 , 方法 , 属性 ; 这里要注意 , 如果通过反射使用一个时...层代码 , 使用无意义的标识符替代 Java 中的名 , 变量名 , 方法名 等名称 ; 预检 Preveirfy : 预检 Java 平台上预处理的代码 ; 开启 ProGuard 配置...minifyEnabled true 配置 , 并配置 proguardFiles 混淆配置文件 , 在 Android Studio 中 , 一般会生成一个默认的混淆配置文件 ; android {..., 如果出现警告 , 编译打包会被终止 ; # com 包名下不要爆出警告 -dontwarn com.** " -keep " : 不要混淆的 ; # com 包名下的不要混淆 -keep class...com.android.support:appcompat 支持库配置 vectorDrawables.useSupportLibrary = true // 国际化资源配置, 打包默认资源与英文资源

    3.9K20

    创建Android库的方法及Android .aar文件用法小结

    与 JAR 文件不同,AAR 文件可以包含 Android 资源和一个清单文件,这样,除了 Java 与方法外,您还可以捆绑布局和可绘制对象等共享资源。...每个库模块都会创建自己的 R 在您构建相关应用模块时,库模块将先编译到 AAR 文件中,然后再添加到应用模块中。因此,每个库都有其自己的 R ,并根据库的软件包名称命名。...从主模块和库模块生成的 R 会在所需的所有软件包(包括主模块的软件包和库的软件包)中创建。...当 ProGuard 在 Android 应用模块上运行时,它会同时使用来自应用模块和库的指令,因此您不应当在库上运行 ProGuard。...Android 中.aar文件生成方法与用法 前言 无论是用Eclipse还是用Android Studio做android开发,都会接触到jar包,全称应该是:Java Archive,即java归档文件

    3K10
    领券