6

我有一个问题正在杀死我。就是这样:当我尝试在 xCode UI 中做所有事情时,我在 xCode 中有一个应用程序项目非常完美。我的意思是在我拥有的所有不同目标(3)、2 个应用程序和一个用于测试的目标中构建、运行、测试或其他任何内容。

当我尝试在 Jenkins 中将持续集成安装到我的系统时,问题就出现了。我需要在 shell 中为它执行一些命令。像这样的命令:

xcodebuild -project MYPROJECT -sdk iphonesimulator -scheme TESTS_SCHEME TEST_AFTER_BUILD=YES

我也尝试过另一个,最后它也是一样的:

xcodebuild -project MY_PROJECT -target TEST_TARGET -sdk iphonesimulator  -configuration "Debug"

然后是当问题出现时,终端显示以下内容:

....PrecompiledHeaders/MYLIBRARY-Prefix-hhjuztynfruquodlgqxroyfibfkh/MYLIBRARY-Prefix.pch.d
clang: error: invalid architecture 'arm' for deployment target '-mios-simulator-version-min=4.3'
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang failed with exit code 1


** BUILD FAILED **


The following build commands failed:
    ProcessPCH /Users/nicoyuste/Library/Developer/Xcode/DerivedData/MY_APP-bxpgsdbefuawmiexyikbtvsatlsf/Build/Intermediates/PrecompiledHeaders/MYLIBRARY-Prefix-hhjuztynfruquodlgqxroyfibfkh/MYLIBRARY-Prefix.pch.pth MYLIBRARY-Prefix.pch normal armv7 objective-c com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

我一直在网上寻找(几乎在这里),但我发现的所有有同样问题的东西都对我不起作用。xCode 版本是 4.5,如果你这样做xcodebuild -version,我得到的就是这样,那很好。

我也尝试过更改头文件以及我发现的所有内容,但没有解决我的问题......

有什么建议么...

4

6 回答 6

3

如果您使用的是自定义构建脚本,则可以将 -arch i386 传递给 xcodebuild

例如:

xcodebuild -project MY_PROJECT -target TEST_TARGET -sdk iphonesimulator -configuration "Debug" -arch i386

(在上面的代码示例中一直滚动到右侧。相关标志是-arch i386

应该强制它针对 i386 构建。但是,您需要确保 i386 在目标的 VALID_ARCHS 设置中。

于 2013-01-23T22:02:25.217 回答
3

万一有人再次遇到同样烦人的问题,我将在这里分享我的脚本:记住在包含 xcodeproj 文件的目录下运行此命令。

xcodebuild \
-project "full-path-to-your-xcodeproj-file" \
-target YOUR_TARGET \
-sdk iphonesimulator6.1 \
-arch i386 \
-configuration Debug \
VALID_ARCHS="armv6 armv7 i386" \
ONLY_ACTIVE_ARCH=NO \
TARGETED_DEVICE_FAMILY="1" \
clean install

我修改了 TARGETED_DEVICE_FAMILY,因为我只为 iPhone 构建。如果您想为 iPhone 和 iPad 构建,请删除此行或替换为 TARGETED_DEVICE_FAMILY="1, 2"。

于 2013-08-20T00:24:29.893 回答
1

我看到人们仍然对此感到疑惑。我很久以前就发布了这个问题。我停止使用 xcodebuild,现在正在使用xctool,它工作得更好。该工具由 Facebook 开发。

于 2014-09-03T21:08:41.427 回答
0

在我的构建机器上升级到 Xcode 4.5 后,我遇到了类似的问题。就我而言,我有一个无法为 armv7s 构建的第三方库(还),因此,我将Architectures构建设置设置为armv7. 对于 Xcode 内部的单元测试、模拟器构建等工作正常。但是,当我进行命令行构建时,它失败并显示相同的消息。

我将我的更改Architecturesarmv7 i386,现在它似乎在模拟器的命令行中构建得很好。

尽管 GUI 表明 Architectures ofStandard (armv7,armv7s)仅包含这两个,但我很确定当您为模拟器构建时,那里隐藏着一个 i386。

最后,该设置现在适用于 Jenkins。

于 2012-11-03T17:39:04.233 回答
0

我认为问题在于您正在为模拟器构建指定 arm 作为架构,尝试将其更改为 i386

于 2012-10-24T14:51:12.803 回答
0

我尝试了以下命令:xcodebuild -arch i386 -sdk iphonesimulator7.1 但失败并出现与clang类似的错误:错误:部署目标'-mios-simulator-version-min = 6.0'的无效架构'arm'

这是我解决的方法:

xcodebuild -arch i386 VALID_ARCHS="i386 armv7 armv7s" ONLY_ACTIVE_ARCH=NO -sdk iphonesimulator7.1

你需要让你正确设置 VALID_ARCHS 和 ONLY_ACTIVE_ARCH 并且它会起作用。您也可以直接在 Xcode 上进行这些设置。

于 2014-08-27T07:17:54.803 回答