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

proguard公共静态字段之后将删除

proguard是一种Java字节码优化工具,用于在应用程序构建过程中对代码进行混淆、压缩和优化,以提高应用程序的性能和安全性。它可以删除未使用的代码、重命名类、方法和字段,以及优化字节码,从而减小应用程序的体积并提高运行效率。

公共静态字段是指在Java类中声明的具有静态修饰符(static)和公共访问修饰符(public)的字段。这些字段可以被其他类直接访问和修改,因此可能存在安全风险和代码混乱的问题。

在proguard优化过程中,当公共静态字段未被其他代码引用时,proguard会将其删除,以减小应用程序的体积。这样可以避免不必要的字段占用内存空间,并提高应用程序的运行效率。

然而,需要注意的是,如果其他代码依赖于这些公共静态字段,删除操作可能会导致应用程序出现错误或异常。因此,在使用proguard进行代码优化时,需要仔细检查和测试应用程序的功能,确保删除公共静态字段不会影响应用程序的正常运行。

腾讯云提供了一系列与云计算相关的产品和服务,其中包括:

  1. 云服务器(Elastic Compute Cloud,简称CVM):提供灵活可扩展的云服务器实例,可满足不同规模和需求的应用程序部署和运行。
  2. 云数据库MySQL版(TencentDB for MySQL):提供高可用性、可扩展性和安全性的云数据库服务,适用于各种规模的应用程序。
  3. 云存储(Cloud Object Storage,简称COS):提供安全可靠的对象存储服务,用于存储和管理大规模的非结构化数据。
  4. 人工智能平台(AI Platform):提供丰富的人工智能服务和工具,包括图像识别、语音识别、自然语言处理等,帮助开发者构建智能化的应用程序。
  5. 物联网(Internet of Things,简称IoT):提供全面的物联网解决方案,包括设备接入、数据管理、应用开发等,帮助实现设备互联和数据智能化。
  6. 云原生应用平台(Tencent Cloud Native Application Platform,简称TCAP):提供基于容器和微服务的云原生应用开发和管理平台,支持快速部署和扩展应用程序。

以上是腾讯云的一些相关产品和服务,可以根据具体需求选择适合的产品进行开发和部署。更多详细信息和产品介绍可以参考腾讯云官方网站:https://cloud.tencent.com/

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

相关·内容

Android热更新方案Robust开源,新增自动化补丁工具

,上文的样例中就是对ProGuard之后的代码进行反射(注意看反射字段和方法时的方法名和字段名)。...举些例子来说,ProGuard会把类中的get、set方法作用的字段直接访问性修改为public,然后删除get和set方法;删除无用的方法;以及最令人头疼的内联问题等等。...为了解决上述的问题,自动化提供了一个静态方法(Robust.modify()),支持在泛型或者Lambda表达式里面调用这个静态方法,自动化扫描所有的方法调用,检测到这个静态方法的调用就就可以找到找到需要制作补丁的方法...体现到代码层面上做的事情就是:混淆类名、方法名、字段名,修改方法、字段访问性,删除方法(上例中内部类的构造方法),方法的内联,甚至是减少方法的参数(这就改变了方法签名)等等。...对于ProGuard修改访问性的问题,使用反射的方式可以很好地解决这个问题,但是这样可能会引入一个问题,由于ProGuard之后,各个方法和字段的名字混淆为简单字母,比如a、b之类的,子类和父类很大可能行会出现不同的方法或者字段被混淆成一样简单字母

1.8K50
  • Android 代码混淆规则

    Proguard介绍 Android SDK自带了混淆工具Proguard。它位于SDK根目录\tools\proguard下面。...ProGuard是一个免费的Java类文件收缩,优化,混淆和预校验器。它可以检测并删除未使用的类,字段,方法和属性。它可以优化字节码,并删除未使用的指令。...它可以类、字段和方法使用短无意义的名称进行重命名。最后,预校验的Java6或针对Java MicroEdition的所述处理后的码。...Proguard作用 Android中的“混淆”可以分为两部分,一部分是 Java 代码的优化与混淆,依靠 proguard 混淆器来实现;另一部分是资源压缩,移除项目及依赖的库中未被使用的资源(资源压缩严格意义上跟混淆没啥关系...2.1 代码混淆 压缩(Shrinking):默认开启,用以减小应用体积,移除未被使用的类和成员,并且会在优化动作执行之后再次执行(因为优化后可能会再次暴露一些未被使用的类和成员)。

    2.5K10

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

    根据 Java 官方介绍,Proguard 对应的具体中文定义如下: 它是一个包含代码文件压缩、优化、混淆和校验等功能的工具 它能够检测并删除无用的类、变量、方法和属性 它能够优化字节码并删除未使用的指令...这时,资源压缩器会采取防御性行为,所有具有匹配名称格式的资源标记为可能已使用,无法移除。...dontwarn twitter4j.** 其他的命令用法可参考 Android 系统提供的默认混淆规则: #混淆时不生成大小写混合的类名 -dontusemixedcaseclassnames #不跳过非公共的库的类...implements android.os.Parcelable { public static final android.os.Parcelable$Creator CREATOR; } #保留R文件的静态成员...很多人也应该都想到了,混淆是原本有特定含义的"元素"转变为无意义的名称,所以,经过混淆的"洗礼"之后,序列化之后的 value 对应的 key 已然变为没有意义的字段,这肯定是我们不希望的。

    95820

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

    根据 Java 官方介绍,Proguard 对应的具体中文定义如下: 它是一个包含代码文件压缩、优化、混淆和校验等功能的工具 它能够检测并删除无用的类、变量、方法和属性 它能够优化字节码并删除未使用的指令...这时,资源压缩器会采取防御性行为,所有具有匹配名称格式的资源标记为可能已使用,无法移除。...twitter4j.** 其他的命令用法可参考 Android 系统提供的默认混淆规则: #混淆时不生成大小写混合的类名 -dontusemixedcaseclassnames #不跳过非公共的库的类...implements android.os.Parcelable { public static final android.os.Parcelable$Creator CREATOR; } #保留R文件的静态成员...很多人也应该都想到了,混淆是原本有特定含义的"元素"转变为无意义的名称,所以,经过混淆的"洗礼"之后,序列化之后的 value 对应的 key 已然变为没有意义的字段,这肯定是我们不希望的。

    4.5K30

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

    Shrinker 通过引用标记算法,没用到的代码移除掉。...举几个例子: -- 某个非静态方法内部没有使用this没有继承关系,这个方法就可以改为静态方法。 -- 某个方法(代码不是很长)只被调用一次,这个方法就可以被内联。...Retrace 经过ProGuard处理后的字节码运行的堆栈已经跟没有处理之前的不一样了,除了出现名称上的变化还伴随着逻辑上的变化,程序崩溃后,开发者需要借助Retrace错误堆栈恢复为没有经过ProGuard...现象 下面是在使用-applymapping之后ProGuard输出的警告信息,同时我们发现在使用-applymapping得到的混淆结果中这些方法的名称都和原来宿主混淆结果的名称不一致的现象,导致使用...子模块升级之后依然依赖宿主的接口、公共方法,这要确保stop方法在子模块升级前后是一致的。当使用-applymapping进行增量编译时stop由b映射为c_。

    1.6K60

    APK体积优化有感

    筛选出只对本类Filed赋值的指令 3.Classname和filedname作为一个key,如果付非默认值则保存到集合中 4.当碰到赋默认值的指令时检测是否在集合中,如果不在集合中进行标记该指令是可以删除的冗余指令...5.遍历完整个字节码之后进行统一删除 删除无用代码 一.使用proguard 的 -assumenosideeffects配置消除无副作用的函数调用 当方法不会修改堆上某个对象或者栈上方法参数的值时,...缺点: 1.涉及到的指令会一并删除:这也意味着指令如果在调用无用方法时无用,但之后却需要用到这个指令,典型的比如logi传入了一个对象,之后有对这个对象进行操作。...自己生成的方法) 名称开头固定为access 删除access方法,access方法访问的Field,Method的AccessFlags变为Public 找到调用access的指令替换为直接访问Field...aapt) 问题 一,Proguard的处理:默认的Proguard混淆会keep R文件。

    63730

    深入探索 Android 包瘦身(上)

    3)、打乱代码的格式,比如多加一些空格或删除空格,或者一行代码写成多行,多行代码改成一行。...6)、移除 write-only 字段。 7)、把类标记为私有的。 8)、把字段的值跨方法地进行传递。 9)、把一些方法标记为私有、静态或 final。...ProGuard 和 R8 都应用了基本名称混淆:它们 都使用简短,无意义的名称重命名类,字段和方法。他们还可以 删除调试属性。...但是,R8 在 inline 内联容器类中更有效,并且在删除未使用的类,字段和方法上则更具侵略性。...ProGuard 的多次优化遍历通常可以产生一系列优化。例如,第一遍可以传递一个常量方法参数,以便下一遍可以删除该参数并进一步传递该值。删除日志代码时,多次传递的效果尤其明显。

    2K30

    Android混淆你了解多少?

    根据 Java 官方介绍,Proguard 对应的具体中文定义如下: 它是一个包含代码文件压缩、优化、混淆和校验等功能的工具 它能够检测并删除无用的类、变量、方法和属性 它能够优化字节码并删除未使用的指令...这时,资源压缩器会采取防御性行为,所有具有匹配名称格式的资源标记为可能已使用,无法移除。...如: 其他的命令用法可参考 Android 系统提供的默认混淆规则: #混淆时不生成大小写混合的类名 -dontusemixedcaseclassnames #不跳过非公共的库的类 -dontskipnonpubliclibraryclasses...implements android.os.Parcelable { public static final android.os.Parcelable$Creator CREATOR; } #保留R文件的静态成员...很多人也应该都想到了,混淆是原本有特定含义的"元素"转变为无意义的名称,所以,经过混淆的"洗礼"之后,序列化之后的 value 对应的 key 已然变为没有意义的字段,这肯定是我们不希望的。

    1.8K00

    详解Android代码混淆实战

    什么是代码混淆: Android SDK 自带了混淆工具Proguard。它位于SDK根目录\tools\proguard下面。...为什么要混淆: 优化java的字节码 减小apk文件的大小,在混淆过程中会删除未使用过的类和成员 代码安全,使类、函数、变量名随机变成无意义的代号形如:a,b,c…之类。...防止app被反编译之后能够很容易的看懂代码 怎样使用混淆 在app下面的build.gradle添加使用混淆 buildTypes { release { //开启混淆,删除无用代码...('proguard-android.txt'), 'proguard-rules.pro' } debug { //在debug环境下使用混淆,方便调试 signingConfig...{ public void *(android.webkit.webView, jav.lang.String); 保留自己的项目部分代码不能被混淆(需要更具自己项目) 网络请求(如果混淆,就会发生字段的错乱

    1.5K51

    android代码混淆

    为了防止重要code 被泄露,我们往往需要混淆(Obfuscation code , 也就是把方法,字段,包和类这些java 元素的名称改成无意义的名称,这样代码结构没有变化,还可以运行,但是想弄懂代码的架构却很难...在分析class 的同时,他还有其他两个功能,删除无效代码(Shrinking 收缩),和代码进行优化 (Optimization Options)。...libraryjars {classpath}    指定要处理的应用程序jar,war,ear和目录所需要的程序库文件 -dontskipnonpubliclibraryclasses    指定不去忽略非公共的库类...,如果所有指定的类成员出席(在压缩步骤之后) -printseeds {filename}    列出类和类的成员-keep选项的清单,标准输出到给定的文件 压缩 -dontshrink    不压缩输入的类文件...java.lang.String); 【对该方法不进行混淆】 } -keepclasseswithmembernames class * { 【保护指定的类和类的成员的名称,如果所有指定的类成员出席(在压缩步骤之后

    1.6K80

    Android反编译与加密(代码混淆)

    因此,为了能够编译好的java class进行保护,通常使用Proguard来对APK进行混淆处理,用无意义的字母来重命名类,字段,方法,属性。...当然Proguard不仅仅可以要用来混淆代码,还可以删除无用的类、字段、方法、属性,以及删除没用的注释,最大限度优化字节码文件。...' } } 这里的minifyEnable是控制是否开启ProGuard,属性为true,即可打开ProGuard功能。...proguardFiles属性用于配置混淆文件,它分为两个部分,一个是系统默认的混淆文件,它位于/tools/proguard/proguard-android.txt目录下,大部分情况使用这个就可以了...这个文件里可以引入第三方依赖包的混淆规则,配好之后导出APK即可生成混淆。

    1.5K40

    android混淆那些坑

    这里的minifyEnabled即用来控制在编译时是否需要启用ProguardminifyEnabled修改为true,即表示启用Proguard。’...压缩(Shrink):侦测并移除代码中无用的类、字段、方法、和特性(Attribute)。 优化(OPtimize):对字节码进行优化,移除无用指令。...混淆(Obfuscate):使用a、b、c、d这样简短而无意义的名称,对类、字段和方法进行重命名。 预检(Preveirfy): 在java平台上对处理后的代码进行预检。...混淆之后的jar文件执行过程如果出现异常,生成的异常信息很难被解读,方法调用的堆栈都是一些混淆之后的名字,通过retrace.jar可以异常的堆栈信息中的方法名还原成混淆前的名字,方便程序解决bug...如果bin目录添加到环境变量中,就可以直接在命令行中执行proguard,proguardgui和retrace命令了,避免每次都要输入java -jar + proguard.jar的使用 使用proguard.jar

    3.2K60

    android文件混淆详解

    optimizationpasses 5 -dontusemixedcaseclassnames 【混淆时不会产生形形色色的类名 】 -dontskipnonpubliclibraryclasses 【指定不去忽略非公共的库类...java.lang.String); 【对该方法不进行混淆】 } -keepclasseswithmembernames class * { 【保护指定的类和类的成员的名称,如果所有指定的类成员出席(在压缩步骤之后...android.os.Parcelable$Creator *; } 参考:http://blog.csdn.net/vrix/article/details/7100841 加入第三方jar包之后常出现的几个异常.../桌面,在这里面有空格,而proguard进行发编译的时候是不允许有空格的 如果换了正确路径还不好用的话,直接删除proguard就好了 注意:SDK和程序路径最好不要有空格符 情况2: Proguard...See console  异常: java.lang.ArrayIndexOutOfBoundsException 解决办法:proguard.cfg中的"-dontpreverify"改成“-

    912100

    Android性能优化(十)之App瘦身攻略

    备注:根据经验,项目中存在之前使用之后不使用的库的情况并不罕见。 3.3 启用Proguard 代码混淆也称为花指令,是将计算机程序的代码转换为功能上等价但是难以阅读、理解的行为。...Proguard是一个免费的Java类文件压缩、优化、混淆、预先验证的工具,可以检测和移除未使用的类、字段、方法、属性,优化字节码并移除未使用的指令,并将代码中的类、字段、方法的名字改为简短、无意义的名字...,如果混淆规则没有配置好,在Release模式可能会出现debug模式下不出现的Bug; Proguard也不是你想搞就能搞,如果App做了一段时间之后再来做Proguard,项目包结构不规范的话,那Proguard...而从header-item表中的method-ids-size字段可以看出,方法数缩减之后,可以减少方法列表的大小;同时,方法在Dex文件中的占用空间也减少了,App自然被瘦身。...瘦身So以及删除不用的图片、压缩图片之后,Apk会缩减很大的比例;而针对Dex的优化可能作用不会很明显。

    1.6K30

    Proguard 常用规则

    在其他优化中,可以将不是入口点的类和方法设为私有,静态或最终,可以删除未使用的参数,并且可以内联一些方法。 在混淆阶段,ProGuard会重新命名不属于入口点的类和类成员。...压缩步骤通常在优化之后,因为某些优化可能会打开已经删除的类或类成员。 -printusage [filename] 指定列出移除的死代码。该列表打印到标准输出或给定文件。...没有参数或者使用空字符串(’’),该软件包将被完全删除。 该选项覆盖 -flattenpackagehierarchy 选项。 这是进一步模糊软件包名称的另一个例子。...可选的过滤器是一个正则表达式; ProGuard不打印关于具有匹配名称的类的警告。忽略警告可能是危险的。 例如,如果处理确实需要未解决的类或类成员,则处理后的代码无法正常工作。...它可能仍会删除,优化或混淆其他班级成员。 如果指定了一个方法,则ProGuard仅将该方法作为入口点进行保存。其代码可能仍会进行优化和调整。 类规范 类规范是类和类成员(字段和方法)的模板。

    1.7K20

    使用 R8 压缩您的应用

    R8 的压缩特性 R8 通过下面 4 项特性来减少 Android 应用大小: 摇树优化 (Tree shaking): 使用静态代码分析来查找和删除无法访问的代码和未实例化的类型; 优化 : 通过删除无效代码...跟踪完成后,R8 使用摇树优化来删除未使用的代码。在此示例中,摇树删除了未使用的方法,因为 R8 的跟踪过程检测到从任何已知的入口都无法到达该方法。...这是因为 R8 仅字段名视为写入 (在 Person 构造函数中),但从未读取,因此 R8 会将其移除。最后 Person 丢失了字段值,造成空的 JSON 对象。...要保留名称字段,请在您的 proguard-rules.pro 文件中添加一个保留规则 -keep: -keep class com.example.myapplication.Person {...最后,在配置项目时,请确保 proguard-rules.pro 文件添加到 build.gradle 配置中: android { buildTypes { release {

    1.3K30

    通过Gradle为APK瘦身

    本文选自《Gradle for Android 中文版》,研究如何设置Gradle 构建配置文件中的几个属性,以缩小APK 文件。...ProGuard ProGuard 是一个Java 工具,其不仅可以缩减APK 文件大小,还可以在编译期优化、混淆和预校验你的代码。其通过你应用的所有代码路径,来找到未被使用的代码,并将其删除。...ProGuard 还会重命名你的类和字段。这一过程保留应用的踪迹,让反编译工程师更加难以读懂代码。...在激活ProGuard 之后,应重新测试整个应用,因为ProGuard 可能会移除一些你仍需要使用的代码。这也是很多开发者不喜欢ProGuard 的原因。...为了解决这个问题,你可以定义ProGuard 规则,排除那些被删除或混淆的类。我们可以使用proguardFiles 属性来定义包含ProGuard 规则的文件。

    74220

    ProGuard配置

    保护指定的类和类的成员,但条件是所有指定的类和类成员是要存在 -keepclasseswithmembers {class_specification} 保护指定的类和类的成员的名称(如果他们不会压缩步骤中删除...} 保护指定的类和类的成员的名称,如果所有指定的类成员出席(在压缩步骤之后) -keepclasseswithmembernames {class_specification} 列出类和类的成员-keep...ProGuard的输出文件及用处 混淆之后,会给我们输出一些文件,在gradle方式下是在/build/proguard/目录下,ant是在/bin/proguard目录,eclipse构建在/proguard...mapping.txt 列出了原始的类,方法,和字段名与混淆后代码之间的映射。...seeds.txt 列出了未被混淆的类和成员 usage.txt 列出了从apk中删除的代码 另外Proguard文件中包含retrace脚本,可以一个被混淆过的堆栈跟踪信息还原成一个可读的信息,window

    80110
    领券