Skip to content

Instantly share code, notes, and snippets.

@MarioNoll
Created January 23, 2024 18:29
Show Gist options
  • Select an option

  • Save MarioNoll/c01296ee5aa4f7583530858a6ffb4d1c to your computer and use it in GitHub Desktop.

Select an option

Save MarioNoll/c01296ee5aa4f7583530858a6ffb4d1c to your computer and use it in GitHub Desktop.
Android Debug Bridge - Unleashed
#!/bin/zsh
adbs() {
device=$(__select_device)
if [[ -n "${device}" ]]; then
adb -s "$device" "$@"
else
echo "Please connect a device first..."
fi
}
adba() {
devices=($(__unique_devices))
if [[ -n "${devices}" ]]; then
for device in "${devices[@]}"; do
echo "$device:"
adb -s "$device" "$@"
done
else
echo "Please connect a device first..."
fi
}
adbc() {
local phone="192.168.10.111" # Ip address of your phone
local port
port=$( nmap -sT "${phone}" -p30000-49999 | awk -F/ '/tcp open/{print $1}' )
adb connect "$phone":"$port"
}
rec() {
device=$(__select_device)
if [[ -n "${device}" ]]; then
filename="$(date "+%Y%m%d_%H%M%S").mp4"
recording="$HOME/Videos/$filename"
compressed="/tmp/$filename"
gum spin --title="Recording $device" -- bash -c "scrcpy --record=$recording --no-audio --show-touches --serial=$device"
gum spin --title="Compressing" -- bash -c "ffmpeg -i $recording -vcodec libx265 -crf 28 $compressed"
rm "$recording"
mv "$compressed" "$recording"
gum style --foreground 212 --border-foreground 212 --width 50 --padding "1 2" --bold "Recording: $recording"
else
echo "Please connect a device first..."
fi
}
mir() {
device=$(__select_device)
if [[ -n "${device}" ]]; then
gum spin --title="Mirroring $device" -- bash -c "scrcpy --window-borderless --no-audio --show-touches --serial=$device"
else
echo "Please connect a device first..."
fi
}
__select_device() {
____select_device | tail -n 1
}
____select_device() {
devices=($(__unique_devices))
if [ "${#devices[@]}" -eq 0 ]; then
exit 1
elif [ "${#devices[@]}" -eq 1 ]; then
echo "${devices[1]}"
else
local selectable_devices=()
local index=1
for device in "${devices[@]}"; do
local sdk
sdk=$(adb -s "$device" shell getprop ro.build.version.sdk)
local androidVersion
androidVersion=$(adb -s "$device" shell getprop ro.build.version.release)
local formatted_text
formatted_text=$(printf '(%s) %-15s %-6s %s\n' "$index" "$device" " SDK $sdk" " 🤖 $androidVersion")
selectable_devices+=("$formatted_text")
((index++))
done
local device
device=$(bash -c 'gum choose "${@}"' _ "${selectable_devices[@]}")
index=${selectable_devices[(Ie)$device]}
echo "${devices[$index]}"
fi
}
__unique_devices() {
adb devices | sed -E '/List of devices attached|daemon started successfully/d' | sed -r '/no permissions;/d' | sed -r '/^\s*$/d' | sed 's/\s.*$//' | sort -u | cat
}
@MarioNoll

Copy link
Copy Markdown
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment