标题
uni-app x vapor 模式下,Android 自定义 UTS 插件内的 AdView 已 load 成功但页面只显示 50 高空白区域,HBuilderX 5.23 异常,5.15 正常
问题描述
项目是 uni-app x,运行在 vapor mode。
我们在 Android 端通过自定义 UTS 插件封装了 Google AdMob Banner AdView,页面侧使用 native-view 承载。
在 HBuilderX 5.23 下:
广告请求成功
AdView 已创建并测量出尺寸
onAdLoaded 已回调
页面上能看到 Banner 占位区域,但只有约 50 高度空白,没有实际广告内容绘制出来
回退到 HBuilderX 5.15 后,同一套 Banner 链路恢复正常显示。
使用环境
HBuilderX: 5.23 时异常,5.15 时正常
项目类型: uni-app x
渲染模式: vapor mode
平台: app-android
广告形式: Google AdMob Banner
承载方式: uvue + native-view + UTS Android 插件 + 原生 AdView
现象
在 5.23 下首页 Banner 区域会占位,但只显示一个空白条,高度约 50,广告内容不可见。
期望结果
AdView 成功加载后,Banner 应正常渲染显示,不应只出现空白占位区域。
实际结果
AdView 加载成功、尺寸正常、事件正常,但视觉上只有空白占位,没有广告内容。
关键日志
下面这些日志是异常版本下真实打印到控制台的:
Banner bridge updateConfig v4
Banner load dispatched on main thread v4
Banner view measured after load: width=960, height=150, adSize=320x50
Banner ad loaded
home banner loaded via Google AdMob / test / native
这说明:
桥接层调用成功
已切到主线程加载
原生 AdView 有尺寸
onAdLoaded 已触发
但最终没有实际绘制出来
已排查内容
已确认不是请求失败,Banner ad loaded 明确成功。
已确认不是主线程调用问题。
之前遇到过:
java.lang.IllegalStateException: #8 Must be called on the main UI thread.
这个问题已经通过把 loadAd、setAdSize、adListener 等逻辑切到 UI 线程解决。
已补过:
View.VISIBLE
requestLayout()
invalidate()
主线程创建 AdView
主线程销毁 AdView
页面侧也已把 Banner 宿主容器收敛为固定尺寸,排除了明显的布局塌陷问题。
回退到 HBuilderX 5.15 后,广告可以正常显示。
判断
目前看更像是:
HBuilderX 5.23
Android vapor mode
native-view
UTS 插件桥接原生 AdView
这一组合下的渲染兼容性问题,而不是业务代码本身的广告请求或布局逻辑问题。
最小复现建议
如果官方需要,我这边可以继续整理一个更小的复现:
新建 uni-app x vapor 项目
新增一个最小 UTS Android 插件
插件里创建原生 AdView
页面用 native-view 承载
在 5.23 与 5.15 对比运行结果
当前 workaround
回退到 HBuilderX 5.15 后可正常显示,作为临时规避方案。
你发帖时,建议再补两张图:
5.23 下的空白 Banner 截图
5.15 下正常显示的截图
这样 DCloud 更容易直接判断是渲染回归问题。
我也可以继续帮你把这份内容压成更短的论坛版,或者整理成“最小复现步骤版”。
标题
uni-app x vapor 模式下,Android 自定义 UTS 插件内的 AdView 已 load 成功但页面只显示 50 高空白区域,HBuilderX 5.23 异常,5.15 正常
问题描述
项目是 uni-app x,运行在 vapor mode。
我们在 Android 端通过自定义 UTS 插件封装了 Google AdMob Banner AdView,页面侧使用 native-view 承载。
在 HBuilderX 5.23 下:
广告请求成功
AdView 已创建并测量出尺寸
onAdLoaded 已回调
页面上能看到 Banner 占位区域,但只有约 50 高度空白,没有实际广告内容绘制出来
回退到 HBuilderX 5.15 后,同一套 Banner 链路恢复正常显示。
使用环境
HBuilderX: 5.23 时异常,5.15 时正常
项目类型: uni-app x
渲染模式: vapor mode
平台: app-android
广告形式: Google AdMob Banner
承载方式: uvue + native-view + UTS Android 插件 + 原生 AdView
现象
在 5.23 下首页 Banner 区域会占位,但只显示一个空白条,高度约 50,广告内容不可见。
期望结果
AdView 成功加载后,Banner 应正常渲染显示,不应只出现空白占位区域。
实际结果
AdView 加载成功、尺寸正常、事件正常,但视觉上只有空白占位,没有广告内容。
关键日志
下面这些日志是异常版本下真实打印到控制台的:
Banner bridge updateConfig v4
Banner load dispatched on main thread v4
Banner view measured after load: width=960, height=150, adSize=320x50
Banner ad loaded
home banner loaded via Google AdMob / test / native
这说明:
桥接层调用成功
已切到主线程加载
原生 AdView 有尺寸
onAdLoaded 已触发
但最终没有实际绘制出来
已排查内容
已确认不是请求失败,Banner ad loaded 明确成功。
已确认不是主线程调用问题。
之前遇到过:
java.lang.IllegalStateException: #8 Must be called on the main UI thread.
这个问题已经通过把 loadAd、setAdSize、adListener 等逻辑切到 UI 线程解决。
已补过:
View.VISIBLE
requestLayout()
invalidate()
主线程创建 AdView
主线程销毁 AdView
页面侧也已把 Banner 宿主容器收敛为固定尺寸,排除了明显的布局塌陷问题。
回退到 HBuilderX 5.15 后,广告可以正常显示。
判断
目前看更像是:
HBuilderX 5.23
Android vapor mode
native-view
UTS 插件桥接原生 AdView
这一组合下的渲染兼容性问题,而不是业务代码本身的广告请求或布局逻辑问题。
最小复现建议
如果官方需要,我这边可以继续整理一个更小的复现:
新建 uni-app x vapor 项目
新增一个最小 UTS Android 插件
插件里创建原生 AdView
页面用 native-view 承载
在 5.23 与 5.15 对比运行结果
当前 workaround
回退到 HBuilderX 5.15 后可正常显示,作为临时规避方案。
你发帖时,建议再补两张图:
5.23 下的空白 Banner 截图
5.15 下正常显示的截图
这样 DCloud 更容易直接判断是渲染回归问题。
我也可以继续帮你把这份内容压成更短的论坛版,或者整理成“最小复现步骤版”。