| #!/system/bin/sh |
| |
| # TODO: restructure this to keep bugreports entirely on internal storage |
| |
| # Do not allow bugreports on user builds unless USB debugging |
| # is enabled. |
| if [ "x$(getprop ro.build.type)" = "xuser" -a \ |
| "x$(getprop init.svc.adbd)" != "xrunning" ]; then |
| exit 0 |
| fi |
| |
| # Build emulated storage paths when appropriate |
| # See storage config details at http://source.android.com/tech/storage/ |
| if [ -n "$EMULATED_STORAGE_SOURCE" ]; then |
| writePath="$EMULATED_STORAGE_SOURCE/0" |
| readPath="$EMULATED_STORAGE_TARGET/0" |
| else |
| writePath="$EXTERNAL_STORAGE" |
| readPath="$EXTERNAL_STORAGE" |
| fi |
| |
| tmpPath="/data/local/tmp" |
| bugreportPath="bugreports" |
| screenshotPath="Pictures/Screenshots" |
| |
| # Create directories if needed |
| if [ ! -e "$writePath/$bugreportPath" ]; then |
| mkdir "$writePath/$bugreportPath" |
| fi |
| if [ ! -e "$writePath/$screenshotPath" ]; then |
| mkdir "$writePath/$screenshotPath" |
| fi |
| |
| timestamp=`date +'%Y-%m-%d-%H-%M-%S'` |
| |
| # take screen shot |
| # we run this as a bg job in case screencap is stuck |
| /system/bin/screencap -p "$writePath/$screenshotPath/Screenshot_$timestamp.png" & |
| |
| # run bugreport |
| /system/bin/dumpstate -o "$tmpPath/bugreport-$timestamp" $@ |
| |
| # copy finished bugreport into place for sending |
| cp "$tmpPath/bugreport-$timestamp.txt" "$writePath/$bugreportPath/bugreport-$timestamp.txt" |
| # clean up any remaining files |
| rm $tmpPath/bugreport* |
| |
| # invoke send_bug to look up email accounts and fire intents |
| # make it convenient to send bugreport to oneself |
| /system/bin/send_bug "$readPath/$bugreportPath/bugreport-$timestamp.txt" "$readPath/$screenshotPath/Screenshot_$timestamp.png" |