为iOS上的不同体系结构指定SDKROOT

问题描述 投票:0回答:1

我已经读过这个post,我已经设法在不使用脚本的情况下实现了胖版本。我的下一步是尝试使用终端来生成胖二进制文件。

在帖子中,作者声明将以下内容添加到项目文件中:

SDKROOT = iphoneos
SDKROOT[arch=i386] = $(CORRESPONDING_SIMULATOR_SDK_NAME)
SDKROOT[arch=x86_64] = $(CORRESPONDING_SIMULATOR_SDK_NAME)

鉴于我可以从项目文件中的构建设置生成一个胖二进制文件,假设我可以从终端执行此操作。我的问题在于如何在终端中指定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'
ios xcodebuild
1个回答
0
投票

你没有这样指定它。每个SDKROOT都需要映射到SDKs Info.pist中的SDKROOT属性(本例中为/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Info.plist)。在iPhoneSimulator SDK中,此属性设置为:iphonesimulator。所以你已经正确设置了ARCHS变量(尽管我怀疑armv7和arm64 ARCHS是英特尔平台二进制文件中的SDK,你可能需要删除它们,我的内存在这一点上有点混乱)。

但是每个xcodebuild调用只能指定一个SDKROOT。你的第一行几乎是正确的,但我认为应该是:

xcodebuild clean analyze ARCHS ='arm64 armv7 i386 x86_64'SDDROOT ='iphonesimulator'

© www.soinside.com 2019 - 2024. All rights reserved.