【问题标题】:Xcode 4 Needs i386 for iPhone Sim?Xcode 4 iPhone Sim 需要 i386 吗?
【发布时间】:2011-03-30 18:24:16
【问题描述】:

我升级到 Xcode 4。

如果我在 Xcode 4 中创建一个新的 iPad 项目,一切正常。如果我在 Xcode 3 中创建一个项目,然后将它带到 Xcode 4,那也可以。

但是,我的一个项目无法编译。错误是:

No architectures to compile for (ARCHS=i386, VALID_ARCHS=armv7).

为了让它在模拟器中编译和运行,我最终使用了这些设置:

放入 i386 可以编译和运行项目 (thanks to this forum thread),但我的其他项目确实没有在有效架构中有 i386 并且仍然可以工作。

我怎样才能让我的项目像其他人一样?

注意:是的,我已经非常仔细地完成了这个项目(虽然是在 XCode 中,而不是在 XML 中)并且非编译版本确实看起来与它的编译朋友完全一样。

【问题讨论】:

标签: iphone xcode


【解决方案1】:

在开发者论坛中,我遇到了使用文本编辑器编辑 .pbxproj 文件的人,并以这种方式将条目添加到 VALID_ARCHS 中。当 XCode4 处理一些较旧的 XCode3 项目时,这似乎是一个问题(尽管我还没有看到)。

我检查了一个当前项目,但该行不存在,因此如果您发现此问题,请尝试将其从 project.pbxproj 文件中删除,然后重新启动 XCode。

【讨论】:

  • 在我遇到该问题的一个项目中,我发现在项目文件中删除 VALID_ARCHS 行比尝试编辑它更容易。这样做,Xcode 将恢复到默认选项(即 i386 在 Sim 上,armv6/7 在设备上)。
  • 这就是我最后所说的,我认为这可能是最好的选择。我编辑了问题的最后一部分以使其更清楚。
  • 太好了,我会试试的。顺便说一句,您的意思是“回答” :) 谢谢!
  • 这行得通。我不想到处乱搞并编辑你的答案,但我只是删除了 project.pbxproj 中的违规行 VALID_ARCHS = "armv7 i386"; (或任何你的 VALID_ARCHS )...... XCode 不会把它放回去,但不会也没有问题。
【解决方案2】:

我遇到了完全相同的问题,并编写了一个小 shell 脚本来以编程方式编辑我需要添加 i386 的行(我在每次 git pull 和 tag checkout 之后在我的测试工具中执行此操作)。

将以下代码放入 shell 脚本中,然后在需要将 i386 添加到所有 VALID_ARCHS= 条目时运行它:

sed -i -e 's/.*VALID_ARCHS = armv7;.*/VALID_ARCHS = "armv7 i386";/g' project.pbxproj

哦,鉴于此脚本的直接简单性,当您运行它时,您需要位于 project.pbxproj 文件所在的同一目录中。

而且,正如暗示的那样,它会进行全局行替换。它替换了 VALID_ARCHS = armv7; 的每个实例。使用 VALID_ARCHS = "armv7 i386";并且引号是必需的,否则 Xcode 会抛出错误,告诉您无法解析 project.pbxproj 文件。

【讨论】:

  • 听起来不错。已经好几年了,所以我不知道如何评估这个,但无论如何 +1。
猜你喜欢
  • 2014-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多