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()”等方法出现问题。您应该更精确地指定方法。()
即使批注非常具体。在您的情况下,消息是无害的,因为如果指定了批注筛选器,则相应的代码不考虑。在您的情况下,消息是无害的,因为如果指定了批注筛选器,则相应的代码不考虑