我不能再在模拟器上运行我的应用程序了。网上建议我编辑我的project.pbxproj,但这似乎不起作用。我如何恢复在我的模拟器上运行我的项目的能力(并且仍然能够在设备上这样做)?我正在开发另一个使用许多相同框架的项目,但它在模拟器上运行。什么会导致类似的框架在一个项目中工作但在另一个项目中不起作用?
Run*_*der 502
Xcode 12.3
就我而言,我通过在 Build Settings 选项卡中将Validate Workspace设置为 Yes解决了这个问题
fly*_*erz 111
毫无疑问,Xcode 12.3 的修复是在目标的构建设置中设置验证工作区属性。但是,如果您在此更改后检查差异,则构建错误的原因是项目文件中缺少参数 (VALIDATE_WORKSPACE),而不是参数值。所以你不需要值为 YES。您需要将该值添加到项目设置中,并且可以将其保留为默认值 (NO)。第一次,它在 Build Settings 中显示为 NO,但这只是因为这是缺少参数的默认值。
TLDR; 在不更改项目设置的情况下,转到目标的构建设置,找到"Validate Workspace",将其设置为 YES,然后再设置回 NO。
Mar*_*mes 21
当我将自定义框架添加到项目中并更新 Xcode 后,我遇到了同样的问题。
解决方案:在项目中的构建设置下搜索验证工作区只需更改为yes
默认设置为no
gur*_*tor 16
使用 .xcframework 而不是包含 iOS 和 iOS 模拟器切片的“胖”.framework。这也避免了在为 App Store 构建时使用构建阶段来剥离 iOS 模拟器切片的需要。
不支持通常使用 lipo 创建的“胖”框架,因为它们不能由 Xcode 直接构建(来源:开发者技术支持 Apple 开发者论坛)。.xcframework 是唯一支持的机制,可以提供支持 iOS 和 iOS 模拟器的单个框架。
此外,.xframework 是发布二进制 Swift 框架的唯一受支持方式(来源:Apple 开发者论坛上的开发者技术支持)。
在 Xcode 12.3 中,强制执行不支持“胖”框架的事实,因为 Xcode 在构建期间验证框架,这就是为什么许多项目突然开始看到构建错误的原因。
mis*_*nry 11
这里的大多数答案都是针对通用二进制文件的消费者来解决新限制的。但是,正如其他地方所指出的,是时候XCFramework
为框架作者迁移到 Apple 的格式了。
如果您之前运行自定义构建脚本以使用聚合目标和 来创建通用二进制文件lipo
,则可以直接迁移到生成.xcframework
文件
首先,在构建设置中确保“构建分发库”( BUILD_LIBRARY_FOR_DISTRIBUTION
) 设置为YES
然后,将使用的现有聚合目标构建脚本替换lipo
为以下内容,这很容易仅用于展示如何制作“发布”框架:
# Universal Script
set -e
FRAMEWORK_NAME="your_framework_name"
IOS_SCHEME_NAME="your_scheme_name"
if [ -d "${SRCROOT}/build" ]; then
rm -rf "${SRCROOT}/build"
fi
SIMULATOR_ARCHIVE_PATH="${SRCROOT}/build/${FRAMEWORK_NAME}-iphonesimulator.xcarchive"
DEVICE_ARCHIVE_PATH="${SRCROOT}/build/${FRAMEWORK_NAME}-iphoneos.xcarchive"
OUTPUT_DIR="${SRCROOT}/framework_out_universal/"
# Simulator xcarchieve
xcodebuild archive \
-scheme ${IOS_SCHEME_NAME} \
-archivePath ${SIMULATOR_ARCHIVE_PATH} \
-configuration Release \
-sdk iphonesimulator \
SKIP_INSTALL=NO
# Device xcarchieve
xcodebuild archive \
-scheme ${IOS_SCHEME_NAME} \
-archivePath ${DEVICE_ARCHIVE_PATH} \
-sdk iphoneos \
-configuration Release \
SKIP_INSTALL=NO
# Clean up old output directory
rm -rf "${OUTPUT_DIR}"
# Create xcframwork combine of all frameworks
xcodebuild -create-xcframework \
-framework ${SIMULATOR_ARCHIVE_PATH}/Products/Library/Frameworks/${FRAMEWORK_NAME}.framework \
-framework ${DEVICE_ARCHIVE_PATH}/Products/Library/Frameworks/${FRAMEWORK_NAME}.framework \
-output ${OUTPUT_DIR}/${FRAMEWORK_NAME}.xcframework
# Delete the most recent build.
if [ -d "${SRCROOT}/build" ]; then
rm -rf "${SRCROOT}/build"
fi
Run Code Online (Sandbox Code Playgroud)
您可以调整上述内容以获得不同的输出目录、不同的删除行为、支持多种配置(发布与调试),但这对我有用。
最后,作为一个时间步骤,删除your_framework_name.framework
导致您在此项目中提到的错误的通用二进制文件。复制新构建的your_framework_name.xcframework
并将其添加到项目中,错误应该会消失。
小智 6
可能的原因是
归档时间: |
|
查看次数: |
64021 次 |
最近记录: |