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

用yGuard混淆Gradle中的Java ~如何排除枚举?

yGuard是一个用于Java字节码混淆和加密的工具。它可以通过修改Java字节码来隐藏代码逻辑和程序结构,从而增加代码的安全性和保护知识产权。yGuard提供了一系列的混淆技术,包括重命名类、方法和字段,删除调试信息和元数据,以及加密字符串等。

在Gradle中使用yGuard混淆Java代码,可以通过以下步骤来排除枚举:

  1. 首先,在Gradle项目中添加yGuard插件的依赖。可以通过在项目的build.gradle文件中的dependencies部分添加以下代码来实现:
代码语言:txt
复制
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.yworks:yguard-gradle-plugin:<version>'
    }
}

apply plugin: 'com.yworks.yguard'

其中,<version>需要替换为yGuard插件的实际版本号。

  1. 确保项目的枚举类已经定义在Gradle的源代码目录中。如果枚举类位于依赖库中,需要将其复制到源代码目录中,以便yGuard能够正确处理。
  2. 在项目的build.gradle文件中,添加yGuard的混淆配置。可以通过以下代码示例来进行配置:
代码语言:txt
复制
yguard {
    configs {
        main {
            rename 'com.example.myapp.**'
            excludeEnum 'com.example.myapp.MyEnum'
        }
    }
}

其中,com.example.myapp.**需要替换为实际的包名,用于指定需要混淆的类。com.example.myapp.MyEnum需要替换为实际的枚举类全名,用于排除指定的枚举类。

  1. 运行Gradle任务来执行yGuard混淆。可以通过在终端或命令行中输入以下命令来执行:
代码语言:txt
复制
./gradlew yguard

执行完毕后,生成的混淆后的字节码文件将位于指定的输出目录中。

推荐的腾讯云相关产品:腾讯云云服务器(https://cloud.tencent.com/product/cvm)

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

相关·内容

聊聊如何进行代码混淆

生成新名称越短,字节代码越小。在名称混淆字节代码,包,类,字段和方法名称已重命名,并且永远不能恢复原始名称。不幸是,控制流程仍然清晰可见。...通常情况下,选择和循环等逻辑构造会被更改,因此它们不再具有直接等效Java源代码。流模糊字节码通常强制反编译器将一系列标签和非法goto语句插入到它们生成源代码。...因此,对于对安全性要求很高场合,仅仅使用代码混淆并不能保证源代码安全。 常用混淆工具 1、yGuard yGuard是一款免费Java混淆器(非开源),它有Java和.NET两个版本。...yGuard 完全免费,基于 Ant 任务运行,提供高可配置混淆规则。...官网地址:https://www.yworks.com/products/yguard 2、proguard proguard是一个免费 Java类文件压缩,优化,混肴器。

3.4K40

App加固代码混淆功能,让逆向工程师很头疼

代码混淆逻辑便是如此,代码开发者们为了隐藏目的,会在代码里加入各种多余垃圾指令和代码,把原来逻辑拆分成各种怪癖语法,从而达到防破解目的。 如何做代码混淆?...在名称混淆字节代码,包,类,字段和方法名称已重命名,并且难以恢复原始名称。...对于Java来说,常用混淆工具如下: 1、Ipa Guard Ipa Guard是一个免费 ,Ipa Guard是一款功能强大ipa混淆工具,不需要ios app源码,直接对ipa文件进行混淆加密...2、yGuard yGuard是一款免费Java混淆器(非开源),它有Java和.NET两个版本。yGuard 完全免费,基于 Ant 任务运行,提供高可配置混淆规则。...3、allatori 第二代Java混淆器。所谓第二代混淆器,不仅仅能进行字段混淆,还能实现流混淆。 代码混淆不等于加密 那么,混淆等同于加密吗? 答案当然是否定

34740
  • 读懂 Android 代码混淆

    在Android开发工作,我们都或多或少接触过代码混淆。比如我们想要集成某个SDK,往往需要做一些排除混淆操作。 本文为本人一些实践总结,介绍一些混淆知识和注意事项。...如何开启混淆 通常我们需要找到项目路径下app目录下build.gradle文件 找到minifyEnabled这个配置,然后设置为true即可....如何解决 将序列化和反序列化排除混淆 使用@SerializedName注解字段 @SerializedName(parameter)通过注解属性实现了 序列化结果,指定该属性key为parameter...("id") public int id; 枚举也不要混淆 枚举Java 5 引入一个很便利特性,可以很好替代之前常量形式....); static {}; } 枚举实际是创建了一个继承自java.lang.Enumjava代码枚举类型最后转换成类static final属性 多出了两个方法,values()和

    1.6K20

    Android组件化架构

    组件化混淆 Android Studio使用ProGuard进行混淆,它是一个压缩、优化和混淆Java字节码文件工具,可以删除无用类和注释,最大程度优化字节码文件。...组件化,如果每个module都使用自身混淆,会出现重复混淆现象,造成查询不到资源文件问题。我们需要保证apk生成时候只需要一次混淆。...方案:将固定第三方库混淆放到CommonModule,每个module独有的引用库混淆放在各自proguard-rules.pro,最后在App proguard-rules.pro中放入Android...我们需要输出多个App时,维护和开发成本会提升,如何降低开发成本,并且合理解耦呢,就需要使用到多渠道了。...对于不同渠道需要引入新类或文件,可在项目目录下新建不同渠道文件夹,将文件放入其中,各为其

    1.1K10

    详解Android反编译和代码混淆

    2、dex2jar(源文件获取) 作用:将APK反编译成java源码(classes.dex转化成jar文件) 3、jd-gui 作用:查看APKclasses.dex转化成jar文件,即源码文件...smali是将Android字节码可阅读字符串形式表现出来一种语言,可以称之为Android字节码反汇编语言。 代码混淆 只能混淆java类,不能混淆资源文件。系统定义组件不能混淆。...如何实现代码混淆 混淆类文件 修改module:app下build.gradle buildTypes { release { //是否需要混淆,默认false代表不混淆,...#列出从 apk 删除代码 -printusage unused.txt #混淆前后映射 -printmapping mapping.txt ########记录生成日志数据,gradle build...); java.lang.Object writeReplace(); java.lang.Object readResolve(); } #保持枚举 enum 类不被混淆 如果混淆报错,建议直接使用上面的

    1K20

    Android 实现代码混淆实例

    2、如何开启混淆 通常我们需要找到项目路径下app目录下build.gradle文件,找到minifyEnabled这个配置,然后设置为true即可,如下: release { minifyEnabled...泛型不混淆 -keepattributes SourceFile,LineNumberTable 抛出异常时保留代码行号 最多指令 -keep class XXXX 保留类名不变,也就是类名不混淆...,而类成员名不保证。...使用注解元素 四大组件 WebView与JS交互枚举 等 6、混淆文件编写 按照以上规则和基本语句,我们将混淆文件分为两个区域: 定制化区域:分为实体类、第三方、js相关、反射相关,...第三方包 需到项目的build.gradle文件中找到所有添依赖,然后去官网或者github找到对应混淆代码,添加到我们自己混淆文件

    95841

    Android 混淆那些事儿

    本文主要讲述了代码混淆和资源混淆原理,Studio默认混淆方案,混淆参数,以及如何对Apk进行代码混淆(自定义混淆文件)和资源混淆(结合微信混淆和美团混淆两种方案),避免Apk被逆向。...混淆原理 Java 是一种跨平台、解释型语言,Java 源代码编译成class文件中有大量包含语义变量名、方法名信息,很容易被反编译为Java 源代码。...,不同gradle版本带有不同默认混淆文件,在项目根目录build/intermediates/proguard-files/proguard-android.txt-2.3.3(笔者gradle...: 上面讲述了如何进行代码混淆,再来讲讲如何对资源文件进行混淆。...(1)微信资源混淆方案: 微信资源混淆是自己做了一个安装包解压并且7z极限压缩打包器,修改内容也是resources.arsc,优点是可以最大地混淆,不依赖源码与编译过程,无需在编译过程修改源文件

    3.2K50

    Android 混淆从入门到精通

    说在前面 这里我们直接Android Studio来说明如何进行混淆,Android Studio自身集成Java语言ProGuard作为压缩,优化和混淆工具,配合Gradle构建工具使用很简单,只需要在工程应用目录...gradle文件设置minifyEnabled为true即可。...原则上,代码混淆后越乱越无规律越好,但有些地方我们是要避免混淆,否则程序运行就会出错,所以就有了下面我们要教大家如何让自己部分代码避免混淆从而防止出错。...,又想保持里面的内容不被混淆,我们就需要以下方法了 -keep class cn.hadcn.test.* {*;} 在此基础上,我们也可以使用Java基本规则来保护特定类不被混淆,比如我们可以extend...自定义View默认也不会被混淆;所以像网上贴很多排除自定义View,或四大组件被混淆规则在Android Studio是无需加入; 与服务端交互时,使用GSON、fastjson等框架解析服务端数据时

    1.4K90

    聊聊如何进行代码混淆加固

    ​  聊聊如何进行代码混淆 前言什么是代码混淆代码混淆,是指将计算机程序代码,转换成一种功能上等价,但是难于阅读和理解形式行为。...代码混淆常见手段1、名称混淆 将有意义类,字段、方法名称更改为无意义字符串。生成新名称越短,字节代码越小。在名称混淆字节代码,包,类,字段和方法名称已重命名,并且永远不能恢复原始名称。...通常情况下,选择和循环等逻辑构造会被更改,因此它们不再具有直接等效Java源代码。流模糊字节码通常强制反编译器将一系列标签和非法goto语句插入到它们生成源代码。...因此,对于对安全性要求很高场合,仅仅使用代码混淆并不能保证源代码安全。 常用混淆工具1、ipaguard ipaguard是一款免费Java混淆器(非开源),它有Java和.NET两个版本。...yGuard 完全免费,基于 Ant 任务运行,提供高可配置混淆规则。

    32820

    Android高频面试专题 - 架构篇(一)AS项目架构

    日常开发AS与Gradle架构使用技巧高频面试问题。...或者debug包 4、几种依赖区别 compile:我们最常用依赖,编译时提供并打包进apk provided:编译时提供但不打包进apk 在gradlew 3.0 complie过期了,implementation...设置为false排除所有的传递依赖 force:强制设置某个模块版本 6、Gradle打包时混淆 通过在buildTypes配置minifyEnable来开启和关闭proguard 通过proguardFiles...来配置混淆参数与keep内容 通过shrinkResources 去除没有用到资源文件 7、Gradle依赖统一配置管理 在根目录下创建自定义名字.gradle文件,例如:config.gradle...打开项目根目录下build.gradle, 在最顶上依赖我们刚刚创建配置文件apply from: "xxx.gradle" 在app模块下build.gradle引用即可:compile

    1.4K10

    Android Gradle知识梳理

    Gradle 安装 1.安装JDK,并配置JAVA_HOME环境变量。因为GradleGroovy编写,而Groovy基于JAVA。另外,Java版本要不小于1.5. 2.下载。...另外,可以通过GRADLE_OPTS或JAVA_OPTS来配置Gradle运行时JVM参数。不过,JAVA_OPTS设置参数也会影响到其他JAVA应用程序。...这个操作其实就是一个Groovy代码写闭包,代码task是Project类里一个方法,通过调用这里task方法创建了一个Task对象,并在对象doLast方法传入println 'Hello...其实可以第三方反编译工具(比如jadx:https://github.com/skylot/jadx ),打开apk后,一眼就能看到引用所有第三方库包名,把所有不想混淆或者不确定能不能混淆,直接都添加又有何不可...第二个技巧 一般release版本混淆之后,像友盟这样统计系统如果有崩溃异常,会记录如下: java.lang.NullPointerException: java.lang.NullPointerException

    70920

    Android-Proguard(混淆)

    如果我们app正常发布就必须要经历混淆这一步,混淆可以使我们app不那么容易被别人反编译工具破解,就算被破解,想要读懂我们源码也是非常费劲,因为混淆源码类和类成员会被随机命名,代码非常乱和没有规律...以我们常用开发工具andorid studio 为例,Android Studio自身集成Java语言ProGuard作为压缩,优化,混淆和预校验,并配合Gradle工具进行构建,我们只需要在工程应用目录...build.gradle文件设置minifyEnabled为true,然后可以到proguard-rules.pro文件中加入我们混淆规则即可。...刚才是开启混淆,那我们如何关闭,比如关闭压缩,关闭优化呢? ?...自定义View默认也不会被混淆;所以像网上贴很多排除自定义View,或四大组件被混淆规则在Android Studio是无需加入; 4,与服务端交互时,使用GSON、fastjson等框架解析服务端数据时

    1.3K40

    通过Gradle为APK瘦身

    本文选自《Gradle for Android 中文版》,将研究如何设置Gradle 构建配置文件几个属性,以缩小APK 文件。...ProGuard ProGuard 是一个Java 工具,其不仅可以缩减APK 文件大小,还可以在编译期优化、混淆和预校验你代码。其通过你应用所有代码路径,来找到未被使用代码,并将其删除。...为了解决这个问题,你可以定义ProGuard 规则,排除那些被删除或混淆类。我们可以使用proguardFiles 属性来定义包含ProGuard 规则文件。...除了缩减Java 代码外,还可以缩减使用过资源。 缩减资源 当给App 打包时,GradleGradle Android 插件可以在构建期间删除所有未使用资源。...下面的代码片段展示了在某个构建类型如何配置自动化资源缩减: android { buildTypes { release { minifyEnabled = true

    74220

    Android制作AAR包并混淆后加载调用

    4.修改Gradle配置 修改build.gradle配置,将pluginsapplication改为library,然后将defaultConfig下面的applicationId屏蔽。...5.代码混淆 同样刚才build.gradle文件,将minifyEnabled改为true即可混淆,下面的zipAlignEnabled可加可不加。...自定义控件不进行混淆 枚举类不被混淆 反射类不进行混淆 实体类不被混淆 JS调用Java方法 四大组件不进行混淆 JNI调用类不进行混淆 Layout布局使用View构造函数、android:onClick....* {*;} 在此基础上,我们也可以使用Java基本规则来保护特定类不被混淆,比如我们可以extend,implement等这些Java规则。...>; } 表示One类下所有public方法都不会被混淆,当然你还可以加入参数,比如以下表示JSONObject作为入参构造函数不会被混淆 -keep class cn.hadcn.test.One

    5K30

    【Android Gradle 插件】Android Library 依赖库混淆配置 ( ProductFlavor#consumerProguardFiles 配置 | 依赖库混淆配置 )

    在 ProductFlavor consumerProguardFiles 配置 , 是用于配置 Library 依赖库混淆文件 ; ProductFlavor#consumerProguardFiles...发布AAR要包含ProGuard规则文件。...二、依赖库混淆配置 ---- Android Application 主工程 经常需要 引用 Library 依赖库工程 , Library 依赖库工程 源码 一般也需要进行混淆 , 在 Library...工程中有 2 种方式配置混淆文件 , 方式一 : 在 android#buildTypes#release#proguardFiles 配置混淆文件 ; 方式二 : 在 android#defaultConfig...#consumerProguardFiles 配置混淆文件 ; android#defaultConfig#consumerProguardFiles 配置混淆文件会传递给 引用该依赖库 工程

    47810

    java访问控制有什么如何用法?请举例

    9.访问控制  【新手可忽略不影响继续学习】 访问控制有什么?...在软件公司里是这么,我们想像一种场景,在你,你编了三个私有方法,马克-to-win,别人当然都用不了,但在类外,你也是用不了,你必须,在类里再编一个公共方法,别人就能随便用了!...如果大家有需求建议说你把顺序改成321,他们得经过你同意,把这顺序为321公共方法,重新加入你,重新在你自己网站打包发布,所以保护了你知识产权马克-to-win。  ...Java访问指示符分类1.public(公共,全局)2.private(私有的,局部)3.protected(受保护)4.默认访问级别。 ...public:public成员可以被你程序任何其他代码访问。  private :private成员只能被它其他成员访问。 默认访问级别:如果不使用访问指示符,该类成员为默认访问。

    40020

    关于AndroidStudio混淆打包 proguard-rules.pro 配置关于AndroidStudio混淆打包 proguard-rules.pro 配置

    关于AndroidStudio混淆打包 proguard-rules.pro 配置 最近在搭建一个APP时候,使用了混淆打包方式,然后发现死活打包不上。...,gradle build时在本项目根目录输出## #apk 包内所有 class 内部结构 -dump class_files.txt #未混淆类和成员 -printseeds...seeds.txt #列出从 apk 删除代码 -printusage unused.txt #混淆前后映射 -printmapping mapping.txt ######...##记录生成日志数据,gradle build时 在本项目根目录输出-end###### #####混淆保护自己项目的部分代码以及引用第三方jar包library####### #-libraryjars...(); } #保持枚举 enum 类不被混淆 如果混淆报错,建议直接使用上面的 -keepclassmembers class * implements java.io.Serializable

    1.2K20

    Android开发:请你吃一顿史上最全Android混淆大餐

    好处有哪些?具体效果如何?别急,下面我们来一一探索它"独特"魅力。 混淆简介 代码混淆(Obfuscated code)是将程序代码以某种规则转换为难以阅读和理解代码一种行为。...Android 当中混淆 在 Android ,我们平常所说"混淆"其实有两层意思,一个是 Java 代码混淆,另外一个是资源压缩。...以上代码 proguard-android.txt 表示 Android 系统为我们提供默认混淆规则文件,而 proguard-rules.pro 则是我们想要自定义混淆规则,至于如何自定义混淆规则我们将在接下来会讲到...它能够将类、变量和方法名字重命名为无意义名称从而达到混淆效果 最后,它还会校验处理后代码,主要针对 Java 6 及以上版本和 Java ME 资源压缩 Android ,编译器为我们提供了另外一项强大功能...庆幸是,Android 系统默认混淆规则已经添加了对于枚举处理,我们无需再去做额外工作。想了解更多枚举内部细节可以去查看源码,篇幅有限不再细说。

    4.5K30

    一篇文章带你领略Android混淆魅力

    2 Android当中混淆 在 Android ,我们平常所说"混淆"其实有两层意思,一个是 Java 代码混淆,另外一个是资源压缩。...以上代码 proguard-android.txt 表示 Android 系统为我们提供默认混淆规则文件,而 proguard-rules.pro 则是我们想要自定义混淆规则,至于如何自定义混淆规则我们将在接下来会讲到...它能够将类、变量和方法名字重命名为无意义名称从而达到混淆效果 最后,它还会校验处理后代码,主要针对 Java 6 及以上版本和 Java ME 2.3 资源压缩 Android ,编译器为我们提供了另外一项强大功能...首先,我们来了解一下常见混淆命令。 3.1 -keep 这里说 keep 命令指的是一系列以 -keep 开头命令,它主要用来保留 Java 不需要进行混淆元素。...庆幸是,Android 系统默认混淆规则已经添加了对于枚举处理,我们无需再去做额外工作。想了解更多枚举内部细节可以去查看源码,篇幅有限不再细说。

    95920
    领券