我读过这篇文章post我已经成功地在不使用脚本的情况下实现了胖构建。我的下一步是尝试使用终端来生成一个胖二进制文件。
在帖子中,作者声明将以下内容添加到项目文件中:
SDKROOT = iphoneos
SDKROOT[arch=i386] = $(CORRESPONDING_SIMULATOR_SDK_NAME)
SDKROOT[arch=x86_64] = $(CORRESPONDING_SIMULATOR_SDK_NAME)
鉴于我可以从项目文件中的build设置生成一个胖二进制文件,假设我可以从终端执行此操作。我的问题在于如何在终端中指定 SDKROOT[arch=i386]
和 SDKROOT[arch=x86_64]
。我尝试过不同的组合但没有运气。这是众多尝试之一:
xcodebuild clean analyze ARCHS='arm64 armv7 i386 x86_64' SDKROOT='iphoneos' SDKROOT[arch=i386] = 'iphonesimulator12.1' SDKROOT[arch=x86_64] = 'iphonesimulator12.1'
xcodebuild clean analyze ARCHS='arm64 armv7 i386 x86_64' SDKROOT='iphoneos iphonesimulator12.1'
最佳答案
您没有这样指定。每个 SDKROOT 都需要映射到 SDK Info.pist 中的 SDKROOT 属性(本例中为/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Info.plist)。在 iPhoneSimulator SDK 中,此属性设置为:iphonesimulator。因此,您已经正确设置了 ARCHS 变量(尽管我怀疑 armv7 和 arm64 ARCHS 作为 Intel 平台二进制文件中的 SDK,但您可能需要删除它们,我的内存在这一点上有点困惑)。
但是每次 xcodebuild 调用只能指定一个 SDKROOT。你的第一行几乎是正确的,但我认为应该是:
xcodebuild clean 分析 ARCHS='arm64 armv7 i386 x86_64' SDKROOT='iphonesimulator'
关于ios - 为 iOS 上的不同架构指定 SDKROOT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55942027/