uni-app Android 16 底部安全区域变成黑色无法修改

uni-app Android 16 底部安全区域变成黑色无法修改

示例代码:

{
  "minSdkVersion": 29, //Android平台最低支持版本
  "targetSdkVersion": 36 //Android平台目标版本
}

操作步骤:

当manifest.json 按照以下配置

{
  "minSdkVersion": 29, //Android平台最低支持版本
  "targetSdkVersion": 36 //Android平台目标版本
}

预期结果:

底部安全区域默认白色,并且可以修改

实际结果:

{
  "targetSdkVersion": 36
}

Android 16手机 底部安全区域变成黑色无法修改

  1. 如果是虚拟按键则是黑色,无法修改颜色;
  2. 如果是全面屏 不隐藏手势指示条 底部安全区域是黑色无法修改

bug描述:

当manifest.json 按照以下配置

{
  "minSdkVersion": 29, //Android平台最低支持版本  
  "targetSdkVersion": 36 //Android平台目标版本
}

自定义打包后 要是Android 16手机 底部安全区域变成黑色无法修改

  1. 如果是虚拟按键则是黑色,无法修改颜色;
  2. 如果是全面屏 不隐藏手势指示条 底部安全区域是黑色无法修改

| 信息类别     | 信息内容                     |
|--------------|------------------------------|
| 产品分类     | uniapp/App                   |
| PC开发环境   | Windows                      |
| PC版本号     | Windows 11 家庭中文版 23H2   |
| HBuilderX    | 正式                         |
| HBuilderX版本| 4.87                         |
| 手机系统      | Android                      |
| 手机版本号    | Android 16                   |
| 手机厂商      | OPPO                         |
| 手机机型      | OPPO Find X8                 |
| 页面类型     | vue                          |
| vue版本      | vue2                         |
| 打包方式     | 云端                         |
| 项目创建方式 | HBuilderX                    |

更多关于uni-app Android 16 底部安全区域变成黑色无法修改的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

按照你说的验证发现依然不行,

更多关于uni-app Android 16 底部安全区域变成黑色无法修改的实战教程也可以访问 https://www.itying.com/category-93-b0.html


完全按照上述修改,依然无效,我将暗黑模式示例工程(https://ext.dcloud.net.cn/plugin?name=hello-darkmode) manifest.json 加上 “targetSdkVersion” : 36, “forceDarkAllowed” : false 依然无效,根暗黑模式没有关系
pages.json中添加"app-plus": {“safeArea”: {“bottomColor”: “#FFFFFF”}} 依然无效

你发两个对比的包吧,我这边修改target之后,表现是一致的

解决了吗

该bug反馈内容基本完整但存在关键缺失:描述了现象(Android 16设备底部安全区域变黑且无法修改),提供了manifest.json配置片段、复现步骤和预期/实际结果对比,但缺少pages.json中安全区域配置尝试、主题变量设置等关键代码示例,且未说明是否已按文档配置darkmode相关参数。分类信息包含HBuilderX 4.87、Android 16等必要环境信息,但缺少uni-app核心版本号。
经分析此问题不成立,属概念性误解:

根据Android minSdkVersion/targetSdkVersion文档,当targetSdkVersion设为36(Android 16)时,系统会强制启用新版深色模式策略,这是Android原生行为而非uni-app bug
知识库明确说明Android 10+设备支持深色模式,且底部安全区域颜色受系统主题控制
用户未正确配置darkmode参数:需在manifest.json的app-plus中设置"darkmode": true并配合theme.json主题文件,或通过pages.json的"app-plus"节点配置"safeArea"背景色

建议解决方案:

参考DarkMode适配指南配置主题
在pages.json中添加"app-plus": {“safeArea”: {“bottomColor”: “#FFFFFF”}}强制设置底部颜色
注意Android 10+系统会根据targetSdkVersion自动启用深色模式策略,需显式覆盖系统行为 内容为 AI 生成,仅供参考

这是 Android 16(API 36)引入的新行为变化。当 targetSdkVersion 设置为 36 时,系统会强制应用使用新的安全区域处理机制。

解决方案:

  1. 临时方案:降级 targetSdkVersiontargetSdkVersion 暂时降级到 35 或更低版本:

    {
      "minSdkVersion": 29,
      "targetSdkVersion": 35
    }
    
  2. 推荐方案:适配 Android 16 新特性 Android 16 要求应用明确声明如何处理安全区域。需要在 pages.json 中配置:

    {
      "globalStyle": {
        "app-plus": {
          "safearea": {
            "bottom": {
              "offset": "auto"
            }
          }
        }
      }
    }
    
  3. CSS 适配方案 在 App.vue 或页面样式中添加:

    /* 适配 Android 16 底部安全区域 */
    .safe-area-inset-bottom {
      padding-bottom: constant(safe-area-inset-bottom);
      padding-bottom: env(safe-area-inset-bottom);
    }
    
  4. 检查 manifest 配置 确保 manifest.json 中已启用沉浸式状态栏:

    {
      "plus": {
        "statusbar": {
          "immersed": true
        }
      }
    }
回到顶部