gpt4 book ai didi

xcodebuild - iOS 14,为设备和模拟器创建库时出现 lipo 错误

转载 作者:行者123 更新时间:2023-12-03 15:58:12 24 4
gpt4 key购买 nike

我们一直在使用 lipo 命令来创建一个框架,该框架在集成到其他项目时可以在设备和模拟器上运行。
以下是用于生成设备和模拟器构建的构建命令

xcodebuild -target SampleSDK ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" OBJROOT="${OBJROOT}/DependentBuilds"
xcodebuild -target SampleSDK ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" OBJROOT="${OBJROOT}/DependentBuilds"
在此之后,我们将 swift 模块从 iphonesimulator(如果存在)复制到复制的框架目录
cp -R "$BUILD_DIR/${CONFIGURATION}-iphonesimulator/${PRODUCT_NAME}/Modules/SampleSDK.swiftmodule/" "${UNIVERSAL_OUTPUTFOLDER}/${PRODUCT_NAME}/Modules/${PROJECT_NAME}.swiftmodule/"
然后是 lipo 命令
lipo -create "$BUILD_DIR/${CONFIGURATION}-iphonesimulator/${PRODUCT_NAME}/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PRODUCT_NAME}/${PROJECT_NAME}" -output "${UNIVERSAL_OUTPUTFOLDER}/${PRODUCT_NAME}/${PROJECT_NAME}"
上述命令失败并出现以下错误
fatal error: lipo: /path/to/Library/Developer/Xcode/DerivedData/Sample-bhfmlauxsdympmdjkjyvujaljevg/Build/Products/Debug-iphonesimulator/SampleSDK.framework/SampleSDK and /Users/rramshettysiddaraju/Library/Developer/Xcode/DerivedData/Sample-bhfmlauxsdympmdjkjyvujaljevg/Build/Products/Debug-iphoneos/SampleSDK.framework/SampleSDK have the same architectures (arm64) and can't be in the same fat output file
我尝试了 stackoverflow 中的一个答案,即添加用户定义的设置 VALID_ARCHS 然后将其删除。但这没有用

最佳答案

错误的原因是 Xcode 12 在为模拟器构建时包含“arm64”架构的切片(除了 Xcode <12 的通常“i386”和“x86_64”架构)。这可能是为了支持使用 Apple Silicon 处理器的( future )Mac 上的模拟器。由于您的设备构建还包括“arm64”架构,lipo不知道您想要两个“arm64”切片中的哪一个,并拒绝创建组合的胖二进制框架。
作为一种解决方法,您可以通过附加 EXCLUDED_ARCHS 从模拟器构建中排除“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}"
从长远来看,您最好建立一个 XCFramework ,它应该支持设备和模拟器,而不需要使用 lipo .但我还没有测试过这个。

关于xcodebuild - iOS 14,为设备和模拟器创建库时出现 lipo 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64022291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com