【问题标题】:Android disable logcat I/System of command processAndroid disable logcat I/System of command process
【发布时间】:2015-08-17 19:11:00
【问题描述】:

我使用 Process 来运行命令行指令。

当我运行一条指令时,应用程序将在 logcat 上显示“I/System: exec(MY_INSTRUCTIONS)”。

但是因为我正在为其他人开发私有SDK,所以我必须禁用logcat上的消息。

我的代码如下:

String[] command = {"ls", "-rf"};
ProcessBuilder pb = new ProcessBuilder(command);
try {
    Process process = pb.start();
} catch (IOException e) {
    e.printStackTrace();
}

logcat 消息如下所示:

I/System﹕ exec(ls -rf @ com.mypackage.MainActivity.cli:152)

我知道 proguard 可以删除所有日志消息,但禁用“android.util.Log”消息无法正确禁用此系统消息。

请帮助我禁用此 logcat 消息或通过 proguard 删除消息。

【问题讨论】:

  • 你需要删除 logcat 消息吗?
  • 我想让这条消息不再显示在 logcat 上。
  • 也许有另一种方法可以在没有 ProcessBuilder 的情况下完成您想做的事情。您当然可以使用纯 Java 执行该命令,而根本不需要 ProcessBuilder。
  • @Yepher 我用Runtime.getRuntime().exec("MY_INSTRUCTIONS") 做同样的事情,但我得到了相同的日志。你能给我另一种方法吗?
  • 如果您的命令是 ("ls", "-rf"),那么您可以使用 File 并查看目录中的文件。见stackoverflow.com/a/5694398/1733038

标签: android android-logcat


【解决方案1】:

在proguard中你可以添加这些enteries

-assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** w(...);
    public static *** v(...);
    public static *** i(...);
}

【讨论】:

  • 感谢您的回答。但是如果我仍然需要显示其他信息,如何使用 proguard 来过滤呢?
  • 您可以在此处阅读有关ProGuard 的更多信息
  • 过滤proguard enteries,阅读以下stackoverflow.com/a/20413942/1061944
  • 可以用shell命令完成,但我不推荐。
  • shell 命令带有系统权限,所以我不推荐它。您可以在他们的 Developer Portal 上阅读有关 Android 安全性的信息
猜你喜欢
  • 2022-12-01
  • 2022-12-27
  • 2013-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-02
相关资源
最近更新 更多