26

我更新了我的 Xcode,但无法构建。它失败了:

<unknown>:0: error: unable to load standard library for target 'arm64-apple-ios10.0-simulator'

合并脚本:

 # 1
# Set bash script to exit immediately if any commands fail.
set -e

# 2
# Setup some constants for use later on.
FRAMEWORK_NAME="SDK"
OUTPUT_PATH="${SRCROOT}"

# 3
# If remnants from a previous build exist, delete them.
if [ -d "${SRCROOT}/build" ]; then
rm -rf "${SRCROOT}/build"
fi

# 4
# Build the framework for device and for simulator (using
# all needed architectures).
xcodebuild -target "${FRAMEWORK_NAME}" -configuration Release -arch 
arm64 -arch armv7 -arch armv7s only_active_arch=no defines_module=yes - 
sdk "iphoneos"
xcodebuild -target "${FRAMEWORK_NAME}" -configuration Release -arch 
x86_64 -arch i386 only_active_arch=no defines_module=yes -sdk 
"iphonesimulator"
4

11 回答 11

29

对我来说,只需重新启动 Xcode 即可解决。

于 2020-05-21T00:32:39.607 回答
25

实际上是通过Generic iOS Device在构建时选择而不是模拟器设备来解决这个问题。

编辑:我应该提到,在 Xcode 10 中。

编辑 2:我将发布我的通用框架脚本

set -e

######################
# Options
######################

REVEAL_ARCHIVE_IN_FINDER=true

FRAMEWORK_NAME="${PROJECT_NAME}"

SIMULATOR_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${FRAMEWORK_NAME}.framework"

DEVICE_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphoneos/${FRAMEWORK_NAME}.framework"

UNIVERSAL_LIBRARY_DIR="${BUILD_DIR}/${CONFIGURATION}-iphoneuniversal"

FRAMEWORK="${UNIVERSAL_LIBRARY_DIR}/${FRAMEWORK_NAME}.framework"


######################
# Build Frameworks
######################


xcodebuild -project ${PROJECT_FILE_PATH} -scheme ${PROJECT_NAME} -sdk iphonesimulator -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphonesimulator 2>&1


xcodebuild -project ${PROJECT_FILE_PATH} -scheme ${PROJECT_NAME} -sdk iphoneos -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneos 2>&1


######################
# Create directory for universal
######################

rm -rf "${UNIVERSAL_LIBRARY_DIR}"

mkdir "${UNIVERSAL_LIBRARY_DIR}"

mkdir "${FRAMEWORK}"


######################
# Copy files Framework
######################

cp -r "${DEVICE_LIBRARY_PATH}/." "${FRAMEWORK}"


######################
# Make an universal binary
######################

lipo "${SIMULATOR_LIBRARY_PATH}/${FRAMEWORK_NAME}" "${DEVICE_LIBRARY_PATH}/${FRAMEWORK_NAME}" -create -output "${FRAMEWORK}/${FRAMEWORK_NAME}" | echo

# For Swift framework, Swiftmodule needs to be copied in the universal framework
if [ -d "${SIMULATOR_LIBRARY_PATH}/Modules/${FRAMEWORK_NAME}.swiftmodule/" ]; then
cp -f ${SIMULATOR_LIBRARY_PATH}/Modules/${FRAMEWORK_NAME}.swiftmodule/* "${FRAMEWORK}/Modules/${FRAMEWORK_NAME}.swiftmodule/" | echo
                                                                      fi

                                                                      if [ -d "${DEVICE_LIBRARY_PATH}/Modules/${FRAMEWORK_NAME}.swiftmodule/" ]; then
                                                                      cp -f ${DEVICE_LIBRARY_PATH}/Modules/${FRAMEWORK_NAME}.swiftmodule/* "${FRAMEWORK}/Modules/${FRAMEWORK_NAME}.swiftmodule/" | echo
                                                                      fi

                                                                      ######################
                                                                      # On Release, copy the result to release directory
                                                                      ######################
                                                                      OUTPUT_DIR="${PROJECT_DIR}/Output/${FRAMEWORK_NAME}-${CONFIGURATION}-iphoneuniversal/"

                                                                      rm -rf "$OUTPUT_DIR"
                                                                      mkdir -p "$OUTPUT_DIR"

                                                                      cp -r "${FRAMEWORK}" "$OUTPUT_DIR"

                                                                      if [ ${REVEAL_ARCHIVE_IN_FINDER} = true ]; then
                                                                      open "${OUTPUT_DIR}/"
                                                                  fi
于 2018-09-28T17:12:55.813 回答
9

几天前我遇到了这个问题,所以我所做的是

  • 退出 Xcode
  • 删除派生数据文件夹
  • 启动 Xcode 并进行了干净的构建

这样做帮助我解决了问题,并且我能够再次运行该应用程序

于 2020-07-16T20:58:30.783 回答
8

在我的案例中解决问题的是清理环境。显然,在 Xcode 中运行脚本构建阶段时,设置了一些环境变量可能会干扰 Swift 标准库的解析。我在从 Xcode“运行脚本”阶段执行 carthage 构建时遇到了这个问题。

通过清除环境执行命令:

env -i <command>

您可能希望保留 PATH 和 DEVELOPER_DIR 环境变量,特别是当您安装了多个 Xcode 版本时。

所以在你的情况下

env -i DEVELOPER_DIR="$DEVELOPER_DIR" PATH="$PATH" xcodebuild ...
于 2018-09-18T07:52:11.053 回答
7

我只是随机发生了这个问题。我的代码中没有构建错误。在没有运气切换到新的模拟器和清理构建文件夹后,我重新启动了 Xcode(11.5),问题自行解决了。每当您遇到奇怪的构建失败时,请重新启动 Xcoode。

于 2020-05-21T22:50:53.760 回答
2

对我来说,以下解决了这个问题:

从目标构建设置

Architectures设置为$(NATIVE_ARCH)并添加$(ARCHS_STANDARD)Valid Architectures

这可能会有所帮助Xcode Build Settings 中的“Architectures”和“Valid Architectures”有什么区别?

于 2020-09-21T16:35:28.770 回答
0

感谢所有答案,但似乎是 Xcode 安装错误 ..我再次下载了 Xcode 并测试了在我的情况下一切正常。

于 2018-09-17T15:19:03.060 回答
0

尝试将 iOS 10 模拟器添加到您的 xCode。 在此处输入图像描述

于 2018-07-27T14:05:49.310 回答
0

重置所有环境变量不是解决方案,因为这也会取消设置 SSH 密钥,如果使用 SSH 身份验证,这将导致克隆失败。

但是,唯一有问题的环境变量是LLVM_TARGET_TRIPLE_SUFFIX, 所以取消设置可以解决问题。

unset LLVM_TARGET_TRIPLE_SUFFIX
carthage update 2>&1
于 2019-05-03T10:43:09.350 回答
0

可能连接到错误的 swift 版本

尝试检查您当前的快速包

swiftenv versions

分别使用安装或卸载命令

swiftenv uninstall (install)

安装swiftenv使用

brew install kylef/formulae/swiftenv
于 2018-08-28T16:07:41.687 回答
-1

安装最新的 Xcode 10 GM 种子,面对同样的问题尝试了许多解决方案,但在更新到新的 Xcode 后问题已解决。如果仍然存在问题,请尝试此转到文件和项目设置,将构建系统设置为旧版构建系统,清理并构建。

在此处输入图像描述

于 2018-09-17T06:23:28.710 回答