#!/bin/bash -x # usage: run-startup.sh <package name> <activity name> # Runs an Android app, collects a trace and prints out a summary of startup # metrics. PACKAGE=$1 ACTIVITY=$2 ADB=adb # Make sure we use the right adb, etc. $ADB root # Stop the app $ADB shell "am force-stop $PACKAGE" # Make sure it's compiled for speed $ADB shell "pm compile -m speed $PACKAGE" # Clear the page cache $ADB shell "echo 3 > /proc/sys/vm/drop_caches" # Start tracing $ADB shell "atrace -a $PACKAGE -b 32768 --async_start input dalvik view am wm sched freq idle sync irq binder_driver workq hal freq" # Launch the app $ADB shell "am start -W -n $PACKAGE/$ACTIVITY" # Wait a little longer for the app to do whatever it does. sleep 10 # Capture the trace $ADB shell "atrace --async_stop -o /sdcard/atrace.trace" # Get the trace $ADB pull /sdcard/atrace.trace # Dump the startup info ./gradlew :trebuchet:startup-analyzer:run --args="`pwd`/atrace.trace"