summaryrefslogtreecommitdiff
path: root/cmds/dumpstate/README.md
blob: 1bf55e4decec890377ebf46e8b8def5e6dcd6be3 (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
# `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
```

## 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
}

```