用途:把用户手上的 Android 应用装到设备并跑起来,来源可以是 Play 商店链接、纯包名或用户已有的 APK 文件。脚本 scripts/playapp.py 仅用标准库实现解析、预检、状态检查、旁加载、校验与启动等确定性步骤;唯一无法自动完成的是点击 Play 的 Install 按钮(属 UI 操作),需配合 android-ui-driver,夹在 open-listing 与 wait-installed 之间使用。
主要能力:resolve 从 URL 的 id= 参数解析包名(支持 play.google.com、market://details?id=、.../details/App_Name?id= 及纯包名;短链 play.app.goo.gl 无法离线解析);preflight 逐项打印 device、play_store、play_account、animations 状态与总判定,--fix 可关闭三项动画缩放;status 用 pm path 检查是否已安装;安装分两条路径——Play 路径用 open-listing 打开市场详情页再由 UI 驱动点击,随后 wait-installed 等待;APK 路径用 install-apk,单文件走 adb install,多文件走 install-multiple,均带 -r 与 -g;launch 解析真实启动 Activity、启动并确认前台存活,否则退出码 1。
限制:Play 链接不保证能装成,可能因国家、账号权益、年龄分级、支付、ABI、API 级别、分阶段发布或模拟器排除而被拒,带完整性校验的应用常直接拒绝模拟器。全新 Play AVD 没有 Google 账号,必须人工手动登录一次,不要自动化登录。google_apis 镜像不带商店,只有 google_apis_playstore 才有。Apple Silicon 需 arm64-v8a 系统镜像。拆分 APK 需一次性传入全部 split,否则报 INSTALL_FAILED_MISSING_SPLIT。不应从 Play 抓取站或镜像下载 APK。安装类工作之外的权限、版本、崩溃诊断与端到端评审属于其他技能。