summaryrefslogtreecommitdiff
path: root/cmds/dumpstate/README.md
blob: 26dabbbcef8800d959c05248d61a52148543ab89 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# `dumpstate` development tips

## To build `dumpstate`

Do a full build first:

```
m -j dumpstate
```

Then incremental ones:

```
mmm -j frameworks/native/cmds/dumpstate
```

If you're working on device-specific code, you might need to build them as well.
Example:

```
mmm -j frameworks/native/cmds/dumpstate device/acme/secret_device/dumpstate/ hardware/interfaces/dumpstate
```

## To build, deploy, and take a bugreport

```
mmm -j frameworks/native/cmds/dumpstate && adb push ${OUT}/system/bin/dumpstate system/bin && adb push ${OUT}/system/lib64/*dumpstate*.so /system/lib64/ && adb shell am bug-report
```

Make sure that the device is remounted before running the above command. * If
you're working with `userdebug` variant, you may need to run the following to
remount your device:

```
  adb root && adb remount -R && adb wait-for-device && adb root && adb remount
```

*   If you're working with `eng` variant, you may need to run the following to
    remount your device:

    ```
    adb root && adb remount
    ```

## To build, deploy, and run unit tests

First create `/data/nativetest64`:

```
adb shell mkdir /data/nativetest64
```

Then run:

```
mmm -j frameworks/native/cmds/dumpstate/ && adb push ${OUT}/data/nativetest64/dumpstate_* /data/nativetest64 && adb shell /data/nativetest64/dumpstate_test/dumpstate_test
```

And to run just one test (for example, `DumpstateTest.RunCommandNoArgs`):

```
mmm -j frameworks/native/cmds/dumpstate/ && adb push ${OUT}/data/nativetest64/dumpstate_test* /data/nativetest64 && adb shell /data/nativetest64/dumpstate_test/dumpstate_test --gtest_filter=DumpstateTest.RunCommandNoArgs
```

## To take quick bugreports

```
adb shell setprop dumpstate.dry_run true
```

## To emulate a device with user build

```
adb shell setprop dumpstate.unroot true
```

## To change the `dumpstate` version

```
adb shell setprop dumpstate.version VERSION_NAME
```

Example:

```
adb shell setprop dumpstate.version split-dumpsys && adb shell dumpstate -v
```

Then to restore the default version:

```
adb shell setprop dumpstate.version default
```

## To set Bugreport API workflow for bugreport

```
adb shell setprop settings_call_bugreport_api true
```

## Code style and formatting

Use the style defined at the
[Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) and
make sure to run the following command prior to `repo upload`:

```
git clang-format --style=file HEAD~
```

## Useful Bash tricks

```
export BR_DIR=/bugreports

alias br='adb shell cmd activity bug-report'
alias ls_bugs='adb shell ls -l ${BR_DIR}/'

unzip_bug() {
  adb pull ${BR_DIR}/$1 && emacs $1 && mv $1 /tmp
}

less_bug() {
  adb pull ${BR_DIR}/$1 && less $1 && mv $1 /tmp
}

rm_bugs() {
 if [ -z "${BR_DIR}" ] ; then echo "Variable BR_DIR not set"; else adb shell rm -rf ${BR_DIR}/*; fi
}

```