返回博客首页
← 所有文章

Xcode 12 ~ 一段与 TSC 的爱情故事

2020年10月2日 — 作者:技术指导委员会 (TSC)

当第三方供应商或临时依赖项发布主要版本时,开发工具链总是可能让团队经历一段不稳定的时期。Xcode 就是其中之一,它影响了远超 NativeScript 的广大开发者社区。当您的开发工具开始抱怨神秘的架构并无法构建时,您自然会产生各种各样的情绪,从您第一次看到《Goonies》中树懒时的感受,到《Gremlins》中剧院场景,甚至想到异形寄生在您的体内

如果这些场景没有让您感到不寒而栗,那么这些控制台输出呢?

链接器命令失败?!😱

/project/path/platforms/ios/internal/NativeScript.framework/NativeScript' for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
** BUILD FAILED **

正在为 iOS 模拟器链接 arm64?😱

ld: in /project/path/Pods/mopub-ios-sdk/MoPubSDK/Viewability/MOAT/MPUBMoatMobileAppKit.framework/MPUBMoatMobileAppKit(MPUBMoatAnalytics.o),
building for iOS Simulator, but linking in object file built for iOS, for architecture arm64

构建失败?!代码 65?这是什么?😱

Error: Command xcodebuild failed with exit code 65

TSC 在这里为您提供帮助

NativeScript 由一个技术指导委员会 (TSC) 驱动,就像您一样,它依赖于这些工具来进行关键的生产场景。TSC 的每个成员每天都会使用这些工具,每天多次,如果不是每天 24/7 的话(看看那些失眠的人!健康提示:请睡觉)。我们是一群充满活力、技术精湛且富有同情心的普通人,我们非常关心这个工具链以及像您一样的社区成员。

NativeScript 之类的工具链的一个优点是,其运行时是对其运行所在的主机平台的纯粹体现。它不会试图重新创建平台,而是通过您喜欢的语言 JavaScript 将该平台呈现在您的指尖。这意味着框架的核心维护归结为它所依赖的工具,例如 Xcode。

Xcode 12 于 2020 年 9 月 16 日发布。整个夏天都发布了几个 Beta 版本,TSC 在其中验证了几套工具。接近 Beta 结束和最终发布时,跟踪了一些架构更改。

来自最终 Xcode 12 发行说明

构建设置编辑器不再包含“有效架构”构建设置 (VALID_ARCHS),并且不建议使用它。取而代之的是,有一个新的“排除架构”构建设置 (EXCLUDED_ARCHS)。如果项目包含 VALID_ARCHS,则该设置会显示在构建设置编辑器的“用户定义”部分中。(15145028)

这是影响工具链并影响广泛开发社区的关键变化。

TSC 识别并收集了社区报告,以确保从多个角度和不同的情况解决此问题。我们非常感谢整个充满激情的社区提供的反馈。这无疑帮助我们在大约 2 周内解决了这个问题。

更新版本

这些修复适用于 NativeScript 6 和 NativeScript 7 项目。

  1. 安装最新的 cli (v7.0.10)

    npm i -g nativescript
    
  2. 在使用 {N} 7 时更新 devDependencies 中的 ios 运行时,或者在使用 {N} 6 时更新 package.json 中的 nativescript

    • 如果您使用的是 @nativescript/ios(新的 v8)运行时,您需要更新您的项目以使用:@nativescript/[email protected]
    • 如果您使用的是 tns-ios(JavaScriptCore)运行时,您需要更新您的项目以使用:[email protected]
  3. ns clean - 如果使用 {N} 7,否则手动删除 node_modulesplatformshookspackage-lock.json

  4. 运行并繁荣!

干杯🍻