实机预览:宿主路径 vs Shell 路径的差异
怎么打开预览
在「我的应用」列表里,直接点击应用卡片就能打开预览。不需要点三点菜单——点卡片就是预览,点三点才是编辑 / 构建 / 删除等操作。
预览直接打开对应的 activity:
- 图片 / 视频类型 → 媒体播放器 activity
- 画廊类型 → 画廊播放器 activity
- 其他所有类型(包括网页、前端、服务端运行时)→ WebView activity 或对应运行时界面
返回栈的行为
预览 activity 没有空白的中间页。按一次返回键就回到「我的应用」列表——不要在预览里指望多级返回,这是设计决策不是 Bug。
预览和导出的根本差异
这是 WebToApp 文档里特别强调的一点,值得单独说清楚:
预览走「宿主路径」——一切代码都在构建器本身的 classpath 上运行,配置直接从 Room 数据库读。
导出走「Shell 路径」——导出的 APK 是一个最小化的壳,启动时由 ShellModeManager 从嵌入的 app_config.json 文件里读取配置。
两条路径并不完全相同。某些配置字段可能在预览时走对了,但没有成功被序列化进 JSON,导致导出的 APK 里这个功能就消失了。
典型表现:
- 预览里广告拦截生效,导出后广告又出现
- 预览里 JS 脚本注入工作,导出后页面没有变化
- 预览里伪装 UA 成功,导出后服务器仍能识别真实浏览器
怎么验证配置真的带进了导出 APK
构建对话框里有一个「全量重建」选项。默认情况下构建器会自动选择增量模式——只修改 APK 里有变化的部分。全量重建会跳过增量判断,从模板 APK 开始重新打包、重新嵌入配置、重新签名。
遇到预览正常但导出异常的情况,勾选全量重建后重新构建一次,再以实机为准核对。
调试建议
- 构建前先看一遍预览,确认基础行为正常
- 勾选全量重建,产出一个新的 APK
- 安装到本机,对比预览和实机的差异
- 如果实机仍有问题,回头检查通用配置里是否有字段没有正确设置