用于静态框架的iOS聚合Shell脚本,以支持设备和所有模拟器体系结构

时间:2016-08-11 05:27:39

标签: ios xcode shell ios-frameworks ios-library

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

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

如果我使用iOS5模拟器创建了框架构建,并且如果我在客户端项目中运行该框架并且我使用iOS6模拟器,则为架构x86_64提供未定义的符号。

我需要支持体系结构i386和x86_64的shell脚本意味着我的框架应该可以在所有设备和客户端项目中的所有模拟器中执行。

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

1 个答案:

答案 0 :(得分:1)

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

构建2个独立的框架: 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}

然后,使用lipo将两个框架内的库合并到一个胖库,并在framework =>中替换其中一个库。你有一个胖框架。