这是可能的,因为我目前正在开发的Xcode 8
我这样做,是建立一个总目标(跨平台)的方式在iOS上,watchOS通用框架和tvOS并添加在构建阶段运行脚本。该脚本基本上编译为iphonesimulator iOS的目标和的iPhoneOS
此之后,它会创建一个新的二进制合并两者(脂 - 创建 - 输出)
你介意发布您的当前构建脚本生成一个通用框架所以我可以指导你做错了什么?
考虑到脚本在这里不是你的问题,你的问题可能是设置你的有效体系结构,你的体系结构,甚至你如何签署目标。我现在推荐在未选中目标的常规设置中保留“自动管理签名”选项,并手动设置配置配置文件和证书。
运行脚本:在考虑
#!/bin/sh
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal
# make sure the output directory exists
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}/iOS"
# Step 1. Build Device and Simulator versions on iOS
xcodebuild -workspace "${PROJECT_NAME}.xcworkspace" -scheme "${PROJECT_NAME}" -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 6' clean build
xcodebuild -workspace "${PROJECT_NAME}.xcworkspace" -scheme "${PROJECT_NAME}" -sdk iphoneos clean build
# Step 2. Copy the framework structure (from iphoneos build) to the universal folder
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/iOS"
# Step 3. Create universal binary file using lipo and place the combined executable in the copied framework directory
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/iOS/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}"
# Step 4. Convenience step to copy the framework to the project's directory
mkdir -p "${TMPDIR}/${PROJECT_NAME}/Frameworks/iOS"
cp -R "${UNIVERSAL_OUTPUTFOLDER}/iOS/${PROJECT_NAME}.framework" "${TMPDIR}/${PROJECT_NAME}/Frameworks/iOS"
# Step 6. Create .tar.gz file for posting on the binary repository
cd "${TMPDIR}"
# We nest the framework inside a Frameworks folder so that it unarchives correctly
tar -zcf "${PROJECT_NAME}.framework.tar.gz" "${PROJECT_NAME}/Frameworks/"
mv "${PROJECT_NAME}.framework.tar.gz" "${PROJECT_DIR}/"
# Step 7. Convenience step to open the project's directory in Finder
#open "${PROJECT_DIR}"
采取我生成有源体系仅设置为NO的生成设置,也有效的架构设置为arm64,x86_64的,I386,ARMv7的,armv7s。架构是$ {ARCHS_STANDARD} armv7s。
我还设置了一个用户定义的构建设置BITCODE_GENERATION_MODE位码。有了这个构建设置,我确保生成启用了位代码的二进制文件。
这是一个完整的指南,我写在这个问题上:https://eladnava.com/publish-a-universal-binary-ios-framework-in-swift-using-cocoapods/ –