向工程腐化开炮 | Java代码治理
作者:刘天宇(谦风) 系列文章回顾《向工程腐化开炮 | proguard治理》《向工程腐化开炮 | manifest治理》。本文为系列文章第三篇,虽然标题是java代码,但准确来讲,本文主要聚焦的是jvm字节码,因此相关工具和治理,对于kotlin也同样适用,如无特殊情况,不再单独说明。此外,还会涉及到java资源。 java代码腐化和失控,主要体现在不合理代码使用不断累积。这里“不合理”的定义,由上层场景决定,例如在当前隐私合规监管态势下,我们不允许非预期的,代码直接调用系统敏感API,那么“对系统敏感API的直接调用”就是不合理。java代码治理,正是围绕这种“不合理“代码使用,逐步展开。 基础知识 本章不会介绍java语言本身,相信大家对此已有足够熟悉。相对的,会从工程应用角度,讲解几个有意思的技术点。 1.1 由源码到apk 源代码是如何经历多重处理,最终呈现在apk中,了解这个过程,有助于我们认清java代码腐化的一些原因。从apk构建视角来看,java(kotlin)代码完整处理过程如下: 上述流程中,无论是java还是kotlin代码,都会首先编译为jvm字节码。这里需要...