PLAYBOOK.md 4.7 KB

实战手册:本会话全部踩坑与正确操作(2026-08-24 凌晨整理)

目的:项目所有任务/会话开工前扫一遍,直接做正确的事。分四个主题:真机签名链路 / 浏览器自动化 / 构建与环境 / 测试与隐私。


主题一:真机签名与 AGC(最容易踩坑的链路)

一次性事实(已定,勿重查)

  • 华为账号:evanliu,企业认证(深圳大方无隅科技有限公司)
  • AGC 已有:应用记录 DSHharmony(com.dotouch.dshharmony)、调试证书 auto_debug_19772439.cer(与本地 ~/.ohos/config 的 .p12 配对)、3 台注册设备
  • 调试 Profile:DSH-Harmony-RealDevice-Debug(.p7b 在 ~/.ohos/config/,有效期至 2027-08-23)

正确操作(下次直接这么干)

  1. 真机装不上(unauthorized/sign info inconsistent)→ 检查 Profile 是否含该设备:AGC > 用户与访问 > 证书、APP ID和Profile > Profile
  2. 建 Profile 三要素:应用=DSHharmony;证书必须选 auto_debug_19772439.cer(选 dfwy 会与本地 .p12 不配对→签名失败);设备=目标真机
  3. 下载 .p7b → cp 到 ~/.ohos/config/(工作区外,必须提权,静默失败无提示)→ build-profile.json5 换 profile 路径 → bash scripts/build.sh
  4. 装机:bash scripts/setup-device.sh(自动选真机、先卸载再装、rport 隧道、启动)

死路(勿再试)

  • DevEco「自动生成签名」勾选失败:DevEco 已注册设备+应用但 Profile 生成卡死,别再折腾 GUI,直接走 AGC 网页(本手册主题二)
  • dsh web 局域网直连:--host 只接受 127.0.0.1,0.0.0.0 被官方以 RCE 风险显式禁止。真机一律 rport 隧道
  • hap 文件双击安装:鸿蒙无侧载,设备端只有应用市场(含内测)通道

主题二:CDP 浏览器自动化(AGC 操作唯一可行路)

启动配方(每次照抄)

# 新版 Chrome 禁止默认配置开调试口;必须独立 user-data-dir + 二进制直启
# 注意:open --args 会丢参数;同配置已有实例会吞参数(先 pkill 干净再启)
nohup '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome' \
  --remote-debugging-port=9222 --user-data-dir=/tmp/agc-automation \
  --no-first-run --window-size=1440,900 '<目标URL>' > /tmp/chrome.log 2>&1 &
# 验证:curl http://127.0.0.1:9222/json/version

驱动脚本(已在 /tmp,会丢就按 knowledge-base/cases.md CASE-7 重建)

  • /tmp/cdp.mjs '<js>':Runtime.evaluate(读写 DOM、跑 JS)
  • /tmp/cdp-click.mjs "<返回element的js>":真实鼠标点击(marker div 定位法)
  • /tmp/cdp-key.mjs:发送 Enter 键(点击被拦时的兜底)

AGC 控制台结构要点

  • 外层是 SPA(菜单 a.base-menu),内容在 iframe 里(同源,contentDocument 可穿透)
  • 登录:独立配置无登录态 → 用户在窗口内自己扫码(AI 不接触密码)→ 轮询 URL 离开登录页即完成
  • el-plus 组件:合成 .click() 大多无效,必须 CDP Input 真实事件;iframe 内坐标 = 元素rect + iframe偏移(fo.left/top)
  • 表格选择:点行首单元格的 radio/checkbox 元素本体(LABEL.el-checkbox / SPAN.el-radio__inner)
  • 提交按钮鼠标点击可能无响应(疑似遮挡)→ btn.focus() + 键盘 Enter 必杀

主题三:构建与环境速查

  1. 构建:bash scripts/build.sh(已固化 JAVA_HOME=DevEco自带JBR + DEVECO_SDK_HOME;工程目录工作区外,写操作全部提权)
  2. compatibleSdkVersion 必须写 "6.0.0(20)" 格式(纯数字报 Specification Limit Violation)
  3. 模拟器镜像下载会被 ~5 分钟一次的进程清理杀死 → Python double-fork 守护进程方案(/tmp/dl-daemon.py 模式)
  4. 模拟器 CLI 需 -license accept(沙箱外执行才能持久化);实例名不允许连字符
  5. 沙箱静默拦截:工作区外的 cp/rm 失败无任何报错——重要文件操作后必须 ls 验证
  6. macOS 自动化权限归属:进程链 DSH Desktop(Electron) > node dsh web > bash——给 DSH Desktop 授权辅助功能才有效
  7. 屏幕感知:screencapture -x -D 1(默认显示参数会失败)+ Vision 框架 OCR(osascript -l JavaScript,无需权限)

主题四:测试与隐私红线(上架前必读)

  1. 上架截图必须用隔离实例:先跑 scripts/dev-server.sh(端口 3099,独立空工作区),绝不用 3080 日常实例截图(含真实会话/API key/隐私)
  2. App 本体不收集不传输任何数据(纯壳),隐私政策据此撰写并与实际行为一致
  3. 发布包与调试包签名不同:发布证书+发布 Profile(AGC 申请),发布 Profile 不选设备
  4. 待确认:~/.eva 文件用户提及但未定位到——已向用户询问