uni-app 打包ios 16.3以下版本出现白屏,ios16.3及以上版本正常显示,打包基座运行无异常

uni-app 打包ios 16.3以下版本出现白屏,ios16.3及以上版本正常显示,打包基座运行无异常

项目属性
产品分类 uniapp/App
PC开发环境 Mac
PC开发环境版本 12.6
HBuilderX类型 正式
HBuilderX版本 3.99
手机系统 iOS
手机系统版本 iOS 16
手机厂商 苹果
手机机型 苹果14
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

  • 同上

预期结果:

  • 正常显示

实际结果:

  • 打包ios 16.3以下白屏,ios16.3以上正常显示,打包基座运行正常

bug描述:

  • 打包ios 16.3以下白屏,ios16.3以上正常显示,打包基座运行正常
3 回复

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookbehind_assertion 看下是不是用到了这个正则语法 或者用到了高版本才支持的语法


谢谢

在 uni-app 打包 iOS 应用时,出现 iOS 16.3 以下版本白屏,而在 iOS 16.3 及以上版本正常显示的情况,可能是由于以下原因导致的。以下是一些排查和解决方法:


1. 检查 JavaScriptCore 版本兼容性

iOS 16.3 以下版本可能使用了较旧版本的 JavaScriptCore 引擎,可能与 uni-app 打包后的代码存在兼容性问题。

解决方法:

  • 确保 uni-app 的 JavaScript 代码没有使用过新的 ES 语法(如 ???. 等),这些语法在旧版本引擎中可能不支持。
  • manifest.json 中配置 es6false,强制使用 ES5 语法打包:
    {
      "app-plus": {
        "es6": false
      }
    }

2. 检查 CSS 兼容性

某些 CSS 属性(如 flexgrid 等)在旧版本 iOS 中可能支持不完善。

解决方法:

  • 检查项目中是否使用了较新的 CSS 特性,尝试降级为兼容性更好的写法。
  • 使用 PostCSS 的 autoprefixer 插件,自动添加浏览器前缀:
    {
      "postcss": {
        "autoprefixer": {
          "browsers": ["last 5 versions", "iOS >= 8"]
        }
      }
    }

3. 检查 WebView 兼容性

iOS 16.3 以下的 WebView 可能对某些 JavaScript API 或 DOM 操作支持不完善。

解决方法:

  • 确保没有使用过新的 Web API(如 IntersectionObserverResizeObserver 等),或者在代码中做兼容性判断。
  • 如果使用了第三方库(如 vuexvue-router),确保其版本支持旧版 iOS。

4. 检查 uni-app SDK 版本

uni-app 的 SDK 可能存在对旧版 iOS 的兼容性问题。

解决方法:

  • 升级 uni-app SDK 到最新版本:
    npm update [@dcloudio](/user/dcloudio)/uni-app
  • 如果问题依然存在,可以尝试降级到稳定版本,或者查阅 uni-app 官方文档和社区,寻找类似问题的解决方案。

5. 检查网络请求问题

如果应用依赖于网络请求加载数据,iOS 16.3 以下版本可能存在网络请求失败的情况。

解决方法:

  • 检查网络请求的 URL 是否支持 HTTPS(iOS 强制要求 HTTPS)。
  • manifest.json 中配置允许 HTTP 请求(不推荐):
    {
      "app-plus": {
        "networkTimeout": {
          "request": 30000,
          "connectSocket": 30000,
          "uploadFile": 30000,
          "downloadFile": 30000
        },
        "security": {
          "allowHttp": true
        }
      }
    }

6. 调试与日志

通过真机调试和日志输出,可以更准确地定位问题。

解决方法:

  • 使用 Safari 的 Web Inspector 连接真机,查看控制台日志和错误信息。
  • 在代码中添加 console.logtry-catch,捕获可能的异常。

7. 打包配置优化

manifest.json 中优化打包配置,确保兼容性。

解决方法:

  • 配置 webviewWKWebView
    {
      "app-plus": {
        "webview": "WKWebView"
      }
    }
  • 启用 v8 引擎(仅支持 iOS 14+):
    {
      "app-plus": {
        "v8": true
      }
    }
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!