www.jensolsson.se
www.jensolsson.se

Reputation: 3073

Dumpsys-like functionality for apk app

I am looking for a solution to access the internal state of our app from adb for debugging purposes. I have used dumpsys a lot to get the internal state of system services so now I wonder if I can expose an interface from our app to adb. The only thing I have thought of so far is to log the information periodically and then just read logcat but if possible I would like to be able to interact directly with the app over adb so question is how to implement this in our app.

Upvotes: 2

Views: 2531

Answers (1)

pskink
pskink

Reputation: 24720

in your Activity override dump() method, for example:

@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();
}

then start your Activity and type in the terminal:

adb shell dumpsys activity top your cmd line arguments

or:

adb shell dumpsys activity top

if you don't want to pass any arguments to dump() method

the same method exists in other components like Service or ContentProvider - see their official documentation on how to invoke them by using adb shell dumpsys activity command, also there are classes that have their dump() methods that can be used to dump their internal state - for example ApplicationInfo, ActivityInfo, Looper, Handler, Binder, Fragment and many others

Upvotes: 5

Related Questions