# 实战手册:本会话全部踩坑与正确操作(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 操作唯一可行路) ### 启动配方(每次照抄) ```bash # 新版 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 ''`: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 文件用户提及但未定位到——已向用户询问