阳江[切换]
免费发布信息
您当前的位置: 阳江百修网> 阳江工控产品维修>阳江数控系统维修> > 数控解锁数控解密

数控解锁数控解密

 数控解锁数控解密
服务区域
阳江市-阳东县
服务范围
数控机床
发布日期
2023-04-22 14:34:31
标签
数控系统,解锁,解密

温馨提示:此页面服务由第三方为您提供,交易前请仔细核对商家真实资质,勿信夸张宣传和承诺,勿轻易相信预付定金、汇款等交易方式; 此页面所发布文字及图片均由网民自行发布,如有侵权请联系发布者删除。

产品介绍

数控解锁数控解密在这里,我们可以思考一个问题:如果apk构建过程中,没有任何keep规则,那么代码会不会全部被裁剪掉?答案是肯定的,*终apk中不会有任何代码。可能有同学会说,我用Android Studio新建一个app工程,开启了Proguard但是没有配置任何keep规则,为什么*终apk中会包含一些代码?这个是由于Android Gradle Plugin在构建apk过程中,会自动生成一些混淆规则,关于所有keep规则的来源问题,在后面的章节会讲到。

好了,继续回到keep配置上来。keep配置支持的规则非常复杂,在这里将其分为以下几类:

1、直接保留类、方法、变量;

  • -keep。被保留类、方法、变量,不允许shrink(裁剪),不允许obfuscate(混淆);

  • -keepnames。等效于-keep, allowshrinking。保留类、方法、变量,允许shrink,如果*终被保留住(其它keep规则,或者代码调用),那么不允许obfuscate;

2、如果类被保留(未裁剪掉),则保留指定的变量、方法;

  • -keepclassmembers。被保留的变量、方法,不允许shrink(裁剪),不允许obfuscate(混淆);

  • -keepclassmembernames。等效于-keepclassmembers, allowshrinking。被保留的变量、方法,允许shrink,如果*终被保留住,那么不允许obfuscate;

3、如果方法/变量,均满足指定条件,则保留对应类、变量、方法;

  • -keepclasseswithmembers。被保留类、方法、变量,不允许shrink(裁剪),不允许obfuscate(混淆);

  • keepclasseswithmembernames。等效于-keepclasseswithmembers, allowshrinking。被保留类、方法、变量,允许shrink,如果*终被保留住,那么不允许obfuscate。

完整keep规则格式如下,感受下复杂度:

-keepXXX [,modifier,...] class_specification

# support modifiers:
includedescriptorclasses
includecode
allowshrinking
allowoptimization
allowobfuscation

# class_specification format:
[@annotationtype] [[!]public|final|abstract|@ ...] [!]interface|class|enum classname
   [extends|implements [@annotationtype] classname]
[{
   [@annotationtype]
   [[!]public|private|protected|static|volatile|transient ...]
   <fields> | (fieldtype fieldname [= values]);

   [@annotationtype]
   [[!]public|private|protected|static|synchronized|native|abstract|strictfp ...]
   <methods> | <init>(argumenttype,...) | classname(argumenttype,...) | (returntype methodname(argumenttype,...) [return values]);
}]

# 此外,不同位置均支持不同程度的通配符,不详述.

在实际工作中,一般不会用到非常复杂的keep规则,所以完整用法不必刻意学习,遇到时能够通过查文档看懂即可。举一个比较有意思的例子,来结束本小节。

===================== 示例 =====================
# 示例类:
package com.example.myapplication.proguard;public class TestProguardFieldOnly {
   public static String fieldA;    public int fieldB;
}

package com.example.myapplication.proguard;public class TestProguardMethodOnly {
   public static void methodA() {
       Log.d("TestProguardClass", "void methodA");
   }
}

package com.example.myapplication.proguard;public class TestProguardFieldAndMethod {
   public int fieldB;    public static void methodA() {
       Log.d("TestProguardClass", "void methodA");
   }
}# keep规则:-keepclasseswithmembers class com.example.myapplication.proguard.** {
   *;
}

# 问题:上述这条keep规则,会导致哪几个示例类被“保留”?
# 答案:TestProguardFieldOnly和TestProguardFieldAndMethod

辅助文件

这里要讲的辅助文件,是指progaurd生成的一些文件,用于了解处理结果,对排查裁剪、混淆相关问题很有帮忙(必要)。

 辅助文件

配置项集合

配置项集合,汇总了所有配置信息,并对某些配置进行“展开”。由于配置项可以在多个文件、多个工程中定义(后面会讲到所有来源),因此配置项集合方便我们对此集中查看。

通过配置项-printconfiguration <filepath>打开此项输出,例如-printconfiguration build/outputs/proguard.cfg会生成${application工程根目录}/build/outputs/proguard.cfg文件,示例内容如下:


企业信息
入驻时间:
2022年
主营产品:
数控机床
公司地址:
广东省阳江市阳东县艺鹏装饰
客服热线

意见反馈邮箱:354481597@qq.com

关注我们
百修网公众号

百修网公众号

百修公众号

百修公众号

师傅接单小程序

师傅接单小程序

苏ICP备09042555号-2 | 增值电信业务经营许可证:苏B2-20150120 | 公安部备案号:32020202000170 | Copyright © 无锡市新视点网络科技有限公司 版权所有