xref: /aosp_15_r20/tools/trebuchet/scripts/run-startup.sh (revision 56b170dbe6574b1f0ec9db7a63de7238ca6a09ea)
1*56b170dbSXin Li#!/bin/bash -x
2*56b170dbSXin Li
3*56b170dbSXin Li# usage: run-startup.sh <package name> <activity name>
4*56b170dbSXin Li
5*56b170dbSXin Li# Runs an Android app, collects a trace and prints out a summary of startup
6*56b170dbSXin Li# metrics.
7*56b170dbSXin Li
8*56b170dbSXin LiPACKAGE=$1
9*56b170dbSXin LiACTIVITY=$2
10*56b170dbSXin Li
11*56b170dbSXin LiADB=adb
12*56b170dbSXin Li
13*56b170dbSXin Li# Make sure we use the right adb, etc.
14*56b170dbSXin Li$ADB root
15*56b170dbSXin Li
16*56b170dbSXin Li# Stop the app
17*56b170dbSXin Li$ADB shell "am force-stop $PACKAGE"
18*56b170dbSXin Li
19*56b170dbSXin Li# Make sure it's compiled for speed
20*56b170dbSXin Li$ADB shell "pm compile -m speed $PACKAGE"
21*56b170dbSXin Li
22*56b170dbSXin Li# Clear the page cache
23*56b170dbSXin Li$ADB shell "echo 3 > /proc/sys/vm/drop_caches"
24*56b170dbSXin Li
25*56b170dbSXin Li# Start tracing
26*56b170dbSXin Li$ADB shell "atrace -a $PACKAGE -b 32768 --async_start input dalvik view am wm sched freq idle sync irq binder_driver workq hal freq"
27*56b170dbSXin Li
28*56b170dbSXin Li# Launch the app
29*56b170dbSXin Li$ADB shell "am start -W -n $PACKAGE/$ACTIVITY"
30*56b170dbSXin Li
31*56b170dbSXin Li# Wait a little longer for the app to do whatever it does.
32*56b170dbSXin Lisleep 10
33*56b170dbSXin Li
34*56b170dbSXin Li# Capture the trace
35*56b170dbSXin Li$ADB shell "atrace --async_stop -o /sdcard/atrace.trace"
36*56b170dbSXin Li
37*56b170dbSXin Li# Get the trace
38*56b170dbSXin Li$ADB pull /sdcard/atrace.trace
39*56b170dbSXin Li
40*56b170dbSXin Li# Dump the startup info
41*56b170dbSXin Li./gradlew :trebuchet:startup-analyzer:run --args="`pwd`/atrace.trace"
42