Mik*_*ren 7 java android proguard android-proguard
我有一组类(超过50个)包含一些调用的静态方法parse()
,它返回该类的实例.这是其中一个类的示例:
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(...) { ... }
...
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试配置ProGuard来混淆这些类以及除parse(...)
方法之外的所有方法和字段.基本上,我想混淆类名,所有静态和非静态方法,以及类字段.
我试过用:
-keepclassmembers class SomeType {
public static SomeType parse(***);
}
Run Code Online (Sandbox Code Playgroud)
并且工作得很好SomeType
,但是我不想为我的50个课程中的每个课程编写这个规则...所以我怎么能概括它呢?
我试过了:
-keepclassmembers class ** {
public static * parse(***);
}
Run Code Online (Sandbox Code Playgroud)
但是ProGuard抱怨返回类型的语法......
T. *_*art 12
您的规则几乎是正确的,只需使用***
返回类型,它将匹配任何类型:
-keepclassmembers class ** {
public static *** parse(***);
}
Run Code Online (Sandbox Code Playgroud)
也是-keepclassmembers
首选,-keepclasseswithmembers
因为它只保留您指定的方法而不是类本身(在您描述的情况下可能不需要).
如果解析方法有多个参数,则应使用:
-keepclassmembers class ** {
public static *** parse(...);
}
Run Code Online (Sandbox Code Playgroud)
在...
将匹配任何数量的参数任何类型.