DCloud广告联盟注入的开屏广告与manifest.json配置的splashscreen是两套独立系统,前者由dev.dcloud.net.cn后台开关控制,优先级更高;关闭广告必须登录后台禁用“开屏广告”并重新云打包,改manifest.json或删资源文件均无效。

UniApp 打包出来的 App 出现启动页广告图片,**不是代码里写的 splash.png,而是 DCloud 广告联盟注入的开屏广告**。删掉 static/splash.png、改 manifest.json 的 splashscreen 配置,都无效——因为那是另一层逻辑。
为什么改了 manifest.json 还有广告?
uni-app 的「启动页广告」和「启动图 splash」是两套系统:
-
splashscreen配置控制的是你自己准备的启动图(如static/splash.png),属于原生层静态展示 - 而你看到的「带跳过按钮、倒计时、点击跳外链」的广告页,来自 DCloud 的
uni-ad广告联盟服务,由云端开关控制,优先级更高 - 即使你设了
"autoclose": false,只要广告后台开着,它就会在 splash 关闭前强行插入一个 webview 广告层
关闭广告必须去 dev.dcloud.net.cn 后台操作
本地代码和 manifest.json 无法禁用该广告。唯一有效路径是关闭广告联盟的投放开关:
- 访问 https://www.php.cn/link/0237e3fc730282fd48eb4345a4269308,用项目所有者账号登录(就是你 HBuilderX 登录的账号)
- 左侧菜单点「uniad」→「广告设置」
- 找到你的应用名称,点击进入
- 把「开屏广告」、「悬浮红包广告」等所有开关全部关闭
- 保存后,**重新打包**(HBuilderX 中“发行” → “原生App-云打包” 或 “本地打包”)
注意:如果打包界面里「快捷开屏广告」选项仍为灰色不可取消,说明后台没关干净,或账号权限不对(必须是项目所有者,协作者无权关广告)。
manifest.json 里哪些配置其实没用?
以下字段对「关掉广告」完全无效,但常被误配:
-
"autoclose": false—— 只影响你自己的 splash 图是否自动关闭,不影响广告层 -
"waiting": false—— 关的是雪花加载动画,不是广告 -
"alwaysShowBeforeRender": false—— 控制白屏期是否强显 splash,和广告无关 -
plus.navigator.closeSplashscreen()或uni.hideLaunchScreen()—— 这些 API 只能关你自己的 splash,关不掉广告 webview
它们只在你**自己实现自定义开屏广告**(比如用 plus.webview.open() 加载本地 HTML)时才有意义。
打包后还有广告?检查三个地方
如果关完后台仍看到广告,按顺序排查:
- 确认打包时选择的是「自有证书」或「DCloud 通用证书」,而不是「广告联盟证书」(后者默认强制启用广告)
- 检查 HBuilderX 打包弹窗中「快捷开屏广告」复选框是否真的已取消勾选(关后台后需刷新打包界面)
- 真机测试时清空 App 数据或重装,避免旧版本缓存广告资源(尤其是 Android)
广告逻辑是打包时注入的,不是运行时动态加载,所以改完后台必须重新打包,且不能复用旧安装包。


















