uni-app内测水印关不掉是因为它多来自开发工具或真机环境的调试标识,如hbuilderx自定义基座的debug角标、微信体验版强制水印、app端原生插件残留等,非代码添加,需针对性关闭。

uni-app内测水印关不掉?先确认它从哪来
绝大多数“内测水印”根本不是 uni-app 自己加的,而是开发工具或真机环境自带的调试标识。比如 HBuilderX 在自定义基座调试时,会在右上角打一个半透明「DEBUG」角标;微信开发者工具在预览模式下也会叠加「体验版」水印;iOS 真机用标准基座运行时,uni-app 会自动注入 __UNIAPP_DEBUG__ 标识并渲染小字水印——这些都不是你代码写的,删 template 或改 CSS 无效。
关闭 HBuilderX 自定义基座的 DEBUG 水印
这个水印由 HBuilderX 编译时注入,只出现在自定义基座(非云打包)中,不影响正式包:
- 打开
manifest.json→ 找到"name"同级的"debug"字段,设为false(若不存在则手动添加) - 确保 HBuilderX 版本 ≥ 4.43,旧版本该字段可能被忽略
- 重新制作自定义基座:菜单栏 → 运行 → 运行到手机或模拟器 → 勾选「制作自定义基座」→ 再运行
- 注意:云打包(发行 → 原生App-云打包)生成的包默认无此水印,无需额外操作
微信小程序预览/体验版水印无法关闭
微信官方强制在「体验版」「开发版」环境下叠加「体验版」文字水印,这是平台策略,前端无任何 API 或配置可绕过:
-
wx.setEnableDebug只影响调试面板,不影响水印 - Canvas 绘制、fixed div、
cover-view全部会被微信底层水印层盖住 - 唯一规避方式是提交「审核中」或「已上线」版本,此时水印自动消失
- 测试阶段建议接受该水印存在,它不进入正式线上环境
App端原生插件水印残留要主动清空
如果你用了 watermark-plus 或其他原生插件,在内测阶段动态设置了水印,登出或切换账号后必须手动清除,否则它会一直挂在 UIWindow/DecorView 顶层:
- 调用
watermark.clearWatermark()(若插件支持) - 或退而求其次:
watermark.setWatermark({ text: '' }) - 务必在 pinia store 的登出 action 里触发,不要依赖页面
onUnload—— 原生层不感知 Vue 生命周期 - Android 端若发现水印未消失,检查是否遗漏了
plus.screen.getRealSize()导致坐标错乱,误判为“没清掉”
真正难处理的是那些没留接口的水印:比如某些内测 SDK 自动注入的浮层、厂商调试工具附加的 overlay。这类只能靠沟通协调或换基座方案——别在 CSS 里狂试 z-index: -9999,那只是把问题藏得更深。











