以下是Proguard规则(以Kotlin序列化为例):
-if @kotlinx.serialization.Serializable class **
-keepclassmembers class <1> {
static <1>$Companion Companion;
}
在上述规则的背景下,-if
的含义是什么?我尝试查看官方的proguard文档,但没有找到易于理解的相关信息。
以下是Proguard规则(以Kotlin序列化为例):
-if @kotlinx.serialization.Serializable class **
-keepclassmembers class <1> {
static <1>$Companion Companion;
}
在上述规则的背景下,-if
的含义是什么?我尝试查看官方的proguard文档,但没有找到易于理解的相关信息。
正如您从中复制规则的注释所写的那样:
-if
class_specification指定必须存在的类和类成员,以激活后续的保留选项(
-keep
,-keepclassmembers
,...)。条件和后续的保留选项可以共用通配符和通配符引用。例如,您可以在满足项目中存在相关名称的类的情况下保留类,使用像Dagger和Butterknife这样的框架。
# 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>
随后引用通配符 **
,即完全限定类名。