升级至Xcode 13后构建NativeScript iOS应用时出现多类错误的问题求助
解决Xcode 13升级后NativeScript iOS构建的三类错误
针对你升级Xcode 13后遇到的NativeScript iOS构建问题,我整理了几个针对性的解决方案,你可以逐一尝试:
1. 解决./.build_env_vars.sh脚本的UID: readonly variable错误
这个问题是因为UID在bash环境中是只读系统变量,脚本里的declare命令试图重新定义它导致报错。你需要修改脚本的第454行:
- 找到
.build_env_vars.sh中包含declare UID的那一行 - 将其替换为:
# 避免重新声明只读的UID变量,直接赋值(如果未设置的话) if [ -z "${UID:-}" ]; then export UID=$(id -u) fi
或者直接删除这一行的declare语句,因为UID本身就是系统自动设置的环境变量。
2. 解决Swift桥接头文件*-Swift.h未找到的NSLD错误
这个问题通常和Xcode 13的构建路径变化或NativeScript配置不兼容有关:
- 清除DerivedData:直接删除你提到的DerivedData目录:
rm -rf /Users/gaetan.delsaux/Library/Developer/Xcode/DerivedData/mbwsinventoryapp-egjrwafdujqbnuemdmqazirgunfd - 检查桥接头文件配置:打开Xcode项目,在
Build Settings中找到Objective-C Bridging Header,确保路径是相对于项目根目录的正确路径(比如src/YourProject-Bridging-Header.h) - 升级NativeScript版本:旧版NativeScript对Xcode 13的支持不完善,执行以下命令更新CLI和项目依赖:
npm install -g nativescript ns update
3. 解决Python脚本的KeyError: 'DEPLOYMENT_TARGET_CLANG_FLAG_NAME'错误
这个错误是因为Xcode 13改变了部分环境变量的命名,而NativeScript的构建脚本未适配:
- 手动设置环境变量:在执行构建命令前,先导出对应的环境变量:
export DEPLOYMENT_TARGET_CLANG_FLAG_NAME="-mios-version-min" - 修改Python脚本添加默认值:打开
build-step-metadata-generator.py,修改两个地方:- 将
env函数修改为支持默认值:def env(env_name, default=None): if default is not None: return os.environ.get(env_name, default) return os.environ[env_name] - 将第41行的调用改为:
deployment_target_flag_name = env("DEPLOYMENT_TARGET_CLANG_FLAG_NAME", "-mios-version-min")
- 将
- 切换到Python 3:Python 2.7已停止维护,NativeScript新版本支持Python 3,你可以修改构建脚本中调用Python的命令为
python3,或者在系统中设置Python 3为默认版本。
如果以上方案都无效,建议尝试创建一个新的NativeScript测试项目,看是否能正常构建,以此排查是否是现有项目的配置问题。
内容的提问来源于stack exchange,提问作者GDelsaux
相关产品推荐
相关产品推荐

