我有一个问题就是杀了我。这就是:我在xCode中的app和app项目在我尝试在xCode UI中完成所有工作时非常完美。我指的是构建,运行,测试或在我拥有的所有不同目标中的任何内容(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
是我得到的所以这很好。
我也尝试过更改头文件以及我发现的所有内容,但没有任何修复我的问题...
有什么建议...
如果您使用的是自定义构建脚本,则可以将i386传递给xcodebuild
例如:
xcodebuild -project MY_PROJECT -target TEST_TARGET -sdk iphonesimulator -configuration "Debug" -arch i386
(在上面的代码示例中一直向右滚动。相关的标志是-arch i386
)
应该强迫它针对i386进行构建。但是,您需要确保i386处于目标的VALID_ARCHS设置中。
如果有人再次遇到同样烦人的问题,我将在这里分享我的脚本:记得在具有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”。
我看到的人仍然对此感到疑惑。很久以前我发布了这个问题。我停止使用xcodebuild,我现在正在使用xctool,它的效果要好得多。该工具由Facebook开发。
我认为问题在于你正在为模拟器构建指定arm作为架构,尝试将其更改为i386
在我的构建机器上升级到Xcode 4.5后,我遇到了类似的问题。在我的情况下,我有一个第三方库,无法为armv7s(尚)构建,因此,我将Architectures
构建设置设置为armv7
。适用于Xcode内部的单元测试,模拟器构建等。但是,当我执行命令行构建时,它失败并显示相同的消息。
我将我的Architectures
改为armv7 i386
,现在它似乎在模拟器的命令行上构建得很好。
尽管GUI表明Standard (armv7,armv7s)
的架构只包括那两个,但我很确定当你为模拟器构建时,有一个i386隐藏在那里。
最后,Jenkins现在可以正常使用该设置。
我尝试下面的命令:xcodebuild -arch i386 -sdk iphonesimulator7.1但是失败了与clang类似的错误:错误:无效的架构'arm'用于部署目标'-mios-simulator-version-min = 6.0'
以下是我的解决方法:
xcodebuild -arch i386 VALID_ARCHS =“i386 armv7 armv7s”ONLY_ACTIVE_ARCH = NO -sdk iphonesimulator7.1
你需要让你正确设置VALID_ARCHS和ONLY_ACTIVE_ARCH它会起作用。您也可以直接在Xcode上进行这些设置。