You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EAS Update不允许scheme含大写字母,已上架应用如何解决?

解决EAS Update因Bundle Identifier含大写字母导致的Manifest验证错误(裸工作流)

问题背景

使用Expo SDK 48、EAS CLI 3.15.1裸工作流,应用已上架App Store,bundle identifier为com.name.NAME(含大写字母),配置EAS Update后执行eas update时触发以下错误:

❌ Failed to publish updates
Manifest Validation Error:
scheme:‘scheme’ should match pattern “[a-z0-9+.-]*$”
scheme:should be array
scheme:should match exactly one schema in oneOf
This is likely a problem with your app.json, or app.config.js

由于不能修改bundle identifier(会导致生成新应用),需要找到不改动bundle id的解决办法。

可行解决方案

核心思路:将bundle identifier和scheme配置分离——bundle identifier保持上架时的com.name.NAME不变,单独配置符合EAS要求的scheme字段。

  1. 修改app.json/app.config.js配置
    在Expo配置文件中,明确区分bundleIdentifier和scheme字段:

    • bundleIdentifier保留原有的com.name.NAME(确保和App Store一致)
    • scheme设置为小写字母组成的数组,比如["com.name.name"]
      示例配置:
    {
      "expo": {
        "name": "你的应用名称",
        "bundleIdentifier": "com.name.NAME",
        "scheme": ["com.name.name"],
        // 其他原有配置...
      }
    }
    
  2. 同步iOS原生项目配置(裸工作流)
    打开iOS项目的Info.plist文件,找到CFBundleURLSchemes数组,将其中的scheme替换为你在app.json中设置的小写值com.name.name。确保数组格式正确,所有元素都是小写字符串。

  3. 重新执行EAS Update
    完成配置后,运行命令:

    eas update
    

    此时Manifest验证会通过,正常发布更新。

关键说明

bundle identifier是App Store识别应用的唯一标识,绝对不能修改;而scheme是用于URL跳转、深层链接等功能的标识,只要符合EAS的格式要求(小写、数组形式)即可,无需与bundle identifier完全一致。这种方法不会影响已上架应用的状态,也能满足EAS Update的验证规则。

内容的提问来源于stack exchange,提问作者pbrune

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 01:55:15