Proguard 按源文件路径保存

Proguard keep by source file path

Proguard 有选项 -keep-ing a class 基于它的包 name/hierarchy.

是否可以-keep根据源文件的实际路径?

示例:

java/com/a/b/c/Class.java 包含 package com.a.b.c.Class tests/com/a/b/c/ClassTest.java 包含 package com.a.b.c.ClassTest

可能有大量“*Test”classes,我想 Proguard -keep tests/* 下的所有内容用于测试目的。它不应该在 tests/* 目录之外保留任何 class 碰巧匹配“*Test”的文件。

包匹配似乎不可能,因为它与 java/*

下的 classes 具有相同的包

不,这是不可能的。 ProGuard 在应用规则时不考虑文件路径。

您可以在测试中使用注释 类,例如

@TestClass
public class MyTest {
   ...
}

然后添加这样的配置:

-keep @TestClass class * { *; }