Skip to content

Instantly share code, notes, and snippets.

@osfunapps
Created May 4, 2020 07:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save osfunapps/aee9c6cd584f8356f16b5501613a8b64 to your computer and use it in GitHub Desktop.
Save osfunapps/aee9c6cd584f8356f16b5501613a8b64 to your computer and use it in GitHub Desktop.
Will install an apk, take screen shots and a bunch of other things using Android's ADB
#!/usr/bin/env bash
APK_VERSION_NUMBER=2
APPS_ROOT_PATH="/Users/home/Desktop/stock_exchange/latest_work/appr_14_"
# Will initiate the adb cycle
start_adb_ss_cycle () {
# create ss dir
ss_dir="$1/ss"
mkdir ${ss_dir}
# save variables
package_name=$(basename "$1") # save the package name as variable
apk_file_path="$1/$APK_VERSION_NUMBER.apk"
# install apk:
echo "INFO: Installing apk ${package_name}"
adb install ${apk_file_path}
# enter:
echo "INFO: Install finished. Opening"
adb shell am start -n ${package_name}"/"${package_name}".main.MainActivity"
# fire a lot of ss try outs every a few millis
random_num=$((RANDOM % 10000))
adb exec-out screencap -p > "${ss_dir}/ss1_${random_num}.png"
# wait a bit:
sleep 0.1
random_num=$((RANDOM % 10000))
adb exec-out screencap -p > "${ss_dir}/ss1_${random_num}.png"
# wait a bit:
sleep 0.1
random_num=$((RANDOM % 10000))
adb exec-out screencap -p > "${ss_dir}/ss1_${random_num}.png"
# wait a bit:
sleep 0.1
random_num=$((RANDOM % 10000))
adb exec-out screencap -p > "${ss_dir}/ss1_${random_num}.png"
# wait a bit:
sleep 0.1
random_num=$((RANDOM % 10000))
adb exec-out screencap -p > "${ss_dir}/ss1_${random_num}.png"
# wait a bit:
sleep 0.1
random_num=$((RANDOM % 10000))
adb exec-out screencap -p > "${ss_dir}/ss1_${random_num}.png"
# wait a bit:
sleep 0.1
# wait a bit:
sleep 10
# take main screen shot
adb exec-out screencap -p > "${ss_dir}/ss2.png"
# scroll down:
adb shell input swipe 500 1000 300 300
# take second main screen shot:
adb exec-out screencap -p > "${ss_dir}/ss3.png"
# go to first stock
adb shell input keyevent 61
# wait a bit:
sleep 1
# click tab:
adb shell input keyevent 61
# click enter:
adb shell input keyevent 66
# wait 3 seconds
sleep 3
# take first stock ss:
adb exec-out screencap -p > "${ss_dir}/ss4.png"
# click back. Go back to the list of stocks:
adb shell input keyevent 4
# wait a bit
sleep 2
# click tab (go to seconds stock):
adb shell input keyevent 61
# click enter:
adb shell input keyevent 66
# wait a bit to stock to load
sleep 3
# take ss:
adb exec-out screencap -p > "${ss_dir}/ss5.png"
# uninstall:
adb uninstall ${package_name}
}
# will check if directory is empty
is_ss_created_successfully () {
ss_files_path="$1/ss/*"
ss_files=(${ss_files_path})
ss_files_count=${#ss_files[@]}
if [[ "$ss_files_count" -gt 1 ]];then
return 0
else
return 1
fi
}
# set properties on startup
apps_dirs_list=(${APPS_ROOT_PATH}/*)
apps_dirs_count=${#apps_dirs_list[@]}
# create finished apps directory
apps_dir_parent="$(dirname "$APPS_ROOT_PATH")"
finished_apps_root_path="${apps_dir_parent}/apps_with_screen_shots"
if [[ ! -d "$finished_apps_root_path" ]]; then
mkdir ${finished_apps_root_path}
fi
# run on all of the apps in the parent apps directory
i=0
while (($i<${apps_dirs_count})); do
curr_app_path=${apps_dirs_list[i]}
package_name=${curr_app_path##*/}
echo "****************************************************************************************"
echo "- INFO: Working on ${package_name}"
start_adb_ss_cycle ${curr_app_path}
if is_ss_created_successfully ${curr_app_path}
then
(( i++ ))
copy_location="${finished_apps_root_path}/${package_name}"
echo "INFO: $package_name screen shot creation completed. Copying dir to ${copy_location}"
mv -v ${curr_app_path} ${copy_location}
else
echo "- ATTENTION: screen shot creation failed on $curr_app_path. Tell me when to run again [run]"
read ans
echo "running again..."
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment