如果我在应用中留下调试代码,我想使构建失败 是否可以通过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>;
}
但它给了我
注意:配置指定没有类&#39; **&#39;的方法。有任何副作用 注意:有1&#39; -assumenosideeffects&#39;尝试将所有方法与通配符匹配的选项。这可能会导致`wait()&#39;等方法出现问题。并且&#39;通知()&#39;。您应该更精确地指定方法。 (http://proguard.sourceforge.net/manual/troubleshooting.html#nosideeffects)
即使注释非常具体。
答案 0 :(得分:0)
在您的情况下,该消息是无害的,因为如果指定了注释过滤器,则相应的代码不会考虑。