我更新了 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"
对我来说,只需重新启动 Xcode 就可以解决它。
实际上通过在构建时选择
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
几天前我遇到了这个问题,所以我所做的是
这样做帮助我解决了问题,并且我能够再次运行应用程序
解决我的问题的是清理环境。显然,当在 Xcode 中运行脚本构建阶段时,设置了一些环境变量,这些变量可能会干扰 Swift 标准库的解析。我在从 Xcode“运行脚本”阶段执行迦太基构建时遇到了这个问题。
通过清除环境来执行命令:
env -i <command>
您可能希望保留 PATH 和 DEVELOPER_DIR 环境变量,特别是当您安装了多个 Xcode 版本时。
所以在你的情况下
env -i DEVELOPER_DIR="$DEVELOPER_DIR" PATH="$PATH" xcodebuild ...
我只是随机发生这个问题。我的代码中没有构建错误。 在切换到新的模拟器并清理构建文件夹但没有成功后,我重新启动了 Xcode (11.5),问题自行解决。 每当你遇到奇怪的构建失败时,请重新启动 Xcode。
对我来说,以下解决了问题:
来自目标构建设置
将 Architectures 设置为
$(NATIVE_ARCH)
并将 $(ARCHS_STANDARD)
添加到 Valid Architectures。
这可能会有所帮助Xcode 构建设置中的“架构”和“有效架构”有什么区别?
可能与错误的 swift 版本有关
尝试使用
检查您当前的 swift 套餐swiftenv versions
分别使用安装或卸载命令
swiftenv uninstall (install)
安装
swiftenv
使用
brew install kylef/formulae/swiftenv
感谢所有答案,但似乎是 Xcode 安装错误。我再次下载了 Xcode 并测试了在我的情况下一切正常。
重置所有环境变量不是解决方案,因为这也会取消设置 SSH 密钥,这将导致在使用 SSH 身份验证时克隆失败。
但是,唯一有问题的环境变量是
LLVM_TARGET_TRIPLE_SUFFIX
,因此取消设置即可解决问题。
unset LLVM_TARGET_TRIPLE_SUFFIX
carthage update 2>&1