tp2*_*376 14 xcode ios swift xcode10
我更新了我的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"
Run Code Online (Sandbox Code Playgroud)
Ale*_*tiş 22
实际上通过选择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
Run Code Online (Sandbox Code Playgroud)
在我的案例中解决问题的是清除环境.显然,在Xcode中运行脚本构建阶段时,会设置一些环境变量,这些变量可能会影响Swift标准库的解析.从Xcode"Run Script"阶段执行carthage构建时遇到了这个问题.
通过以下方式清除环境来执行命令:
env -i <command>
Run Code Online (Sandbox Code Playgroud)
您可能希望保留PATH和DEVELOPER_DIR环境变量,特别是当您安装了多个Xcode版本时.
所以在你的情况下
env -i DEVELOPER_DIR="$DEVELOPER_DIR" PATH="$PATH" xcodebuild ...
Run Code Online (Sandbox Code Playgroud)
对于新版本的 Xcode,请尝试通过 Rosetta 打开 Xcode
右键单击应用程序文件夹中的 Xcode -> 获取信息 -> 将 Open with Rosetta 设置为 true
小智 6
我只是随机出现了这个问题。我的代码中没有构建错误。切换到新模拟器并清理构建文件夹但没有运气后,我重新启动了 xCode (11.5),问题自行解决。每当您遇到奇怪的构建失败时,请重新启动 xCode。
| 归档时间: |
|
| 查看次数: |
6251 次 |
| 最近记录: |