Index: platform_tools/android/bin/android_perf |
diff --git a/platform_tools/android/bin/android_perf b/platform_tools/android/bin/android_perf |
old mode 100644 |
new mode 100755 |
index 5e4b7c8b7a1d2da83990c8f5d3b05988383bd078..58e43202a44f272a4d1984382e0e3678e10fdb36 |
--- a/platform_tools/android/bin/android_perf |
+++ b/platform_tools/android/bin/android_perf |
@@ -9,8 +9,7 @@ |
# |
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" |
-PERF_CMD=$1 |
- |
+source $SCRIPT_DIR/android_setup.sh |
source $SCRIPT_DIR/utils/setup_adb.sh |
if [ $(uname) == "Linux" ]; then |
@@ -22,77 +21,70 @@ else |
exit 1; |
fi |
+# grab and remove the perf command from the input args |
+PERF_CMD=${APP_ARGS[0]} |
+unset APP_ARGS[0] |
+ |
+configuration="Debug" |
+ |
+for arg in ${APP_ARGS[@]} |
+do |
+ if [[ "${arg}" == "--release" ]]; |
+ then |
+ configuration="Release" |
+ else |
+ echo "${arg}" |
+ runVars=("${runVars[@]}" "${arg}") |
+ fi |
+ |
+shift |
+done |
+ |
# We need the debug symbols from these files |
PERF_TMP_DIR=$(pwd)/android_perf_tmp |
TMP_SYS_BIN=$PERF_TMP_DIR/system/bin |
TMP_SYS_LIB=$PERF_TMP_DIR/system/lib |
-TMP_APP_LIB=$PERF_TMP_DIR/data/data/com.skia/lib |
+TMP_APP_LOC=$PERF_TMP_DIR/data/local/tmp |
perf_setup() { |
mkdir -p $TMP_SYS_BIN |
mkdir -p $TMP_SYS_LIB |
- mkdir -p $TMP_APP_LIB |
+ mkdir -p $TMP_APP_LOC |
- # setup symlinks to account for perf potentially looking elsewhere |
- mkdir -p $PERF_TMP_DIR/data/app-lib |
- $( cd $PERF_TMP_DIR/data/app-lib && ln -s ../data/com.skia/lib com.skia-1) |
- $( cd $PERF_TMP_DIR/data/app-lib && ln -s ../data/com.skia/lib com.skia-2) |
- |
echo "Copying symbol files" |
- $ADB pull /system/bin/skia_launcher $TMP_SYS_BIN |
- $ADB pull /system/lib/libc.so $TMP_SYS_LIB |
- $ADB pull /system/lib/libstlport.so $TMP_SYS_LIB |
- $ADB pull /system/lib/libcutils.so $TMP_SYS_LIB |
- $ADB pull /system/lib/libGLESv2.so $TMP_SYS_LIB |
- $ADB pull /system/lib/libandroid.so $TMP_SYS_LIB |
- $ADB pull /system/lib/libm.so $TMP_SYS_LIB |
- $ADB pull /system/lib/libz.so $TMP_SYS_LIB |
- |
- if [ $# -ge 2 ] |
+ adb_pull_if_needed /system/lib/libc.so $TMP_SYS_LIB |
+ adb_pull_if_needed /system/lib/libstlport.so $TMP_SYS_LIB |
+ adb_pull_if_needed /system/lib/libcutils.so $TMP_SYS_LIB |
+ adb_pull_if_needed /system/lib/libGLESv2.so $TMP_SYS_LIB |
+ adb_pull_if_needed /system/lib/libandroid.so $TMP_SYS_LIB |
+ adb_pull_if_needed /system/lib/libm.so $TMP_SYS_LIB |
+ adb_pull_if_needed /system/lib/libz.so $TMP_SYS_LIB |
+ |
+ if [ ! -f "${SKIA_OUT}/${configuration}/lib.target/lib${runVars[0]}.so" ]; |
then |
- APP_NAME=$(basename $2) |
- $ADB pull /data/data/com.skia/lib/lib${APP_NAME}.so $TMP_APP_LIB |
- else |
- $ADB pull /data/data/com.skia/lib/ $TMP_APP_LIB |
+ echo "Unable to find the ${runVars[0]} library" |
+ exit 1 |
fi |
- |
+ echo "Pushing app..." |
+ adb_push_if_needed "${SKIA_OUT}/${configuration}/skia_launcher" /data/local/tmp |
+ adb_push_if_needed "${SKIA_OUT}/${configuration}/lib.target/libskia_android.so" /data/local/tmp |
+ adb_push_if_needed "${SKIA_OUT}/${configuration}/lib.target/lib${runVars[0]}.so" /data/local/tmp |
+ |
+ cp "${SKIA_OUT}/${configuration}/skia_launcher" $TMP_APP_LOC |
+ cp "${SKIA_OUT}/${configuration}/lib.target/libskia_android.so" $TMP_APP_LOC |
+ cp "${SKIA_OUT}/${configuration}/lib.target/lib${runVars[0]}.so" $TMP_APP_LOC |
} |
perf_record() { |
- APP_NAME=$(basename $2) |
- # Collect extra arguments to be passed to the skia_launcher binary |
- shift # perf_cmd |
- shift # app_name |
- while (( "$#" )); do |
- APP_ARGS="$APP_ARGS $1" |
- shift |
- done |
- |
- echo "Checking for skia_launcher app..." |
- if [ ! -f $TMP_SYS_BIN/skia_launcher ] |
- then |
- echo "Unable to find the skia_launcher on the device" |
- rm -rf $PERF_TMP_DIR |
- exit 1; |
- fi |
- |
- echo "Checking for $APP_NAME library..." |
- if [ ! -f $TMP_APP_LIB/lib$APP_NAME.so ] |
- then |
- echo "Unable to find the app's shared library on the device" |
- rm -rf $PERF_TMP_DIR |
- exit 1; |
- fi |
- |
echo "Killing any running Skia processes." |
$ADB shell ps | grep skia_launcher | awk '{print $2}' | xargs $ADB shell kill |
echo "Starting application" |
- $ADB shell skia_launcher $APP_NAME $APP_ARGS & |
+ $ADB shell /data/local/tmp/skia_launcher ${runVars[@]} & |
# WE REALLY REALLY WANT TO BE ABLE TO PASS THE SKIA_LAUNCHER APP DIRECTLY TO |
# PERF, BUT AT THIS POINT THE DATA FILE WE GET WHEN GOING THAT ROUTE IS UNABLE |
@@ -107,13 +99,8 @@ perf_record() { |
} |
perf_report() { |
- # Collect extra arguments to be passed to the perfhost binary |
- while (( "$#" )); do |
- APP_ARGS="$APP_ARGS $1" |
- shift |
- done |
- |
- $PERFHOST report -i $PERF_TMP_DIR/perf.data --symfs=$PERF_TMP_DIR $APP_ARGS |
+ adb_pull_if_needed /data/perf.data $PERF_TMP_DIR/perf.data |
+ $PERFHOST report -i $PERF_TMP_DIR/perf.data --symfs=$PERF_TMP_DIR ${runVars[@]} |
} |
# Clean up |
@@ -123,11 +110,11 @@ perf_clean() { |
case $PERF_CMD in |
setup) |
- perf_setup $@ |
+ perf_setup ${runVars[@]} |
;; |
record) |
- perf_setup $@ |
- perf_record $@ |
+ perf_setup ${runVars[@]} |
+ perf_record ${runVars[@]} |
;; |
report) |
perf_report |