Android 如何使用proguard.cfg保留我的测试方法
对于我的Android工具测试,我需要一些额外的入口点进入我的类。这些方法没有在实际应用中使用。我的想法是从Android 如何使用proguard.cfg保留我的测试方法,android,proguard,Android,Proguard,对于我的Android工具测试,我需要一些额外的入口点进入我的类。这些方法没有在实际应用中使用。我的想法是从test\uuu开始,并有一个一般规则,将它们排除在优化之外。这就是我取得的成绩: -keepclassmembers class com.xxx.**.* { public ** test_* (); public ** test_* (**); public static ** test_* (); public static ** test_* (**
test\uuu
开始,并有一个一般规则,将它们排除在优化之外。这就是我取得的成绩:
-keepclassmembers class com.xxx.**.* {
public ** test_* ();
public ** test_* (**);
public static ** test_* ();
public static ** test_* (**);
}
但它仍然不起作用publicstaticvoidtest\u destroy(最终的android.content.Context上下文)
和私有voiddroptables(最终的SQLiteDatabase db)
刚刚从代码中删除。我不知道为什么
它如何正确地用于通配符模式?解决方案是
-keepclassmembers class com.XXX.**.* {
*** test_* (...);
}
另一种方法是使用注释(即guava的@VisibleForTesting)来标记这些方法。然后在proguard中,您可以使用该注释保留所有入口点和成员:
-keep @com.google.common.annotations.VisibleForTesting class *
-keepclasseswithmembers class * {
@com.google.common.annotations.VisibleForTesting *;
}
请注意,您必须小心使用的@VisibleForTesting注释在.class文件中可用。例如,android.support.annotations.VisibleForTesting有一个源代码保留策略,因此它不会被保留,因此不能被proguard使用。