1

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

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

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

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

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

4

1 回答 1

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将两个框架内的库合并为一个胖库,并在框架内替换其中一个 => 你有一个胖框架。

于 2017-02-24T13:33:30.677 回答