我使用相同的bash脚本构建了至少两年的XCFramework,一切都很成功,直到我将Mac转换为M1,Xcode为14.0。
这个脚本非常标准(见下文)。
在MacPro M1上,Xcode 14.0我得到以下错误(在Xcode 13.1上,同样的脚本工作得很好)。
error: the path does not point to a valid debug symbols file: /Users/*******/build/Release-iphoneos.xcarchive/BCSymbolMaps/*
实际上,当我查看build/Releaseiphoneos.xcarchive文件夹时,BCSymbolMaps并不存在。我验证了Xcode设置“调试信息格式”是否与dsym文件相形见绌。
有人能帮我理解一下这个错误是什么吗?为什么它开始发生在M1上,Xcode为14.0?
谢谢
请参阅下面的bash构建脚本。
# Build the framework for device and for simulator (using
# all needed architectures).
xcodebuild archive -scheme "${TARGET_NAME}" -destination="iOS" -sdk iphonesimulator SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES -archivePath "${SRCROOT}/build/Release-iphonesimulator"
xcodebuild archive -scheme "${TARGET_NAME}" -destination="iOS" -sdk iphoneos SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES -archivePath "${SRCROOT}/build/Release-iphoneos"
ls -l "${SRCROOT}/build/"
# https://developer.apple.com/forums/thread/655768
# First, get all the UUID filepaths for BCSymbolMaps, because these are randomly generated and need to be individually added as the `-debug-symbols` parameter. The dSYM path is always the same so that one is manually added
echo "XCFramework: Generating IPHONE BCSymbolMap paths..."
IPHONE_BCSYMBOLMAP_PATHS=(${SRCROOT}/build/Release-iphoneos.xcarchive/BCSymbolMaps/*)
IPHONE_BCSYMBOLMAP_COMMANDS=""
for path in "${IPHONE_BCSYMBOLMAP_PATHS[@]}"; do
IPHONE_BCSYMBOLMAP_COMMANDS="$IPHONE_BCSYMBOLMAP_COMMANDS -debug-symbols $path "
echo $IPHONE_BCSYMBOLMAP_COMMANDS
done
echo "XCFramework: Generating IPHONE BCSymbolMap paths... --> Done"
# XCFramework with debug symbols - see https://pspdfkit.com/blog/2021/advances-in-xcframeworks/#built-in-support-for-bcsymbolmaps-and-dsyms
xcodebuild -create-xcframework -allow-internal-distribution \
-framework "${SRCROOT}/build/Release-iphoneos.xcarchive/Products/Library/Frameworks/${FRAMEWORK_NAME}.framework" \
-debug-symbols "${SRCROOT}/build/Release-iphoneos.xcarchive/dSYMs/${FRAMEWORK_NAME}.framework.dSYM" \
$IPHONE_BCSYMBOLMAP_COMMANDS \
-framework "${SRCROOT}/build/Release-iphonesimulator.xcarchive/Products/Library/Frameworks/${FRAMEWORK_NAME}.framework" \
-debug-symbols "${SRCROOT}/build/Release-iphonesimulator.xcarchive/dSYMs/${FRAMEWORK_NAME}.framework.dSYM" \
-output "${SF_RELEASE_DIR}/${FRAMEWORK_NAME}.xcframework"
发布于 2022-12-04 20:31:06
您所看到的错误似乎是由于Xcode 14在创建XCFrameworks时处理调试符号的方式发生了变化。在早期版本的Xcode中,包含调试符号信息的BCSymbolMaps目录包含在生成的XCFramework中,但在Xcode 14中,默认情况下不包括此信息。
要修复此错误,我认为在创建-include-bcsymbolmaps
命令时,需要将XCFramework标志添加到XCFramework命令中。这将告诉Xcode将BCSymbolMaps目录包含在生成的XCFramework中,并且错误将不再发生。
https://stackoverflow.com/questions/74588213
复制相似问题