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

当我运行proguard时,我可以将jar文件中的所有内容保存在一句话中吗?

当您运行ProGuard时,可以使用"-keep"选项来保留jar文件中的特定内容。"-keep"选项用于指定要保留的类、方法、字段等。您可以使用通配符来匹配多个类或方法。

以下是一个示例命令行参数,用于将jar文件中的所有内容保存在一句话中:

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

这个命令将保留com.example包及其子包中的所有类和成员。

请注意,使用"-keep"选项可能会导致生成的代码变得庞大,因为它会保留所有指定的内容。因此,在使用此选项时,需要权衡代码大小和混淆效果之间的平衡。

对于更详细的ProGuard用法和选项,请参考腾讯云的ProGuard产品文档:ProGuard产品介绍

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

相关·内容

ProGuard 在 Android 上的使用姿势

每个 Android 应用都应该使用代码压缩吗?我认为是的! 但是在您激动的跳起来之前,请先继续阅读下去。当您开启 ProGuard 时,在某些非常微妙的情况下会让您的应用崩溃。...简单来说,ProGuard 将您项目中的 .class 文件做为输入,然后寻找代码中所有的调用点,计算出代码中所有可达的调用关系图,然后移除剩余的部分(即不可达的代码和那些不会被调用的代码)。...在您可以测试是否开启 ProGuard 后所有代码在运行时都能正常工作前,您需要先构建您的应用。...keep 住),keep 住指定的一些成员 **keepclasseswithmembers **— 当且仅当所有的成员在匹配的类中存在时,会 keep 住 这些类和它的成员 我建议您从 ProGuard...ProGuard 和 混淆后的堆栈 我之前提及到,在构建过程中 ProGuard 会在处理类文件时输出映射关系和日志文件。当您需要保留构建产物时,您应当保存好这些文件和 APK 在一起。

2.6K40

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

**因此,与可安装的应用程序构建相反,ProGuard(混淆)可以独立运行在每个功能模块的代码中。...对于该文件的初始内容,您应该复制并粘贴可安装应用程序中的规则(从本指南的第 1 步中)。...如果你愿意,不必为每个功能创建单独的规则文件,您可以使用相对路径(例如「../ aia-proguard-rules.pro」)将所有功能模块指向单个文件。 3....使用一点 shell 魔法(我在后面的所有命令都是基于 Linux 系统的 bash命令),我们可以得到 ProGuard(混淆)规则中需要保留的类的列表: $ apkanalyzer dex packages...请记住通过运行应用程序并检查所有可能的情况来彻底进行测试,因为某些错误只能在运行时发生。 ---- 希望本指南能够让你更好地理解为什么 ProGuard(混淆)可以使你的即时应用程序崩溃。

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

    c类中只有一个a方法,从字符串的内容我们可以看出,这个是Utils类中的methodNormal()方法。 我为什么要创建这样的一个项目呢?...好了,这就是proguard-android.txt文件中所有默认的配置,而我们混淆代码也是按照这些配置的规则来进行混淆的。经过我上面的讲解之后,相信大家对这些配置的内容基本都能理解了。...混淆Jar 在本篇文章的第二部分我想讲一讲混淆Jar包的内容,因为APK不一定是我们交付的唯一产品。...首先我们写的都是Java代码,Java代码的运行要基于Jre基础之上,没有Jre计算机将无法识别Java的语法,因此第一个要依赖的就是Jre的rt.jar。...不过细心的朋友可能会发现,我在上面整理出了五个依赖的Jar包,但是在图中却添加了六个。这是我在写这篇文章时碰到的一个新的坑,也是定位了好久才解决的,我觉得有必要重点提一下。

    1.7K70

    深入探索 Android 包瘦身(上)

    此外,每当在 res 文件夹下放一个文件时,aapt 就会自动生成对应的 id 并保存在 .R 文件中,但 .R 文件仅仅只是保证编译程序不会报错,实际上在应用运行时,系统会根据 ID 寻找对应的资源路径...,它可以 浏览任何的 Android 可执行文件,并且检查出信息,比如类的接口、成员变量等等,此外,它还可以支持多种格式,比如说 APK、Jar、Class、So 以及所有的 Android 二进制文件如清单文件等等...此外,我们也可以在配置混淆文件将 android.util.Log 置为无效代码,以去除 apk 中打印日志的代码。而 proguard-rules.pro 是该模块下的混淆配置。...$JavaScriptInterface { public *; } # 仅希望保护类下的特定内容时需使用匹配符 ; //匹配所有构造器 ; //匹配所有字段...ProGuard 在删除所有跟踪(包括组成日志消息的字符串操作)方面更有效。 2)、ProGuard 中应用的模式匹配算法可以识别和替换短指令序列,从而提高代码效率并为更多优化打开了机会。

    2.1K30

    “码码”再也不用担心我的代码被反编译了!

    它还可以使用简短的无意义的名称来重命名已经存在的类、字段、方法和属性。...四、使用proguard工具对挑选出来的特定.jar进行代码混淆 (1)通过eclipse将工程中com.stkj.action包下的所有类,打包成com.stkj.action.jar。...此.jar 用于代码混淆测试 (2)运行proguardgui.jar文件。 或者右键选择java(TM)运行。打开proguard图形界面工具。...对于复杂的混淆来说,图形界面中没有的属性,就要参考proguard提供的使用文件,按照自己想要的要求在.pro文件中配置了。其实proguard的使用关键就是编写这个配置文件。..., proguard将会按照配置文件中描述的内容,对com.stkj.action.jar 进行执行。 执行中注意出现的问题。执行成功后会有提示成功的信息。

    3K60

    Android Proguard(混淆)

    在查找类库的时候,proguard运行时的类库是不算在内的。需要指明的是应用在运行时依赖的类库。...元素名已经存在在mapping文件中的元素,按照映射表重命名;没有存在到mapping文件的元素,重新赋一个新的名字。mapping文件可能引用到输入文件中的类和类库中的类。...正常的编译器会自动处理他们,并且输出出来的jar包也可以轻易的换个字典再重新混淆一次。最有用的做法一般是选择已经在类文件中存在的字符串做字典,这样可以稍微压缩包的体积。...目标文件针对java6的情况下,预校验是可选的;针对java7的情况下,预校验是必须的,除非目标运行平台是Android平台,设置它可以节省一点点时间。...(这里我也看不太懂,压缩阶段不是依赖keep声明的入口节点吗?) allowoptimization 修饰-keep, 声明一个元素可以被优化,即使它已经声明被保护。

    2.7K30

    Android插件化基础3----Android的编译打包流程详解

    系统资源的build/tools/zipalign目录,它的主要工作是将apk包进行对齐处理,使apk包中的所有资源文件举例文件起始偏移为4字节的整数倍,这样通过内存映射访问apk时的速度会更快,验证apk...ProGuard的工具目录.png bin目录: bin目录中包含了几个bat和shell脚本,通过这些脚本可以直接执行proguard.jar,proguardgui.jar和retrace.jar...如果将bin目录添加到环境变量中,就可以直接在命令行中执行progurad,proguardgui和retrace命令了,避免每次都要输入 java -jar + lib目录: lib目录包含了Proguard...混淆之后的jar文件执行过程如果出现异常,生成的异常信息将很难被解读,方法调用的堆栈都是一些混淆之后的名字,通过retrace.jar可以将异常的堆栈信息中的方法名还原成混淆前的名字,方便程序解决bug...有一种思路是,在我们使用自定义View时,前面都必须加上我们的包名,比如com.a.b.customeview,我们可以遍历所有Layout下的XML布局文件,查找所有匹配com.a.b的标签即可 2.3

    2.1K22

    android开发笔记之 Android代码混淆打包

    三, 是我们的java 元素名称是在配置文件中配置好的。 所以使用proguard时,我们需要有个配置文件告诉proguard 那些java 元素是不能混淆的。...-flattenpackagehierarchy {package_name} 重新包装所有重命名的包并放在给定的单一包中 -repackageclass {package_name} 重新包装所有重命名的类文件中放在给定的单一包中...:proguard-project.txt”这行前的“#”删除即可; 2.修改混淆配置文件:找到项目根目录下的proguard-project.txt文件,修 改其中代码,这部分是最关键; 3.保存相关文件供以后出错时使用...”这行前的“#”删除,最后导出即可 实现对代码的混淆,即使我们没有去编写proguard-project.txt中的内容。...最后说明下: 第三方jar包中如果有.so文件,不用去理会,引 入的第三方jar文件不要混淆,否则可能会报异常 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/139265

    85920

    Android 代码混淆机制

    如果不加混淆,相当于直接将源代码拱手送人,内容严密的app权限审核可以说是形同虚设。...:将project.properties文件中的“# proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt...还有一种情况是可以正常打包出APK文件,但是不一定能运行,能运行也会在某一步上出错,这种情况一般是因为把代码中不可混淆的字段或文件给混淆了比如引入的jar包和so文件等,导致程序功能变化。...二、通过ProGuard工具混淆代码 如果你想把你的Android项目打包成jar文件然后再混淆,那这种方法比较适合 下载运行ProGuard工具 1.首先到http://proguard.sourceforge.net...系统默认会带上rt.jar,这里我们可以先remove掉,然后到jre下面copy所有的包。

    1.5K20

    Android编程权威指南笔记3:Android Fragment讲解与Android Studio中的依赖关系,如何添加依赖关系

    Android Fragment 当我在学习时,了解了Fragment词汇 Fragment是一种控制器对象,我就把所了解的简单说一下。...这个步骤在以后的代码中,你也可以看到,或者你打过,我这里也打过。 创建一个动态UI:FragmentManager提供了对Activity运行时的Fragment的添加、删除、替换的操作。...多个Fragment之间的通信:两个单独的Fragment之间是不应该进行通信的。应该使用他们所存在的Activity作为沟通的纽带。 Fragment类可以用很多方法来实现各种各样的结果。...虽然Fragment定义了自己的生命周期,但是该生命周期取决于其活动:如果活动停止,则不能启动其中的碎片; 当活动被破坏时,所有碎片将被破坏。...'), 'proguard-rules.pro' } } } dependencies { compile fileTree(include: ['*.jar'], dir

    1.8K30

    使用Gradle管理你的Android Studio工程

    前言 关于Android Gradle更多详细内容已经出书《Android Gradle权威指南》,大家可以购买,看更多没有介绍的知识点和内容,购买链接如下 https://item.jd.com/12162983...配置文件,在这里可以为所有project以及module配置一些常用的配置。...这里是循环处理每个applicationVariant,当他们的输出文件名以apk结尾并且buildType是release时,重新设置新的输出文件名,这样就达到了我们批量修改生成的文件名的目的。...不就好了吗,可以批量的替换吗?...今天我们不谈这个,我想要的是在我们生成的APK包中已经包含了检测代码覆盖率的代码,这样当我们安装APK后运行进行一些测试的时候,这些检测代码覆盖率的代码就会被执行到,这样最后我们导出一份代码测试覆盖率的文件

    1K40

    android代码混淆

    proguard 原理 Java代码编译成二进制class 文件,这个class 文件也可以反编译成源代码 ,除了注释外,原来的code 基本都可以看到。...proguard 就是这样的混淆工具,它可以分析一组class 的结构,根据用户的配置,然后把这些class 文件的可以混淆java 元素名混淆掉。...所以使用proguard时,我们需要有个配置文件告诉proguard 那些java 元素是不能混淆的。...{filename}    使用给定文件中的关键字作为要混淆方法的名称 -overloadaggressively    混淆时应用侵入式重载 -useuniqueclassmembernames...{package_name}    重新包装所有重命名的类文件中放在给定的单一包中 -dontusemixedcaseclassnames    混淆时不会产生形形色色的类名 -keepattributes

    1.6K80

    android混淆那些坑

    这里的minifyEnabled即用来控制在编译时是否需要启用Proguard,将minifyEnabled修改为true,即表示启用Proguard。’...lib目录 lib目录中包含了Proguard工具对应的jar文件,其中又包含三个文件:proguard.jar,proguardgui.jar和retrace.jar。...混淆之后的jar文件执行过程如果出现异常,生成的异常信息将很难被解读,方法调用的堆栈都是一些混淆之后的名字,通过retrace.jar可以将异常的堆栈信息中的方法名还原成混淆前的名字,方便程序解决bug...如果将bin目录添加到环境变量中,就可以直接在命令行中执行proguard,proguardgui和retrace命令了,避免每次都要输入java -jar + proguard.jar的使用 使用proguard.jar...打包时忽略警告 当在导出时,发现很多could not reference class之类的warning信息,如果确认app运行中和那些引用没有什么关系的话,就可以添加-dontwarn标签,就不会在提示这些

    3.3K60

    「万物生长」一个APK从诞生到活跃在Android手机上

    APK的诞生 上述之前在其他文章里面也常见的图,而这张图讲述一个APK的诞生流程,可以分为以下的几个流程 aapt工具将资源文件转化出对应的R文件和编译好的文件,但是这类资源文件中不包含assets目录下的文件...Proguard + Dex Dex工具就是将Class文件转换成二进制这里就不做介绍 在关于proguard的内容上,对于8成的开发者阮大概最熟悉的内容就是混淆了。...其实这个工具还给我们带来了第二个优势,就是代码内容缩短,在整体的包体积缩小起到了至关重要的作用。 那Proguard只有这么点作用吗??显然并不是这样的。...来模拟程序运行中尽可能出现的情况来优化和简化代码. 为了数据流分析的需要Optimize会多次遍历所有字节码ProGuard会开启多线程来加快速度。...将代码编译以后,我们能够发现生成的代码中会同时生成以Lambda来标识的类,这就是说明了他的解析方案,而代码的实现方式就是我们在Java 7中常见的方案了。 不过你觉得新产品的提升会止步于此吗?

    1K20

    SpringBoot 玩一玩代码混淆,防止反编译代码泄露

    编译 简单就是把代码跑一哈,然后我们的代码 .java文件 就被编译成了 .class 文件 反编译 就是针对编译生成的 jar/war 包 里面的 .class 文件 逆向还原回来,可以看到你的代码写的啥...(不混淆)--> -keepnames interface ** { *; } # 此选项将保存所有软件包中的所有原始接口文件(不进行混淆) #-keep interface * extends * {...-- 就是输入Jar的名称,我们要知道,代码混淆其实是将一个原始的jar,生成一个混淆后的jar,那么就会有输入输出。...-- 配置一个文件,通常叫做proguard.cfg,该文件主要是配置options选项,也就是说使用proguard.cfg那么options下的所有内容都可以移到proguard.cfg中 -->...-- 可以在此处写option标签配置,不过我上面使用了proguardInclude,故而我更喜欢在proguard.cfg中配置 -->

    1.1K20

    Maven - 代码混淆proguard-maven-plugin vs 代码加密classfinal

    密码读取顺序已经改为:参数获取密码||环境变量获取密码||密码文件获取密码||控制台输入密码||GUI输入密码||退出 tomcat下运行加密后的war 将加密后的war放在tomcat/webapps...,看不到方法的具体内容;当class被classloader加载时,真正的方法体会被解密注入。...v1.1.6 增加机器绑定功能 v1.1.5 增加无密码加密方式,启动无需输密码,但是并不安全 v1.1.4 纯命令行下运行jar时,从配置文件中读取密码,读取后清空文件 v1.1.3 加入输入密码的弹框...v1.1.2 修复windows下加密后不能启动的问题 v1.1.1 启动jar时在控制台输入密码,无需将密码放在参数中 v1.1.0 加密jar包时将解密代码加入加密后的jar包,无需使用多余的jar...启动包加密之后,方法体被清空,保留方法参数、注解等信息.主要兼容swagger文档注解扫描 反编译只能看到方法名和注解,看不到方法体的具体内容 启动过程中解密class,完全内存解密,不留下任何解密后的文件

    1.3K00

    SpringBoot 玩一玩代码混淆,防止反编译代码泄露

    编译 简单就是把代码跑一哈,然后我们的代码 .java文件 就被编译成了 .class 文件 反编译 就是针对编译生成的 jar/war 包 里面的 .class 文件 逆向还原回来,可以看到你的代码写的啥...(不混淆)--> -keepnames interface ** { *; } # 此选项将保存所有软件包中的所有原始接口文件(不进行混淆) #-keep interface * extends * {...-- 就是输入Jar的名称,我们要知道,代码混淆其实是将一个原始的jar,生成一个混淆后的jar,那么就会有输入输出。...-- 配置一个文件,通常叫做proguard.cfg,该文件主要是配置options选项,也就是说使用proguard.cfg那么options下的所有内容都可以移到proguard.cfg中 -->...-- 可以在此处写option标签配置,不过我上面使用了proguardInclude,故而我更喜欢在proguard.cfg中配置 -->

    89030

    iOS代码安全加固利器:深入探讨字符串和代码混淆器的作用

    (目录在sdk\tools\proguard),所以我们可以很方便的直接在工程中开启代码混淆。...eclipse android工程开启混淆功能,我们需要手动在项目文件.properties(我的是project.properties文件)中添加下面的代码To enable ProGuard to...对于eclipse工程来说,代码混淆的规则,在 proguard-project.txt 文件中,我们需要根据规则去选择哪些代码需要混淆,哪些代码(一般我们引用的第三发jar包,如果已经被混淆过,就不能再混淆...不过我们使用代码混淆的时候可能还有一些坑,例如工程中引用了很多外部的库,导致代码中函数数量超过了65535,混淆的时候可能会出错。此时需要分文件混淆,也就是把所有的代码分成两个部分来进行混淆。...这些内容后面补充吧。还有一点比较重要的,不止是Java代码可以混淆,理论上来说,任何代码都可以混淆,只要有对应的混淆器。

    19910

    Android Dex分包最全总结:含Facebook解决方案

    该脚本要求输入一个文件组(包含编译后的目录或jar包),然后分析文件组中的类并写入到–output所指定的文件中。...通过生成的tmp jar包,调用MainDexListBuilder类生成主dex的文件列表 Gradle 打包流程中是如何分包的 在项目中,可以直接运行 gradle 的 task 。...该 task 是将所有类打包成 jar 文件存在 build/intermediates/multi-dex/{flavor}/debug/allclasses.jar 。...当 BuildType 为 Release 的时候,执行的是 proguard{flavor}Release Task,该 task 将 proguard 混淆后的类打包成 jar 文件存在 build...该 task 会根据生成的 componentClasses.jar 去找这里面的所有的 class 中直接依赖的 class ,然后将内容写到 build/intermediates/multi-dex

    3K20
    领券