在iOS框架中启用位代码

在iOS框架中启用位代码,ios,xcodebuild,bitcode,Ios,Xcodebuild,Bitcode,我正在通过构建脚本构建一个iOS框架。它建造得很好。当我将它包含到我的项目中,归档它并尝试为Enterprise发布它时,我在日志中得到以下错误 NSLocalizedDescription=Failed to verify bitcode in... 我正在通过脚本进行构建 xcodebuild -project "${PROJECT_FILE_PATH}" -target "${TARGET_NAME}" -configuration "${CONFIGURATION}" -sdk iph

我正在通过构建脚本构建一个iOS框架。它建造得很好。当我将它包含到我的项目中,归档它并尝试为Enterprise发布它时,我在日志中得到以下错误

NSLocalizedDescription=Failed to verify bitcode in...
我正在通过脚本进行构建

xcodebuild -project "${PROJECT_FILE_PATH}" -target "${TARGET_NAME}" -configuration "${CONFIGURATION}" -sdk iphoneos BUILD_DIR="${BUILD_DIR}" OBJROOT="${OBJROOT}" BUILD_ROOT="${BUILD_ROOT}" CONFIGURATION_BUILD_DIR="${IPHONE_DEVICE_BUILD_DIR}/arm64" SYMROOT="${SYMROOT}" BITCODE_GENERATION_MODE=bitcode OTHER_CFLAGS="-fembed-bitcode" ARCHS='arm64' VALID_ARCHS='arm64' $ACTION

xcodebuild -project "${PROJECT_FILE_PATH}" -target "${TARGET_NAME}" -configuration "${CONFIGURATION}" -sdk iphoneos BUILD_DIR="${BUILD_DIR}" OBJROOT="${OBJROOT}" BUILD_ROOT="${BUILD_ROOT}"  CONFIGURATION_BUILD_DIR="${IPHONE_DEVICE_BUILD_DIR}/armv7" SYMROOT="${SYMROOT}" BITCODE_GENERATION_MODE=bitcode OTHER_CFLAGS="-fembed-bitcode" ARCHS='armv7 armv7s' VALID_ARCHS='armv7 armv7s' $ACTION

rm -rf "${UNIVERSAL_OUTPUTFOLDER}"
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework"

lipo -create  "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/arm64/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/armv7/${PROJECT_NAME}.framework/${PROJECT_NAME}" -output "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}"

defaults write "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/Info.plist" CFBundleSupportedPlatforms -array 'iPhoneOS'
最后一行是将plist中的密钥更改为iPhoneOS(我在没有它的情况下遇到了另一个错误)


我正在启用
OTHER\u CFLAGS=“-fembed bitcode”
,但仍然收到错误。有什么想法吗?

您是否尝试过为您的iOS目标添加位代码生成模式用户定义的构建设置,并将其值设置为位代码?我在构建启用位代码的watchOS和tvOS框架时遇到了一些问题,位代码生成模式构建设置修复了我的问题-(BITCODE_GENERATION_MODE=BITCODE我看到您构建了两次目标,一次用于armv7和armv7s,另一次用于arm64。为什么不为armv7和armv7s构建一次呢?这样您就不必通过lipo-create来合并这两个可执行文件了……而且,第二次构建BITCODE_GENERATION_MODE标志时也没有通过。是不是有什么特别的原因你不能一次构建它吗?我在iOS中遇到了同样的问题。当我构建包含所有体系结构的Fat框架时,x86_64和i386缺少位代码。我尝试了许多不同的解决方案,但都不起作用。希望有人能来解决这个问题。我得到了一个有效的解决方案。因为Fat二进制文件是如果不包含x86_64和i386的位代码,则在消费应用程序导出其ipa时,您必须剥离这些体系结构。我建议查看以下链接:您需要将strip-framework.sh包含到您的框架中,然后确保消费应用程序添加构建阶段运行脚本。Y您可以在以下链接中找到脚本: