【问题标题】:How to keep my test methods with proguard.cfg如何使用 proguard.cfg 保留我的测试方法
【发布时间】:2011-06-01 05:37:11
【问题描述】:

对于我的 Android 仪器测试,我需要在我的课程中添加一些额外的入口点。这些方法在实际应用中并未使用。我的想法是用test_ 开始它们,并有一个通用规则将它们排除在优化之外。这是我走了多远:

-keepclassmembers class com.xxx.**.* {
    public ** test_* ();
    public ** test_* (**);
    public static ** test_* ();
    public static ** test_* (**);
}

但它仍然不起作用。 public static void test_destroy (final android.content.Context context)private void dropTables (final SQLiteDatabase db) 刚刚从代码中删除。我也不知道为什么。

它如何正确用于通配符模式?

【问题讨论】:

    标签: android proguard


    【解决方案1】:

    解决办法是

    -keepclassmembers class com.XXX.**.* {
        *** test_* (...);
    }
    

    【讨论】:

      【解决方案2】:

      另一种方法是使用注释(即 guava 的 @VisibleForTesting)来标记这些方法。然后在 proguard 中,您可以使用该注释保留所有入口点和成员:

      -keep @com.google.common.annotations.VisibleForTesting class *
      
      -keepclasseswithmembers class * {
        @com.google.common.annotations.VisibleForTesting *;
      }
      

      【讨论】:

      • 请注意,您必须注意您使用的 @VisibleForTesting 注释在 .class 文件中可用。例如,android.support.annotations.VisibleForTesting 的 RetentionPolicy 为 SOURCE,因此不会被保留,因此不能被 proguard 使用。
      猜你喜欢
      • 2018-09-27
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-14
      • 2013-03-13
      • 2011-05-18
      • 2012-05-22
      相关资源
      最近更新 更多