【问题标题】:iOS Aggregate Shell Script for Static Framework to support Both Device and All Simulator Architecture用于静态框架的 iOS 聚合 Shell 脚本以支持设备和所有模拟器架构
【发布时间】:2016-08-11 05:27:38
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 任何帮助表示赞赏

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


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

【讨论】:

  • 感谢米兰的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-01
  • 1970-01-01
  • 2020-10-06
  • 2014-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多