使用 gradle 从发布 apk 文件中删除日志记录

Posted

技术标签:

【中文标题】使用 gradle 从发布 apk 文件中删除日志记录【英文标题】:remove logging from release apk file using gradle 【发布时间】:2015-11-12 10:46:52 【问题描述】:

我正在尝试从发布 apk 文件中删除日志记录。我遵循了使用 BuildConfig.DEBUG 变量的建议,这对于调试版本为 true,否则为 false。

在常量文件中,我有:

public static final LOG_ENABLED = BuildConfig.DEBUG;

然后我在记录之前检查变量。

if(Constants.LOG_ENABLED)
   // print Log

然后,在gradle构建文件中,我添加了android

buildTypes release minifyEnabled true shrinkResources true 。然后我运行gradle assembleRelease,但日志仍然保留在 apk 文件中?

有人可以告诉我我的方式的错误吗?

【问题讨论】:

似乎这会单独删除 log.d() 的日志 不幸的是,甚至 log.d 也没有被删除。看来我做错了什么。 检查此链接是否有帮助 ***.com/questions/9855834/… 如果您基于布尔值进行日志记录,您可以在发布 apk 之前将该变量 LOG_ENABLED 设置为 false 【参考方案1】:

喏,

很抱歉加入派对太晚了,但是:

总的来说,现在我会选择this solution

在您的 sn-p 中,我认为您可能必须明确 boolean 类型:

public static final boolean LOG_ENABLED = BuildConfig.DEBUG;

让它工作,就像在这些其他答案中一样:[1],[2]

从历史上看,BuildConfig.DEBUG; 一直受到known issues 的影响 - 还有with libraries - 可以找到适用于 Eclipse 和 Android Studio 的解决方案,例如 here

希望对你有帮助

祝你有美好的一天, 安东尼诺

【讨论】:

以上是关于使用 gradle 从发布 apk 文件中删除日志记录的主要内容,如果未能解决你的问题,请参考以下文章

Android apk - 如何使用 gradle 从 3rd 方依赖项中排除 .so 文件

从 apk 中删除特定的包类

理解使用Gradle编译打包Android apk

Gradle 构建无法生成 .apk 文件

gradle资料推送

gradle资料推送