error: lipo: can not write to output file

控制台输出信息如下

error: lipo: can't write to output file: /Users/用户名/Library/Developer/Xcode/DerivedData/project-fljetreqmwyqxwgsfkrfzxkxrfkm/Build/Intermediates/ArchiveIntermediates/project/BuildProductsPath/Release-iphoneos/project.app.dSYM/Contents/Resources/DWARF/project.lipo (Undefined error: 0)

错误信息表明lipo无法写入输出文件,原因可能是磁盘空间不足或在构建过程中存在不同架构之间的冲突。以下是一些可能的解决方案:

检查磁盘空间: 确保你的设备有足够的磁盘空间。如果磁盘空间不足,lipo可能无法写入输出文件。如果磁盘已满,尝试删除不必要的文件或将它们移动到外部存储设备。

排除ARM64架构: 如果你正在使用Xcode 12或更高版本,它在为模拟器构建时包含了”arm64”架构的切片。如果你的设备构建也包含”arm64”架构,可能会导致冲突。你可以通过从模拟器构建中排除”arm64”架构来解决这个问题。以下是如何做到这一点的命令:

xcodebuild -target SampleSDK ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" OBJROOT="${OBJROOT}/DependentBuilds" EXCLUDED_ARCHS="arm64"

或者,可以在将模拟器和设备框架合并为一个之前,使用lipo -remove从模拟器构建中移除”arm64”架构:

lipo -remove arm64 "$BUILD_DIR/${CONFIGURATION}-iphonesimulator/${PRODUCT_NAME}/${PROJECT_NAME}" -output "$BUILD_DIR/${CONFIGURATION}-iphonesimulator/${PRODUCT_NAME}/${PROJECT_NAME}"

设置Build Active Architecture OnlyYES,在你的Xcode项目设置中,确保“Build Active Architecture Only”设置为“YES”。这确保了构建只包含活动方案的架构 。

如果以上解决方案都不能解决问题,你可以尝试构建XCFramework,这应该可以支持设备和模拟器,而无需使用lipo

参考链接:

https://stackoverflow.com/questions/64022291/ios-14-lipo-error-while-creating-library-for-both-device-and-simulator

https://stackoverflow.com/questions/24967290/xcode-compile-error-lipo-cant-open-input-file

https://stackoverflow.com/questions/64022291/ios-14-lipo-error-while-creating-library-for-both-device-and-simulator