如何配置 Proguard 以保持不同 return 次的静态方法
How to configure Proguard to keep static methods with different return times
我有一组 classes(超过 50 个),其中包含一些称为 parse()
的静态方法,return 是 class 的一个实例。这是其中一个 classes:
的例子
class SomeType {
// Parse methods
public static SomeType parse(String text) { ... }
public static SomeType parse(Object obj) { ... }
...
// Other methods
public void static somethingStatic(...) { ... }
public void somethingNotStatic(...) { ... }
...
}
我正在尝试配置 ProGuard 以混淆这些 classes 及其所有方法和字段 except parse(...)
方法。基本上,我想混淆 class 名称、所有静态和非静态方法以及 class 字段。
我试过使用:
-keepclassmembers class SomeType {
public static SomeType parse(***);
}
这对 SomeType
来说效果很好,但我不想为我的 50 个 class 中的每一个都写这个规则...那么我该如何概括它呢?
我试过了:
-keepclassmembers class ** {
public static * parse(***);
}
但是 ProGuard 抱怨 return 类型的语法...
-keepclasseswithmembers class * {
public static *** parse(***);
}
您的规则几乎是正确的,只需使用 ***
作为 return 类型,它将匹配 any 类型:
-keepclassmembers class ** {
public static *** parse(***);
}
此外 -keepclassmembers
比 -keepclasseswithmembers
更受欢迎,因为它只会保留您指定的方法而不是 class 本身(您描述的情况可能不需要) .
如果解析方法有多个参数,您应该使用:
-keepclassmembers class ** {
public static *** parse(...);
}
...
将匹配 any 个 any 类型的参数。
我有一组 classes(超过 50 个),其中包含一些称为 parse()
的静态方法,return 是 class 的一个实例。这是其中一个 classes:
class SomeType {
// Parse methods
public static SomeType parse(String text) { ... }
public static SomeType parse(Object obj) { ... }
...
// Other methods
public void static somethingStatic(...) { ... }
public void somethingNotStatic(...) { ... }
...
}
我正在尝试配置 ProGuard 以混淆这些 classes 及其所有方法和字段 except parse(...)
方法。基本上,我想混淆 class 名称、所有静态和非静态方法以及 class 字段。
我试过使用:
-keepclassmembers class SomeType {
public static SomeType parse(***);
}
这对 SomeType
来说效果很好,但我不想为我的 50 个 class 中的每一个都写这个规则...那么我该如何概括它呢?
我试过了:
-keepclassmembers class ** {
public static * parse(***);
}
但是 ProGuard 抱怨 return 类型的语法...
-keepclasseswithmembers class * {
public static *** parse(***);
}
您的规则几乎是正确的,只需使用 ***
作为 return 类型,它将匹配 any 类型:
-keepclassmembers class ** {
public static *** parse(***);
}
此外 -keepclassmembers
比 -keepclasseswithmembers
更受欢迎,因为它只会保留您指定的方法而不是 class 本身(您描述的情况可能不需要) .
如果解析方法有多个参数,您应该使用:
-keepclassmembers class ** {
public static *** parse(...);
}
...
将匹配 any 个 any 类型的参数。