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

从1个方法中剥离了无效的本地变量信息- Proguard

Proguard是一种Java字节码优化工具,它可以从代码中剥离无效的本地变量信息,从而减小应用程序的体积并提高运行效率。它主要用于Android应用程序的混淆和优化。

Proguard的主要功能包括代码压缩、混淆和优化。代码压缩可以通过删除无用的类、方法和属性来减小应用程序的体积。混淆则是通过对类、方法和属性进行重命名,使得代码难以被逆向工程分析和破解。优化则是对代码进行一系列的优化操作,如删除无用的代码、优化方法调用等,以提高应用程序的运行效率。

Proguard的应用场景包括但不限于以下几个方面:

  1. 代码混淆和压缩:通过混淆和压缩代码,可以减小应用程序的体积,提高安全性,防止代码被反编译和盗用。
  2. 代码优化:通过优化代码,可以提高应用程序的运行效率,减少内存占用和CPU消耗,提升用户体验。
  3. 移除无用的本地变量信息:通过剥离无效的本地变量信息,可以减小应用程序的体积,提高运行效率。

腾讯云提供了一系列与Proguard相关的产品和服务,包括但不限于:

  1. 腾讯云移动应用安全服务(Mobile App Security):提供了代码混淆、反调试、反逆向等功能,保护移动应用程序的安全性。
  2. 腾讯云移动应用加固服务(App Shield):提供了代码混淆、资源加密、反调试等功能,保护移动应用程序的安全性。
  3. 腾讯云移动应用性能优化服务(App Performance Optimization):提供了代码优化、性能分析等功能,帮助开发者提升应用程序的性能和用户体验。

更多关于腾讯云相关产品和服务的详细介绍,请参考腾讯云官方网站:腾讯云

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

相关·内容

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

由于跨平台需要,Java字节码包括很多源代码信息,如变量名、方法名,并且通过这些名称来访问变量方法,这些符号带有许多语义信息,很容易被反编译成Java源代码。...1、更名,将私有类,私有的成员、方法体内部变量名改名,改成a,b,c等等,甚至1,2,3(代码不允许不等于成果物不允许)。...对于复杂混淆来说,图形界面没有的属性,就要参考proguard提供使用文件,按照自己想要要求在.pro文件配置。其实proguard使用关键就是编写这个配置文件。...所以步骤产生配置,全部都写到.pro配置文件。我们先通过【查看配置信息】查看下,也可以通过【保存配置信息】将配置信息以.pro格式保存到本地目录。..., proguard将会按照配置文件描述内容,对com.stkj.action.jar 进行执行。 执行中注意出现问题。执行成功后会有提示成功信息

3K60

深入探索 Android 包瘦身(上)

由于跨平台需要,Java 字节码 包括很多源代码信息,如变量名、方法名,并且通过这些名称来访问变量方法,这些 符号带有许多语义信息,很 容易被反编译成 Java 源代码。...并且,我们可在配置混淆文件将android.util.Log置为无效代码, // 以去除apk打印日志代码。...此外,我们也可以在配置混淆文件将 android.util.Log 置为无效代码,以去除 apk 打印日志代码。而 proguard-rules.pro 是该模块下混淆配置。...方法,这种 跨 Dex 调用方式会造成许多冗余信息,具体有如下两点: 1)、多余 method id:跨 Dex 调用会导致当前dex保留被调用dex方法id,这种冗余会导致每一个dex可以存放...因为优化效果不是很明显,这里就不多介绍,具体实现细节可参见 西瓜视频 apk 瘦身之 Java access 方法删除,此外,在 ReDex 也提供 access-marking 这个功能去除代码

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

    一个APP包之所以大,主要包括一下文件 代码 lib so本地库 资源文件(图片,音频,字体等) 瘦身就主要瘦这些。...在使用-keep选项时,有许多事项需要考虑;如需了解有关自定义配置文件详细信息,请阅读ProGuard 手册。问题排查一章概述您可能会在混淆代码时遇到其他常见问题。...-dontskipnonpubliclibraryclasses:不跳过library非public方法。 -verbose: 打印混淆详细信息。...APK Analyser 将会拆解你应用并让你知道 .apk 文件那个部分占据大量空间。让我们看一下 Anti-Theft 在没有经过优化之前截图。 ?... Apk Analyser 输出来看,应用原大小是 3.1MB。经过 Play 商店压缩,大致是 2.5MB。 截图中可以看出主要有 3 个文件夹占据应用大多数空间。

    85520

    android 混淆规则作用,Android代码混淆详解

    一、混淆意义 混淆代码并不是让代码无法被反编译,而是将代码类、方法变量信息进行重命名,把它们改成一些毫无意义名字,同时也可以移除未被使用类、方法变量等。...所以直观看,通过混淆可以提高程序安全性,增加逆向工程难度,同时也有效缩减了apk体积。总结如下: 1、将项目中类、方法变量信息进行重命名,变成一些无意义简短名字。...2、移除未被使用类、方法变量等。 二、混淆规则和配置 凡是需要在AndroidManifest.xml中去注册所有类类名以及从父类重写方法名都自动不会被混淆。...使用,只有当两者都为true时候才会起到真正删除无效代码和无引用资源目的。...dump.txt : 描述apk中所有类文件内部结构体。 mapping.txt : 列出了原始类、方法和名称与混淆代码间映射。 seeds.txt : 列出了没有混淆类和方法

    1.8K30

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

    一个APP包之所以大,主要包括一下文件 代码 lib so本地库 资源文件(图片,音频,字体等) 瘦身就主要瘦这些。...在使用-keep选项时,有许多事项需要考虑;如需了解有关自定义配置文件详细信息,请阅读ProGuard 手册。问题排查一章概述您可能会在混淆代码时遇到其他常见问题。...-dontskipnonpubliclibraryclasses:不跳过library非public方法。 -verbose: 打印混淆详细信息。...APK Analyser 将会拆解你应用并让你知道 .apk 文件那个部分占据大量空间。让我们看一下 Anti-Theft 在没有经过优化之前截图。...截图中可以看出主要有 3 个文件夹占据应用大多数空间。 classes.dex —— 这是 dex 文件,包含了所有会运行在你 DVM 或 ART 里字节码文件。

    1.6K10

    【Android 安全】DEX 加密 ( Proguard keep 用法 | Proguard 默认混淆结果 | 保留类及成员混淆结果 | 保留注解以及被注解修饰类成员方法 )

    文章目录 一、Proguard 默认混淆结果 二、Proguard 保留类及成员混淆结果 三、Proguard 保留注解以及被注解修饰类/成员/方法 更多 ProGuard 混淆配置参考 : https...; 保留 MainActivity 类名 , 成员变量名称 , 成员方法名称 , # 保留 MainActivity 类名,成员变量名称 -keep public class kim.hsl.handler.MainActivity...{ *; } 由下图可以看出 , 成员变量 , 成员方法 名称都保存下来了 ; 三、Proguard 保留注解以及被注解修饰类/成员/方法 ---- 创建注解 : package kim.hsl.handler...Handler { /** * 消息队列 * 该消息队列封装在 Looper * Looper 封装在线程本地变量 */ MessageQueue...Looper 并将其放入了线程本地变量 */ // 获取当前线程 线程本地变量 Looper Looper looper = Looper.looper

    1.8K00

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

    根据 Java 官方介绍,Proguard 对应具体中文定义如下: 它是一个包含代码文件压缩、优化、混淆和校验等功能工具 它能够检测并删除无用类、变量方法和属性 它能够优化字节码并删除未使用指令...它能够将类、变量方法名字重命名为无意义名称从而达到混淆效果 最后,它还会校验处理后代码,主要针对 Java 6 及以上版本和 Java ME 2.3 资源压缩 Android ,编译器为我们提供另外一项强大功能...#保留所有拥有本地方法类名及本地方法名 -keepclasseswithmembernames class * { native ; } #保留自定义Viewget和...系统为我们提供 retrace 工具,结合上文提到 mapping.txt 文件,就可以将混淆后崩溃堆栈追踪信息还原成正常情况下 StackTrace 信息。...这个波操作是不是有点"出类拔萃"?哈哈,就不卖关子,其实很简单,只要生成一套自己 txt 格式混淆字典,然后在混淆规则 Proguard-rules.pro 应用一下即可: ?

    97020

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

    根据 Java 官方介绍,Proguard 对应具体中文定义如下: 它是一个包含代码文件压缩、优化、混淆和校验等功能工具 它能够检测并删除无用类、变量方法和属性 它能够优化字节码并删除未使用指令...它能够将类、变量方法名字重命名为无意义名称从而达到混淆效果 最后,它还会校验处理后代码,主要针对 Java 6 及以上版本和 Java ME 资源压缩 Android ,编译器为我们提供另外一项强大功能...#保留所有拥有本地方法类名及本地方法名 -keepclasseswithmembernames class * { native ; } #保留自定义Viewget和...系统为我们提供 retrace 工具,结合上文提到 mapping.txt 文件,就可以将混淆后崩溃堆栈追踪信息还原成正常情况下 StackTrace 信息。...这个波操作是不是有点"出类拔萃"?哈哈,就不卖关子,其实很简单,只要生成一套自己 txt 格式混淆字典,然后在混淆规则 Proguard-rules.pro 应用一下即可: ?

    4.8K30

    042android初级篇之android混淆代码ProGuard

    解读一个混淆配置 proguard语法规则可参考参考链接ProGuard在线说明手册 下面是我对一个配置加上了注释,详细看过了之后,便可以打造自己简单配置。...如果你代码混淆后会产生bug的话,log提示是混淆后代码,希望定位到源代码的话就可以根据mapping.txt反推。...3. seeds.txt 列出了没有被混淆类和成员。 4. usage.txt 列出了源代码中被删除在apk不存在代码。...重在保护 使用了-dontshrink|dontoptimize|dontobfuscate 这些全局选项后,那么再使用相应kepp modifiers 无效 当不使用-dontoptimize选项时...,则-optimizations optimization_filter才有效 参考链接 ProGuard在线说明手册 位于sdk目录: sdk/tools/proguard Android 混淆代码总结

    1.1K30

    Android混淆你了解多少?

    根据 Java 官方介绍,Proguard 对应具体中文定义如下: 它是一个包含代码文件压缩、优化、混淆和校验等功能工具 它能够检测并删除无用类、变量方法和属性 它能够优化字节码并删除未使用指令...它能够将类、变量方法名字重命名为无意义名称从而达到混淆效果 最后,它还会校验处理后代码,主要针对 Java 6 及以上版本和 Java ME 资源压缩 Android ,编译器为我们提供另外一项强大功能...#保留所有拥有本地方法类名及本地方法名 -keepclasseswithmembernames class * { native ; } #保留自定义Viewget和...mapping.txt 提供混淆前后内容对照表,内容主要包含类、方法和类成员变量。 seeds.txt 罗列出未进行混淆处理类和成员。 usage.txt 罗列出 APK 移除代码。...系统为我们提供 retrace 工具,结合上文提到 mapping.txt 文件,就可以将混淆后崩溃堆栈追踪信息还原成正常情况下 StackTrace 信息

    1.9K00

    你该知道Gradle配置知识总结

    关于 applicationId ,可以把它也理解为包名,不过和 Manifest 文件包名作用不同,它是用来给应用商店和设备区分不同 app ,而 Manifest pakage 属性用来在源代码引用...标记选择器(Marker Selectors) :选择器功能可以让一些属性在某些 libary 里面无效,比如就拿上面的例子来说,我想让 uisdk 只处理 ui 上东西,不想让他具有网络访问功能...apk:只会打包到 apk ,不参与编译,所以不能在项目代码中使用相应库方法。 test compile:相比于 compile ,仅仅针对单元测试代码编译打包。...包或者 arr 包,但对于本地 jar 包或者 arr 包依赖,compile 和 provided 就有区别了。...signingConfig signingConfigs.release } } } 上面的配置中直接显示一些敏感信息,比如各种密码,一种更加安全方式是通过环境变量方式获取: storePassword

    87110

    安卓应用安全指南 4.8 输出到 LogCat

    LogCat 日志信息可以同一设备其他应用读出 [17],因此向L ogcat 输出敏感信息应用,被认为具有信息泄露漏洞。 敏感信息不应输出到 LogCat。...4.8.2 规则书 输出消息记录时,遵循以下规则: 4.8.2.1 操作日志信息不能包含敏感信息(必需) 输出到 LogCat 日志可以其他应用读取,因此敏感信息(如用户登录信息)不应该由发行版应用输出...日志级别和日志输出方法选择标准 在 Android android.util.Log类定义五个日志级别(ERROR,WARN,INFO,DEBUG,VERBOSE)。...使用android.util.Log类输出日志消息时,应该选择最合适方法,如表 4.8-1 所示,它展示日志级别和方法选择标准。...4.8.3.4 汇编移除敏感信息 如果为了删除Log.d()方法而使用 ProGuard 构建以下代码,有必要记住,ProGuard会保留为日志信息构造字符串语句(代码第一行),即使它删除了 Log.d

    41710

    使用 R8 压缩您应用

    .png 作者 / Google 软件工程师 SørenGjesse 和 Christoffer Adamsen 人们更倾向于安装并保留较小和安装占用空间更小应用,在新兴市场尤为明显。...有 R8 编译器,您可以通过压缩、混淆和优化,更全面的缩小应用体积。 本文我们将对 R8 特性进行一个简要介绍,并介绍可预期代码缩减程度以及如何在 R8 启用这些功能。...,选择性内联,移除未使用参数和类合并来优化代码大小; 重命名标识,即混淆处理 : 使用短名称以及缩短包命名空间; 减少调试信息 : 规范化调试信息并压缩行号信息。...例如,在此 Java 代码示例,R8 会在 main 方法处开始运行。 在该示例,R8 main 方法跟踪到 greeting 方法。...在此示例,摇树删除了未使用方法,因为 R8 跟踪过程检测到任何已知入口都无法到达该方法。 接下来,R8 将标识重命名为较短名称,这些名称在 DEX 文件占用较少空间。

    1.4K30

    实现 APK 保护时常见坑和解决方案

    在开发这款产品,并用于实战过程,也发现很多坑,下面一一细数过来,希望对同样也希望开发一款 APK 保护类产品的人们能有所启发。...自己试试就知道,有一款神器叫 IDA,一试便知。 坑三:JNI 库保护 辛辛苦苦写出一个 JNI 库,用它来校验 APK 各种属性,这是一条不错路子,但是万一别人把 JNI 剥离了呢?...剥离方法很简单,直接删掉 so 文件,并且找到加载该 so System.loadLibrary() 语句一并删除,最后通过编译找到闪退处,去掉调用部分代码即可。...smali 代码是基本上不可能看懂,就算一处看懂,还有 N 处,如果这些变量四散定义在程序各处,并且被多次调用的话,也是任何人都不敢轻易删除,这样就直接隐藏 loadLibrary 过程。...关键还是生成代码,其变量名称要随机,尽可能造成混乱,否则被找出了规律就悲剧,另外生成代码结构也尽可能不一样,否则容易被 IDE 提示要重构(不要怀疑,大部分反编译的人在搞到代码后都会重建一个工程然后上

    45630

    Android 混淆那些事儿

    混淆原理 Java 是一种跨平台、解释型语言,Java 源代码编译成class文件中有大量包含语义变量名、方法信息,很容易被反编译为Java 源代码。...混淆不仅能将代码类名、字段、方法名变为无意义名称,保护代码,也由于移除无用类、方法,并使用简短名称对类、字段、方法进行重命名缩小了程序size。...,哪些方法不被混淆,从而保证程序正常运行。...由于native方法与对应so库方法名称对应,方法名被混淆会导致调用出现问题,所以native方法不能被混淆。...这个指令含义是Proguard会在optimization过程删除对这些方法调用,需要注意:Only use this option if you know what you’re doing!

    3.3K50

    Android app反调试与代码保护一些基本方案

    针对于Android app逆向方法和逆向工具很多,所以反调试对于Android代码保护扮演着很重要角色。本文四个方面介绍一下Android反调试一些方法。...压缩(Shrink):去掉代码无用类、函数方法和字段。 优化(Optimize):对Android可执行文件dex进行优化,去掉无用指令。...同时,在混淆过程对于一些不影响正常运行信息将永久丢失,这些信息丢失使得程序更加难以理解。 同时,Proguard还可以控制对某个类混淆,以及对某个类某些函数方法混淆。...APK签名检测 Android SDK中有apk 签名检测方法,FrameworkPackageManager类提供getPackageInfo()函数,函数原型: ?...实际可用两种方案: (1)在本地Java代码里进行校验,不一致则强退应用; (2)把签名信息发到服务器后台,服务器后台记录着正确签名信息,比对后不一致则返回一个错误给错误。

    3.4K42
    领券