我公司的 iOS 框架旨在在真正的 iOS 设备上运行。所述框架当前作为 Xcode 项目中的附加目标生成,该项目也生成应用程序。 (这使得调试框架相对容易。)
我们最近收到了要求让它在模拟器中也能运行的请求。我现在可以让它这样做,下一步是创建一个可以在真实设备和模拟器上运行的编译版本。遗憾的是,我无法找到任何材料表明有人使用 Xcode 8 完成了此操作。有一些材料解释了如何使用旧版本的 Xcode,但在一个版本的 Xcode 中有效的内容可能无法在更高版本中工作或建议使用版本。 (我们已经有了一种创建通用框架中断的方法。)我尝试使用一些 Xcode 8 之前的脚本,但它们都不起作用。
有人设法使用 Xcode 8 生成 iOS 通用框架吗?如果可以的话,该怎么办呢?
预先感谢任何人可以提供的任何帮助。
亚伦·阿德尔曼
这是可能的,因为我目前正在 Xcode 8 上的 iOS、watchOS 和 tvOS 上开发通用框架。
我这样做的方法是创建一个聚合目标(跨平台)并在其构建阶段添加一个运行脚本。该脚本基本上编译了 iphonesimulator 和 iphoneos 的 iOS 目标
之后,它创建一个新的二进制文件合并它们(lipo -create -output)
您介意发布您当前的构建脚本来生成通用框架,以便我可以指导您解决您做错的事情吗?
请考虑到脚本可能不是您的问题,您的问题可能是设置您的有效架构、您的架构,甚至是您如何签署目标。我现在建议不要选中目标的常规设置中的自动管理签名选项,并手动设置配置文件和证书。
运行脚本:
#!/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}"
考虑到我在构建设置中将“仅构建活动架构”设置为“否”,并且有效架构也设置为arm64、x86_64、i386、armv7、armv7s。架构是 ${ARCHS_STANDARD} armv7。
我还设置了用户定义的构建设置 BITCODE_GENERATION_MODE 位码。通过此构建设置,我确保生成启用了位码的二进制文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)