SystemBars: 安全区域 CSS 注入在启动时抛出"无法读取空的属性"错误(Android 16)
QQ 电容版本
在升级到Capacitor 8并瞄准SDK 36. 每个应用程序发布日志 :
E Capacitor/ Console: 文件: - 第6行 - Msg: 插入安全区域出错 CSS: TypeError: 无法读取无效属性(读取"样式")环境: @concessor/android 8.4.1,编译Sdk/targetSdk 36,AGP 8.13.0,Gradle 8.14.3,JDK 21,三星设备在Android 16.
□ 发生什么了?
其出自"SystemBars.injectSafereaCSS ()"(~8.4.1中的250行). 注入的脚本是:
贾瓦 "" "" "" 尝试{ 文档. documentElement.style.set Property ("--seafe-rea-inset-top"),"%dpx"; 文档. documentElement.style.set Property ("-- safe-rea- inset-right"), “%dpx" ; 文档. document Element.style.set Property ("-- safe-rea- inset-bottom"),"%dpx"; 文档。文档Element.style.set Property ("--seafe-rea-inset-left"),"%dpx"; }接住(e){控制台.error('错误地注射安全区CSS:',e;} "" "" ""
`文件.文件Element'在运行时无效。 logcat输出中的"行6"是文本块内的接线,该接线被排出.
据我所知,`注射安全区CSS ' 是从`setOnApply Window Insets listener ' 召回的,在WebView文件出现之前,第一个版式就是火。 'bridge.getWebView ()!=无"卫视通过——有WebView对象——但其中还没有文件. 后来工作顺利,这就是为什么CSS变量最终会正确设置,没有明显中断。
∮为什么我不能随心所欲∮
尝试了'insetsHandling:"残疾"的第一,这是一个错误——在Android 16 SystemBars上,是唯一真正在状态栏下设定内容的东西. `Status Bar.setOverlaysWebView()'使用`SetSystemUivisibility',这是API 35+的禁用. 因此,取消插件以杀死错误的功能会打破插件提供的布局. 最终补补了框架, 这并不是伟大的必须携带。
□ 修补
插入的脚本中未加保护 :
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么?
尝试{
如果(文档。文档Element){
文档. documentElement.style.set Property ("--seafe-rea-inset-top"),"%dpx";
/.etc (中文(简体) ).
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
}接住(e){控制台.error('错误地注射安全区CSS:',e;}当DOM已经存在时,不能改变行为 在物理Android 16设备上运行此功能——出错已去,布局相同,没有其他控制台出错.
□ 重现
第8.4.1分节 Android app,目标Sdk 36,"viewport-fit=cover"在取景地元中,在Android 16设备上发射,监视控制台.
如果想要公关,我很高兴
其他 API 细节
贝壳
受影响的平台
- [ ]iOS系统
- [x] 机器人
- [ ] 网络
### 当前的行为
每次应用程序发布时,一个错误会被登录到控制台:
插入安全区域出错 CSS: TypeError: 无法读取无效属性( 读取' style' )
完整对数线 :
E Capacitor/ Console: 文件: - 第6行 - Msg: 插入安全区域出错 CSS: TypeError: 无法读取无效属性(读取"样式")
它来自SystemBars.injectSafereaCSS (). 注射时
. . . . . . .内容来源: ionic-team/capacitor