在APK中动态启用/禁用调试功能的方法

时间:2012-01-30 20:52:40

标签: android debugging adb

我正在开发一个APK。我希望能够为调试目的设置和取消设置各种选项。例如:

  • 启用时间配置文件跟踪
  • 启用一些实验性功能
  • 启用非常详细的输出到logcat
  • ...

目前,我们通过在代码中为每个功能创建一个标志并设置/取消设置它来实现此目的。但是:

  • 耗时,因为需要重建,上传和重新启动APK
  • 冒着人们在调试模式状态下意外检查内容的风险
  • 需要重建APK - 我们无法要求客户启用调试功能并报告结果。

Android开发人员是否遵循解决此类问题的模式?

过去,我们为此目的使用了环境变量。

2 个答案:

答案 0 :(得分:1)

您可以在apk中使用调试权限SET_DEBUG_APP。创建一个名为

的新类
class MYLog {
i(String Tag, String msg) {
  if(LOG_ENABLED){
  Log.i(TAG, msg);
}

您可以调用MyLog.i而不是Log.i()。您可以从服务器获取LOG_ENABLED值以启用/禁用日志记录。

答案 1 :(得分:0)

我会考虑采用以下两种方式之一,具体取决于您希望向用户展示的此功能的数量:

  • 将调试功能从SharedPreference值中键入,并在UI的首选项/调试菜单中公开它们。

  • 使用外部存储中文件的状态/内容,您可以将文件通过电子邮件发送到&指示最终用户将其放置在何处以启用调试功能。

选项2与使用环境变量的概念差别不大。