(译)混淆器生效的规则来源

作者: 于卫国 | 来源:发表于2018-07-30 15:18 被阅读9次

本文对混淆器所生效的四个规则来源进行了介绍。

本文首发:https://yuweiguocn.github.io/

《赠幼骐伯约》
文能提笔安天下,武能上马定乾坤。
心存谋略何人胜,古今英雄唯是君!
-三国,诸葛亮

原文链接:Feeding ProGuard’s inputs: where are all of these rules coming from?

当android应用开启混淆后,混淆使用的规则不仅仅是你指定添加的,还有来自其它资源的规则。下面介绍的四个规则来源需要注意。

开发者显式添加的规则

这个是你在build.gradle文件中使用proguardFile指定在一个文件中添加的规则。如果你使用混淆,你可能习惯在这添加配置规则。

默认混淆文件

一个以广泛适用的规则集合通过getDefaultProguardFile添加,你可以在build.gradle模板文件中看到。它保护了一些像Parcelables,View的getters 和 setters(用于开启View属性动画)和所有添加了@Keep注解的东西。你可以看下这个文件默认添加的混淆规则。当你尝试写混淆规则时这也是很好的示例规则源码。

AAPT生成的规则

当AAPT处理应用的资源,它生成规则用于保护例如:从布局文件引用的View类和清单文件中引用的Activity。每个规则都有一条或多条注释用于说明类在哪被引用,如果需要的话你可以追踪到对应的资源。你可以在这儿找到这些规则:

build/intermediates/proguard-rules/{buildType}/aapt_rules.txt.

注意这个资源不是显式添加在build.gradle文件,Android gradle插件会负责引入这些规则。

类库的规则

如果应用依赖的类库有混淆配置并且包含在类库中,应用会使用这些混淆配置,类库可以在build.gradle文件中声明这些规则使用consumerProguardFile。例如,这是Butterknife的build.gradle片段。

合并

不用去追踪添加到应用的混淆规则的每个来源,你可以查看所有的配置。你可以在你的规则文件指定

-printconfiguration proguard-config.txt

混淆器会输出所有配置规则到指定的文件。注意它不会按照原有指定的顺序,因此可能比较难理解特定的规则来自哪。

相关文章

  • (译)混淆器生效的规则来源

    本文对混淆器所生效的四个规则来源进行了介绍。 本文首发:https://yuweiguocn.github.io/...

  • Android 混淆规则是如何生效的?

    前言 记录一下关于 Android 中关于混淆配置文件的生效规则、混淆规则的细节、build 产物中和混淆相关的内...

  • 关于Android代码混淆,你了解多少?

    目录 混淆编辑器介绍 功能说明 编译流程 二者区别 使用说明 规则文件说明 组件化混淆 1. 混淆编译器 Andr...

  • Android代码混淆

    待整理。。。 参考: Android混淆从入门到精通 Android代码混淆之混淆规则 代码混淆规则配置文件:pr...

  • CSS的优先级

    例外的!important规则 Demo: 页面只有id选择器生效。因为其他选择器优先级没有id选择器高,效果被覆...

  • 混淆规则

    1 异常和内部类 2 泛型 3 注解 4 抛出异常时保留代码行号 5 JS 6 单个内部类不混淆规则 7 常见继承...

  • ijkplayer混淆记录

    ijkplayer的混淆规则

  • Android代码混淆

    打开混淆 混淆规则 基本规则 两个常用的混淆命令,注意一颗星表示只是保持该包下的类名,而子包下的类名还是会被混淆;...

  • JavaMail 混淆规则

    JavaMail For Android 混淆规则

  • ProGuard详解

    Android分享:代码混淆那些事Android代码混淆之混淆规则Android-Dev-Favorites An...

网友评论

    本文标题:(译)混淆器生效的规则来源

    本文链接:https://www.haomeiwen.com/subject/rdegmftx.html