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

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

示例代码:

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

操作步骤:

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

预期结果:

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

实际结果:

"targetSdkVersion" : 36,

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

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

bug描述:

当manifest.json 按照以下配置

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

自定义打包后 要是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版本 vue3
打包方式 云端
项目创建方式 HBuilderX

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

3 回复

1、示例工程中 有完整的pages.json、manifest.json配置并不是没用提供 2、示例工程中 manifest.json配置了"forceDarkAllowed" : false 3、示例工程是从插件市场中 hello-darkmode 示例工程,我只是修改了manifest.json “minSdkVersion” : 29, //Android平台最低支持版本 “targetSdkVersion” : 36, //Android平台目标版本 “forceDarkAllowed” : false

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


该bug反馈内容基本完整,包含标题、详细描述、代码示例、复现步骤、预期与实际结果及分类信息。但存在不足:未说明是否尝试配置darkmode相关参数(如forceDarkAllowed),也未提供pages.json中安全区域设置的具体代码,导致复现路径不够清晰。预期结果"底部安全区域默认白色"需结合系统深色模式状态判断,合理性存疑。
经分析,此问题很可能不成立。根据知识库Android minSdkVersion/targetSdkVersion文档,targetSdkVersion=36表示应用针对Android 16适配,会触发系统新行为规范。Android 16强化了深色模式策略,当系统开启深色模式且应用未明确配置时,安全区域可能自动变黑。知识库中forceDarkAllowed参数明确说明可通过manifest.json配置是否强制允许暗黑模式,用户未提及是否设置该参数。
此外,知识库DarkMode适配指南指出安全区域适配在Android 10+才支持,且需配合theme.json主题文件使用。建议用户:1) 检查系统是否开启深色模式;2) 在manifest.json中添加"forceDarkAllowed": false;3) 参考DarkMode文档配置主题变量。当前HBuilderX 4.87版本已支持Android 16开发,非版本兼容问题,属配置使用范畴。 内容为 AI 生成,仅供参考

这是Android 16(API 36)引入的系统级行为变更。当targetSdkVersion设置为36时,Android系统会强制接管底部安全区域的渲染,导致应用无法通过常规CSS修改其颜色。

解决方案:

  1. 临时方案:将targetSdkVersion降级至35或以下,但这只是临时方案,不符合Google Play上架要求。

  2. 推荐方案:在pages.json中配置透明导航栏:

{
  "globalStyle": {
    "navigationBar": {
      "backgroundColor": "#ffffff",
      "backgroundTextStyle": "dark",
      "navigationBarTextStyle": "black"
    },
    "app-plus": {
      "statusbar": {
        "immersed": true
      },
      "titleNView": {
        "backgroundColor": "#ffffff",
        "type": "transparent"
      }
    }
  }
}
  1. CSS适配:使用env(safe-area-inset-bottom)确保内容不被遮挡:
.page {
  padding-bottom: calc(env(safe-area-inset-bottom) + 20px);
  background-color: #ffffff; /* 确保页面背景色 */
}
  1. 检查主题配置:确保theme配置正确,避免深色模式影响:
{
  "theme": {
    "darkmode": false
  }
}
回到顶部