使用Nativescript构建iOS应用报xcodebuild退出码65错误如何解决?
NativeScript iOS 构建 exit code 65 报错解决方案
问题成因梳理
报错包含三类问题:
- 多个第三方Pod库的最低部署目标设置为8.0,低于当前Xcode支持的最低版本9.0
- IQMediaPickerController库引用了已更名的废弃系统框架MobileCoreServices
- Xcode 12+新增的架构校验规则,对同时包含iOS设备和模拟器架构的通用框架抛出警告,最终触发构建失败
修复步骤
1. 配置Pod钩子统一处理Pod项目设置
你之前修改platforms目录下配置不生效是正常的,因为NativeScript每次构建都会重生成platforms目录下的内容,所有自定义配置都要放到App_Resources/iOS目录下才会持久生效。
在你已创建的App_Resources/iOS/Podfile文件末尾添加以下post_install脚本:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| # 统一所有Pod的最低部署版本为9.0,匹配Xcode支持范围 config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0' # 修复IQMediaPickerController的框架引用错误 if target.name == 'IQMediaPickerController' config.build_settings['OTHER_LDFLAGS'] ||= ['$(inherited)'] config.build_settings['OTHER_LDFLAGS'] << '-framework CoreServices' config.build_settings['OTHER_LDFLAGS'] -= ['-framework MobileCoreServices'] end end end end
2. 关闭Xcode架构校验
在App_Resources/iOS目录下新建(如果已有则直接编辑)build.xcconfig文件,添加以下配置:
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 VALIDATE_WORKSPACE = NO
该配置会跳过模拟器的arm64架构校验,同时关闭通用框架的架构校验规则,避免TNSCore、TNSSideDrawer这类双架构框架触发构建错误。
3. 清理缓存重新构建
执行以下命令清理所有临时文件后重新构建即可:
ns clean rm -rf platforms/ios node_modules npm install # 构建生产包执行 ns build ios # 运行到模拟器执行 ns run ios
内容的提问来源于stack exchange,提问作者Hardik Shah
相关产品推荐
相关产品推荐

