WebGLやWebGPU、Canvasを使ったWebページの映像表現を調べ、根拠を記録しながらローカルで再現・移植する手順を支援します。
- Canvasの背景演出をローカルで再現したいとき
- WebGLの表現を別プロジェクトへ移したいとき
- WebGPUやシェーダーの描画を調べたいとき
スマホの前面操作を妨げず、ADB接続済みのAndroid実機でアプリを起動し、画面確認やタップ、入力などのテストを行います。
在已通过 ADB 连接的 Android 真机上,用不显示在手机屏幕上的独立后台屏测试应用:启动、截图、点击、滑动、按键、写入中文文字,不打扰用户前台使用。需要手机亮屏且已解锁。不用于操作主屏、安装应用、绕过安全设置或清理其他会话。
実行スコア 未検証
インストール方法を見るADBで接続したAndroid実機に、ユーザーの画面には表示されないバックグラウンド画面を作り、その上で対象アプリを操作します。アプリの起動、スクリーンショットの取得、タップ、スワイプ、キー入力、中文の入力に対応しています。操作のたびにスクリーンショットで結果を確かめながら進めます。テストが終わったらセッションを閉じ、試した内容や画像の保存先、途中の中断、終了状態を報告します。
アプリの動作確認中も、利用者がスマートフォンの前面画面を使い続けたいときに向いています。画面遷移や入力後の状態を画像で確認しながら、実機上で操作を試せます。
adbとPython 3.9以降が必要です。端末はテスト中に画面を点灯し、ロック解除しておく必要があります。複数台接続時は対象端末を選びます。textは入力欄の内容を置き換えます。また入力時にはUiAutomationへ一時接続し、銀行・決済アプリではその旨を利用者に伝えます。対応確認済みの機種はnubia NX888J(Android 17)です。
この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
在手机上创建一块用户看不到的后台屏,把被测应用开在上面操作,主屏保持用户自己的使用。依赖只有 adb 和 Python 3.9+ 标准库,不安装 APK。
脚本:python3 <本目录>/scripts/android.py <命令>。每条命令输出一行 JSON。
| 退出码 | 含义 | 你要做的 |
|---|---|---|
| 0 | 成功 | 继续 |
| 3 | 会话被打断 | 按“打断处理”询问用户 |
| 4 | 被拒绝 | 读 error 和 detail,向用户说明,不要换方式硬做 |
| 5 | 设备或传输错误;session_lost 表示会话已结束 | 报告,必要时重新 open |
| 1 / 2 | 内部错误 / 用法错误 | 报告 |
verify(只校验包)、doctor(只查本机)。adb devices 确认 serial。多台设备时必须问用户用哪台,不要猜。S=<serial>; W=<工作目录>; A="python3 <本目录>/scripts/android.py"
$A open --serial $S --component 包名/Activity --workdir $W # 记下 sessionId
$A screenshot --workdir $W --session <id> # 返回 PNG 路径,查看后再操作
$A tap --workdir $W --session <id> X Y # 坐标是会话屏像素,默认 720x1600
$A swipe --workdir $W --session <id> X1 Y1 X2 Y2 --duration 300
$A key --workdir $W --session <id> BACK # BACK、ENTER、HOME 等
$A text --workdir $W --session <id> --value "中文内容" # 先点输入框
$A status --workdir $W --session <id>
$A close --workdir $W --session <id> # 用完必须关闭
text 会替换输入框全部内容,不是追加;需要追加就自己拼好完整文本。text 期间会短暂连接 UiAutomation,应用能察觉到无障碍服务开启;在银行、支付类应用里使用前先告诉用户。被其他工具占用时返回 uiautomation_busy,不要抢。adb -s <serial> shell cmd package resolve-activity --brief -c android.intent.category.LAUNCHER <包名> 查询。launch 在会话屏上重新启动。返回中的 interruption 包含 reason、detail、askUser、conflictId、grantable、expiresInSeconds。
detail 告诉用户发生了什么,用 askUser 询问用户。resolve --conflict <id> --grant;用户拒绝就 --deny。不得替用户同意,不得因为测试没完成就默认同意。expiresInSeconds 归零)、用户拒绝、或者用户正在手机上使用这个应用时,会话会自动结束,这是预期行为。| reason | 情况 | 能否 grant |
|---|---|---|
existing_task | 用户手机上已有这个应用的任务,接管会把它移到后台屏 | 能,需用户同意 |
user_opened_app | 用户在手机上打开了正在测试的应用,任务已交给用户 | 能;用户还在用时会失败并结束 |
device_locked | 手机锁屏或息屏,后台屏停止 | 不能;请用户解锁,解锁后自动继续 |
package_busy),不要关掉别人的会话来抢。遇到权限、告警或兼容问题时读 安全边界。
说明测试了什么、关键截图路径、遇到的打断和用户的答复、会话是否已关闭。已验证设备只有 nubia NX888J(Android 17);其他机型首次使用时如实说明“未验证”。
まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
WebGLやWebGPU、Canvasを使ったWebページの映像表現を調べ、根拠を記録しながらローカルで再現・移植する手順を支援します。