ios - 为 iOS 上的不同架构指定 SDKROOT

标签 ios xcodebuild

我读过这篇文章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/

相关文章:

iOS 推送通知横幅未出现

xcode 构建失败,错误代码为 65,没有指示性消息

ios - xcodebuild 命令行忽略 GCC_PREPROCESSOR_DEFINITIONS

xcode - 如何将xcodebuild与-only-testing和-skip-testing标志一起使用?

iphone - 根据手机图像iphone显示图像

ios - 根据 Swift Xcode 中的变量将 UI 图像更改为特定图像

iphone - 从 ViewController 保存数据(核心数据)

ios - 向 Fabric 提交应用程序失败,错误代码为 0 或 502 或 503

ios - 通过 jenkins 在 mac mini 上运行 ios 时获取 java.lang.InterruptedException

iphone - 为 ios4.3、ios5 和 ipad 编写应用程序的最佳实践