#!/usr/bin/env bash # cold_start.sh - 冷启动单片跳转测试 # 流程: force-stop -> 投递协议 -> 第三方拉起 MainActivity -> 等待启动链路完成 -> 排队命令回放 # 用法: cold_start.sh [filmId] [filmName] set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" # shellcheck disable=SC1091 source "${SCRIPT_DIR}/lib/common.sh" require_adb check_receiver_exists FILM_ID="${1:-film-demo-001}" FILM_NAME="${2:-冷启动测试片}" print_header "冷启动单片跳转测试" # 1. 强制停止应用,模拟完全未启动状态 force_stop_app sleep 1 # 2. 第三方先投递协议(应用未启动,命令应进入 CommandQueue 排队) REQUEST_ID=$(gen_request_id) PAYLOAD=$(build_jump_payload FILM \ "filmId=${FILM_ID}" \ "filmName=${FILM_NAME}" \ "autoPlay=true") log_info "[1/4] 应用未启动时投递协议" send_voice_broadcast "JUMP" "${PAYLOAD}" "${REQUEST_ID}" # 3. 第三方再显式拉起 MainActivity sleep 1 log_info "[2/4] 第三方显式拉起 MainActivity" launch_main_activity # 4. 等待启动链路完成(激活 / 升级 / 会员校验) log_info "[3/4] 等待启动链路完成" wait_for_app_ready 15000 || true # 5. 给排队命令回放留出时间 log_info "[4/4] 等待排队命令消费(约 5 秒)" sleep 5 log_ok "冷启动测试结束" log_info "requestId=${REQUEST_ID},请人工验证 VideoDetailActivity 是否进入"