42c14fae59
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
61 lines
1.6 KiB
Bash
61 lines
1.6 KiB
Bash
#!/usr/bin/env bash
|
|
# android_logcat — Lee logcat del device/emulador, opcionalmente filtrado por package y nivel.
|
|
# Multi-emulator via --serial <S>.
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
# shellcheck source=/dev/null
|
|
source "$SCRIPT_DIR/adb_wsl.sh"
|
|
|
|
android_logcat() {
|
|
local serial
|
|
adb_pick_serial "$@" || { echo "android_logcat: no device/emulator." >&2; return 3; }
|
|
local serial="$ADB_PICK_SERIAL"
|
|
set -- "${ADB_PICK_REST[@]}"
|
|
|
|
local package=""
|
|
local level="I"
|
|
local lines=""
|
|
local do_clear=0
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--package) package="$2"; shift 2 ;;
|
|
--level) level="$2"; shift 2 ;;
|
|
--lines) lines="$2"; shift 2 ;;
|
|
--clear) do_clear=1; shift ;;
|
|
*) echo "android_logcat: unknown argument: $1" >&2; return 1 ;;
|
|
esac
|
|
done
|
|
|
|
if [[ $do_clear -eq 1 ]]; then
|
|
adb_s "$serial" logcat -c
|
|
fi
|
|
|
|
local pid_filter=""
|
|
if [[ -n "$package" ]]; then
|
|
local pid
|
|
pid=$(adb_s "$serial" shell pidof -s "$package" 2>/dev/null || true)
|
|
pid="${pid//$'\r'/}"
|
|
if [[ -z "$pid" ]]; then
|
|
echo "android_logcat: package '$package' is not running on $serial" >&2
|
|
return 2
|
|
fi
|
|
pid_filter="--pid=$pid"
|
|
fi
|
|
|
|
local -a cmd=(logcat -v time)
|
|
[[ -n "$lines" ]] && cmd+=(-d -t "$lines")
|
|
[[ -n "$pid_filter" ]] && cmd+=("$pid_filter")
|
|
cmd+=("*:${level}")
|
|
|
|
trap 'exit 130' INT TERM
|
|
|
|
adb_s "$serial" "${cmd[@]}"
|
|
}
|
|
|
|
if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then
|
|
android_logcat "$@"
|
|
fi
|