对设备和模拟器使用不同的框架

时间:2019-09-02 21:39:11

标签: ios xcode

我获得了两个相同的代码库构建,分别作为两个单独的框架交付:一个用于iOS设备,一个用于模拟器

是否有一种方法可以根据我的应用程序的目标有条件地包含一个或另一个?

2 个答案:

答案 0 :(得分:0)

您可以编写脚本阶段以用某些条件(可能是目标体系结构)替换框架文件。

答案 1 :(得分:0)

这是解决方案。假设iOS设备和模拟器的框架分别位于文件夹$device中。 $simulator。合并的框架将进入$merged

  • 将所有内容从$simulator复制到$merged
  • 将所有内容从$device复制到$merged(确保这将覆盖之前步骤中复制的同名二进制文件,但是我们只想确保我们拥有其他所有内容(模块映射等)。 );同名二进制文件的实际合并会在下一步中发生)
  • 对于在$name$simulator中都存在的每个名称为$device的二进制文件(main和* .dylib),请执行以下操作: lipo -create $device/name $simulator/$name -output $merged/$name

以上内容可以通过脚本轻松实现自动化。

我通过与Flutter一起使用的一组框架验证了该方法的有效性。最简单的方法是将$merged文件夹作为供应商框架添加到podspec文件中