【问题标题】:Cannot stripe out the Log outputs of the linked library using ProGuard无法使用 ProGuard 剥离链接库的日志输出
【发布时间】:2014-04-12 12:26:21
【问题描述】:

我正在使用here 建议的方法来删除我发布的 APK 中的日志。我为此使用以下配置:

-dontskipnonpubliclibraryclasses
-dontobfuscate
-forceprocessing
-optimizationpasses 5
-keepattributes
-assumenosideeffects class android.util.Log {
    public static boolean isLoggable(java.lang.String, int);
    public static int v(...);
    public static int i(...);
    public static int w(...);
    public static int d(...);
    public static int e(...);
}

这适用于我自己的日志调用。但是,我链接到我的项目中的一个库,该库也在我的工作区中。据我所知,这个配置也应该适用于链接库。但是当我在我的 USB 连接设备上运行发布 APK 时,来自链接库的 Log.d(...) 输出仍然存在。我不能把它们剥掉。为什么不呢?

顺便说一句,我在 Eclipse ADT 包中使用 右键单击 -> android 工具 -> 导出签名的 APK 方法来生成发布 APK。

【问题讨论】:

  • 您确定Log.d 在库中使用吗?可能是Log.println
  • 是的,我确信只使用了 Log.d。我可以看到源代码。

标签: android logging apk proguard


【解决方案1】:

要删除日志记录,您需要确保启用 ProGuard 的优化步骤。它在 Android SDK 的默认配置文件中被禁用。在您的project.properties 中将proguard-android.txt 替换为proguard-android-optimize.txt

proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt

请注意,ProGuard 不会区分您的代码和库代码。

【讨论】:

  • 感谢您的信息。我觉得这很奇怪,因为只使用 proguard-android.txt DIDmy own project 中删除日志。但是链接项目的日志输出仍在打印。这与评论“ProGuard 不会在您的代码和库代码之间做出任何区分”相矛盾。但无论如何,我将proguard-android.txt 更改为proguard-android-optimize.txt,现在我正在处理另一个错误,即“转换为dalvik 格式失败并出现错误-1”
  • 好的,我在此处找到的提示的帮助下解决了问题:viktorbresan.blogspot.com.tr/2012/10/…。现在没有日志输出了。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多