繁体   English   中英

构建多个体系结构的框架(arm64,armv7,armv7s)

[英]Build framework for multiple architectures (arm64, armv7, armv7s)

我正在尝试将针对arm64,armv7和armv7s的项目构建上传到TestFlight。 它正在使用另一个项目的框架。 但是frameowork看起来只是为arm64构建而不是arm64( file was built for arm64 which is not the architecture being linked (armv7) )。

问题是如何使框架包含所有体系结构? 我希望将项目分开。 而且我不关心模拟器。 我想确保它是为发布而构建的。

这是框架目标:

在此输入图像描述

编辑:我的项目是基于Cordova。 所以它使用的是一个使用预构建框架的插件。 有指令用于构建一个包含模拟器和设备的胖框架,然后将它与lipo连接起来。 我需要的是我没有的设备架构。 这是否意味着我需要arm64,armv7和armv7s中的三个设备才能将它们完全连接起来?

Apple已停止在iOS 11中支持32位。您既不能在iOS 11上运行32位应用程序,也不能在32位处理器上运行iOS 11。 因此,您必须将部署目标设置为适用于您的框架的iOS 11之前的iOS版本。

您可以尝试创建聚合目标并编写一个支持所有平台的脚本。 这是我的一个项目的示例脚本。

unset TOOLCHAINS #Xcode 7.3 BUG FIX  http://stackoverflow.com/questions/36184930/xcodebuild-7-3-cant-enable-bitcode

# define output folder environment variable

C_PROJECT_NAME="<<YOUR_FRAMEWORK_NAME>>"

UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal

# Step 1. Build Device and Simulator versions
xcodebuild -target <<YOUR_FRAMEWORK_NAME>> ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"

xcodebuild -target <<YOUR_FRAMEWORK_NAME>> ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator -arch i386 -arch x86_64 BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"

mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"

rm -rf ./${C_PROJECT_NAME}.framework
cp -R ${BUILD_DIR}/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${C_PROJECT_NAME}.framework ./

# Step 2. Create universal binary file using lipo

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

mv ${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME} ./${C_PROJECT_NAME}.framework/${C_PROJECT_NAME}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM