【问题标题】:Getting "debuggable" value of androidManifest from code?从代码中获取 androidManifest 的“可调试”值?
【发布时间】:2010-11-25 12:06:04
【问题描述】:

我在 Android 提供的 Log.java 之上编写了一个包装器。 My Class 将在 Logs 中添加一些其他应用程序级别的功能。

现在我想从代码中检查 androidManifest.xml 文件中的“可调试”是否设置为“真”或“假”。

我可以这样做吗?如果是,怎么做?

【问题讨论】:

标签: android android-manifest


【解决方案1】:

使用PackageManager 在您的应用程序中获取ApplicationInfo 对象,并检查flags 字段中的FLAG_DEBUGGABLE

boolean isDebuggable = (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE));

【讨论】:

  • 如果您对 sn-ps 感到困惑;这是因为 android 使用bit flags 存储应用程序信息布尔值,这种技术使用一种有效的方式来使用尽可能少的内存来存储许多布尔值。
【解决方案2】:

您现在可以使用静态布尔字段BuildConfig.DEBUG 来实现相同的目的。这个类是在编译过程中生成的,可以在你的gen文件夹中看到。

【讨论】:

  • 这是正确的做法,我认为后期构建工具 17.
  • 这是更好的解决方案。与接受的答案不同,这为您提供了最终字段。这样,依赖于该标志的调试代码将变得无法访问并被编译器剥离。
  • 警告:此方法无效。 BuildConfig.DEBUG 在发布版本中报告误报。我已切换到 ApplicationInfo.FLAG_DEBUGGABLE 方法以获得正确的值。 code.google.com/p/android/issues/detail?id=27940
  • 错误警告: @David Manpearl,这绝不会导致误报。我总是在没有错误的发布应用程序中使用它。
  • BuildConfig 是一个生成的类,因此如果您正在开发应用程序,它可以正常工作。如果您正在开发一个库并且想要测试包含您的库的应用程序是否可调试,则不能使用 BuildConfig(因为您的库对应用程序的 BuildConfig 类一无所知)。也使用 ApplicationInfo.FLAG_DEBUGGABLE。
猜你喜欢
  • 2021-01-03
  • 1970-01-01
  • 2011-05-28
  • 1970-01-01
  • 2014-08-15
  • 2015-12-16
  • 2012-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多