我正在寻找一种解决方案,可以从adb访问我们应用的内部状态以进行调试。 我已经使用了很多dumpsys来获取系统服务的内部状态,所以现在我想知道我是否可以从我们的应用程序公开接口到adb。到目前为止,我唯一想到的是定期记录信息,然后只读logcat,但如果可能,我希望能够通过adb直接与应用程序进行交互,所以问题是如何在我们的应用程序中实现这一点。
答案 0 :(得分:2)
在您的Activity
覆盖dump()
方法中,例如:
@Override
public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) {
//super.dump(prefix, fd, writer, args);
writer.println();
writer.println("command line arguments:");
writer.format("length: %d, args: %s", args.length, Arrays.toString(args)).println();
}
然后启动您的Activity
并输入终端:
adb shell dumpsys activity top your cmd line arguments
或:
adb shell dumpsys activity top
如果您不想将任何参数传递给dump()
方法
Service
或ContentProvider
等其他组件中也存在相同的方法-有关如何使用adb shell dumpsys activity
命令调用它们的信息,请参见其官方文档,也有具有其{{ 1}}个可用于转储其内部状态的方法-例如dump()
,ApplicationInfo
,ActivityInfo
,Looper
,Handler
,{{1} }和许多其他