-if 在 Proguard 中的含义



对于以下 Proguard 规则(以 Kotlin 序列化为例)

-if @kotlinx.serialization.Serializable class **
-keepclassmembers class <1> {
static <1>$Companion Companion;
}

在这里,-if在上述规则的上下文中的含义是什么?我尝试查看官方的专业保护文档,但找不到有关该文档的任何简单信息

我写了那些ProGuard规则。 :)有关这些更改的拉取请求讨论可能会提供相关背景。

我理解您的困惑,ProGuard 规则文档非常稀疏。

-ifclass_specification

指定present激活后续保留选项(-keep-keepclassmembers,...)。条件和后续的 keep 选项可以共享通配符和对通配符的引用。例如,您可以 保留类的条件是具有相关名称的类存在于 你的项目,使用像dagger和黄油刀这样的框架。

正如您从以下位置复制的规则注释中所写:

# Keep `Companion` object fields of serializable classes.
# This avoids serializer lookup through `getDeclaredClasses` as done for named companion objects.
-if @kotlinx.serialization.Serializable class **
...

因此,-if @kotlinx.serialization.Serializable class **应理解为:对于应用了@Serializable注释的所有类(即"可序列化类")。-keepmembers中的<1>随后引用**通配符,即完全限定的类名。

相关内容

  • 没有找到相关文章

最新更新