从 Play 商店下载的应用程序的 Android 日志输出是否可见?
Is Android log output visible for apps downloaded from the Play store?
如果我通过 USB(和 运行 Android Studio)将设备连接到我的计算机,是否有(可能是隐藏的)技术允许查看从下载的应用程序发出的所有日志消息?
如果是,这显然意味着在发布之前应仔细检查日志输出,以免它们泄露任何内容,例如生产系统资源的完整 Web URL 等。
是的,如果您为日志编写代码,所有日志在输出中都是可见的。
是的,从 Play 商店下载的应用程序可以看到日志消息,你是对的;这是一个安全问题。从下载的应用程序中查看日志就像插入 phone 和 运行 adb logcat
.
一样简单
因此,您需要使用像 Timber 这样的库,它允许您仅在调试模式下登录,或者使用 ProGuard 在编译时去除所有日志:
-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(...);
}
值得注意的是,日志记录也会对您的应用程序的性能产生一点影响,因此值得 disabling/removing 无论如何都在生产环境中为此进行所有日志记录。
是的,在为发布构建时,您不应包含任何输出任何敏感数据的日志
如果我通过 USB(和 运行 Android Studio)将设备连接到我的计算机,是否有(可能是隐藏的)技术允许查看从下载的应用程序发出的所有日志消息?
如果是,这显然意味着在发布之前应仔细检查日志输出,以免它们泄露任何内容,例如生产系统资源的完整 Web URL 等。
是的,如果您为日志编写代码,所有日志在输出中都是可见的。
是的,从 Play 商店下载的应用程序可以看到日志消息,你是对的;这是一个安全问题。从下载的应用程序中查看日志就像插入 phone 和 运行 adb logcat
.
因此,您需要使用像 Timber 这样的库,它允许您仅在调试模式下登录,或者使用 ProGuard 在编译时去除所有日志:
-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(...);
}
值得注意的是,日志记录也会对您的应用程序的性能产生一点影响,因此值得 disabling/removing 无论如何都在生产环境中为此进行所有日志记录。
是的,在为发布构建时,您不应包含任何输出任何敏感数据的日志