在构建时删除跟踪日志记录(和其他)语句

如果要删除对某些方法的调用,假设它们返回 void 并且没有副作用(例如,调用它们不会更改任何系统值,引用参数,静态等),那么你可以让 ProGuard 将它们从构建完成后的输出。

例如,我发现这对于删除在调试中有用的调试/详细日志记录语句很有用,但在生产中不需要为它们生成字符串。

# Remove the debug and verbose level Logging statements.
# That means the code to generate the arguments to these methods will also not be called.
# ONLY WORKS IF -dontoptimize IS _NOT_ USED in any ProGuard configs
-assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** v(...);
}

注意:如果在任何 ProGuard 配置中使用 -dontoptimize,以便它不会缩小/删除未使用的代码,那么这将不会删除语句。 (但谁不想删除未使用的代码,对吧?)

注意 2:此调用将删除对日志的调用,但不会保护你的代码。字符串实际上将保留在生成的 apk 中。详情请阅读这篇文章