Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.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静态框架聚合外壳脚本,支持设备和所有模拟器架构_Ios_Xcode_Shell_Ios Frameworks_Ios Library - Fatal编程技术网

iOS静态框架聚合外壳脚本,支持设备和所有模拟器架构

iOS静态框架聚合外壳脚本,支持设备和所有模拟器架构,ios,xcode,shell,ios-frameworks,ios-library,Ios,Xcode,Shell,Ios Frameworks,Ios Library,我正在创建框架,我在该框架中使用了聚合目标,在该框架中,我们可以编写shell脚本来构建设备框架以及基于脚本的模拟器,基于该脚本,我将拥有可在任何项目中导入的可执行框架,我们可以使用框架的类和方法 但问题是,当我们使用“模式设备”创建可执行框架时,我可以在所有设备上运行,但若我使用特定的iOS5/iOS6模拟器进行构建,那个么它将只在客户端项目中运行选定的iOS5/iOS6模拟器 若我使用iOS5模拟器创建了框架构建,并且在客户机项目中运行了该框架,并且使用了iOS6模拟器,那个么它将为架构x8

我正在创建框架,我在该框架中使用了聚合目标,在该框架中,我们可以编写shell脚本来构建设备框架以及基于脚本的模拟器,基于该脚本,我将拥有可在任何项目中导入的可执行框架,我们可以使用框架的类和方法

但问题是,当我们使用“模式设备”创建可执行框架时,我可以在所有设备上运行,但若我使用特定的iOS5/iOS6模拟器进行构建,那个么它将只在客户端项目中运行选定的iOS5/iOS6模拟器

若我使用iOS5模拟器创建了框架构建,并且在客户机项目中运行了该框架,并且使用了iOS6模拟器,那个么它将为架构x86_64提供未定义的符号

我需要支持架构i386和x86_64的shell脚本,这意味着我的框架应该对客户端项目中的所有设备和所有模拟器都是可执行的


对此的任何见解都会非常有用。

创建聚合目标并在其构建阶段内->运行脚本将脚本写入:

构建两个独立的框架: 1.具有移动设备架构的框架(armv7、arm64等) 2.具有模拟器体系结构的框架(i386和x86_64)

例如:

xcodebuild -workspace MyApp.xcworkspace -scheme MyFrameworkScheme -arch i386 -arch x86_64 ONLY_ACTIVE_ARCH=NO -sdk iphonesimulator -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphonesimulator BUILD_DIR=${BUILD_DIR}

xcodebuild -workspace MyApp.xcworkspace -scheme MyFrameworkScheme -arch armv7 -arch armv7s -arch arm64 ONLY_ACTIVE_ARCH=NO -sdk iphoneos -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneos BUILD_DIR=${BUILD_DIR}

然后,使用将两个框架内的库合并为fat库,并在框架内替换其中一个=>您有一个fat框架。

感谢您的帮助