为通用 ios 模拟器构建时是否可以排除 i386 arch?

时间:2021-04-01 06:33:54

标签: ios xcode

所以我目前有一个 CI/CD 管道,用于使用 appium 运行自动化测试。然而,由于各种原因,应用程序的构建和应用程序的测试被分为两个不同的过程。

在构建过程中,将使用 generic/platform=iOS Simulator 作为目标构建通用模拟器应用。

完成后,工件将被发送到不同的模拟器上进行测试。

现在的问题是我最近包含了一个不支持 i386 架构的框架。所以现在通用构建过程失败,产生 missing required architecture i386 in file ...

的错误输出

我想知道有没有办法指定 xcodebuild 的目标,为通用模拟器目标构建,但不支持 i386。

1 个答案:

答案 0 :(得分:0)

这可能不是目前最好的解决方案,但我暂时找到了解决此问题的方法。

我使用库的方式已经是通过一个包装类,所以我唯一做的就是确保具体类的实现是用条件编译包装的,就像这样

import ProblemFramework

Protocol IA {
    func doSomething(_ completion: CompletionBlock)
}

Class A: Protocol IA {
     #if arch(arm64) || arch(x86_64)
     func doSomething(_ completion: CompletionBlock) {
          //call problem framework
     }
     #else
     func doSomething(_ completion: CompletionBlock) {
         //failsafe or workaround
     }
     #endif
}

但如果有人有更好的主意,我会全神贯注