Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为多种体系结构(arm64、armv7、armv7s)构建框架_Ios_Ios Frameworks - Fatal编程技术网

Ios 为多种体系结构(arm64、armv7、armv7s)构建框架

Ios 为多种体系结构(arm64、armv7、armv7s)构建框架,ios,ios-frameworks,Ios,Ios Frameworks,我正在尝试将一个针对arm64、armv7和armv7s的项目构建上传到TestFlight。它正在使用另一个项目的框架。但是framework似乎只为arm64而不是arm64构建(文件是为arm64构建的,它不是要链接的体系结构(armv7)) 问题是如何创建包含所有体系结构的框架?我想把项目分开。我不喜欢模拟器。我想确保它是为发布而构建的 这是框架目标: 编辑:我的项目基于Cordova。因此,它使用了一个插件,该插件利用了一个预先构建的框架。有关于构建fat框架的说明,其中包含模拟器和

我正在尝试将一个针对arm64、armv7和armv7s的项目构建上传到TestFlight。它正在使用另一个项目的框架。但是framework似乎只为arm64而不是arm64构建(
文件是为arm64构建的,它不是要链接的体系结构(armv7)

问题是如何创建包含所有体系结构的框架?我想把项目分开。我不喜欢模拟器。我想确保它是为发布而构建的

这是框架目标:


编辑:我的项目基于Cordova。因此,它使用了一个插件,该插件利用了一个预先构建的框架。有关于构建fat框架的说明,其中包含模拟器和设备,然后将其与
lipo
连接起来。我需要的是我没有的设备的架构。这是否真的意味着我需要arm64、armv7和armv7s中的三个设备才能将它们连接起来?

苹果已经停止在iOS 11中支持32位。您既不能在iOS 11上运行32位应用程序,也不能在32位处理器上运行iOS 11。因此,您必须为您的框架将部署目标设置为早于IOS11的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}
unset工具链#Xcode 7.3错误修复http://stackoverflow.com/questions/36184930/xcodebuild-7-3-cant-enable-bitcode
#定义输出文件夹环境变量
C_项目_NAME=“”
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-UNIVERSAL
#第一步。构建设备和模拟器版本
xcodebuild-target ONLY\u ACTIVE\u ARCH=NO-configuration${configuration}-sdk iphoneos BUILD\u DIR=“${BUILD\u DIR}”BUILD\u ROOT=“${BUILD\u ROOT}”
xcodebuild-target ONLY\u ACTIVE\u ARCH=NO-configuration${configuration}-sdk iphonesimulator-ARCH i386-ARCH x86\u 64 BUILD\u DIR=“${BUILD\u DIR}”BUILD\u ROOT=“${BUILD\u ROOT}”
mkdir-p“${UNIVERSAL_OUTPUTFOLDER}”
rm-rf./${C_PROJECT_NAME}.framework
cp-R${BUILD\u DIR}/${CONFIGURATION}${EFFECTIVE\u PLATFORM\u NAME}/${C\u PROJECT\u NAME}.framework/
#第二步。使用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
mv${UNIVERSAL\u OUTPUTFOLDER}/${C\u PROJECT\u NAME}./${C\u PROJECT\u NAME}.framework/${C\u PROJECT\u NAME}

Whah!你是对的,这就是我们所缺少的。TestFlight接受了二进制文件。非常感谢你!明亮的确实节省了我的时间。只是一个输入错误-应该是部署目标非常感谢您的回答。我遇到了一个类似的问题,在8个小时内尝试了几十种不同的解决方案后,这就是有效的方法。我通常从不在StackOverflow上发帖,只是想表达我对这一点的感激之情。:-)