Java 如果ProGuard中存在批注,则生成失败

Java 如果ProGuard中存在批注,则生成失败,java,android,android-gradle-plugin,proguard,release,Java,Android,Android Gradle Plugin,Proguard,Release,如果我在应用程序中留下调试代码,我想使生成失败。 是否可以通过ProGuard执行此操作?如果是,怎么做 这就是我目前拥有的: /** Annotate methods that shouldn't be used in production. */ @Retention(RetentionPolicy.CLASS) // TODO which one? @Target({CONSTRUCTOR, METHOD, TYPE}) public @interface DebugHelper { }

如果我在应用程序中留下调试代码,我想使生成失败。
是否可以通过ProGuard执行此操作?如果是,怎么做

这就是我目前拥有的:

/** Annotate methods that shouldn't be used in production. */
@Retention(RetentionPolicy.CLASS) // TODO which one?
@Target({CONSTRUCTOR, METHOD, TYPE})
public @interface DebugHelper {
}

class Utils {
    /**
     * Dig up object's internals (with reflection if need be)
     * and convert them to string. Useful for View/Fragment/Bundle/etc.
     */
    @DebugHelper
    public static String toString(Object value) {
        ...
    }
}
假设我在代码的某个地方意外地留下了一个
Utils.toString(veryBigObject)
。我正在寻找一种方法使它在构建中失败(或者输出一条注释/警告行)。请注意,有许多类和方法是这样注释的,因此逐个列出它们并不是一个解决方案


或者如果上述操作不可行,我也很高兴ProGuard能够摆脱这些调用(以加快发布的应用程序),以及使用
@DebugHelper
注释的所有方法/类(以减小大小)

我试过:

-assumenosideeffects class ** {
    @net.twisterrob.java.annotations.DebugHelper <methods>;
}
-假设无效果类**{
@net.twisterrob.java.annotations.DebugHelper;
}
但它给了我

注意:配置指定类“**”的任何方法都没有任何副作用
注意:有1'-assumenosideeffects'选项试图用通配符匹配所有方法。这可能会导致“wait()”和“notify()”等方法出现问题。您应该更精确地指定方法。()


即使批注非常具体。

在您的情况下,消息是无害的,因为如果指定了批注筛选器,则相应的代码不考虑。

在您的情况下,消息是无害的,因为如果指定了批注筛选器,则相应的代码不考虑