xcode 5.1:libCordova.a架构问题

时间:2014-03-11 19:26:02

标签: ios xcode cordova xcode5.1

昨天(2014年3月3日)当iOS 7.1发布时,我也升级到Xcode 5.1,发现我的PhoneGap / Cordova项目将不再编译到我的iPhone 5s。我还将Cordova升级到最新版本:v 3.4.0-0.1.3。

我已经在SO上阅读了许多不同的解决方案,这些解决方案与更改活动架构和仅构建活动架构有关,而且它们都不起作用。所以这就是我尝试过的以及我得到的错误。最初我得到了错误:

missing required architecture arm64 in file <long file path omitted> libCordova.a
Undefined symbols for architecture arm64

所以我尝试了以下内容。我在项目中选择了CordovaLib子项目,在项目和目标中,我选择了体系结构下的构建设置,并确保arm64是不包含在任何调试或发布体系结构中。目前,仅构建活动架构设置为“是”。这导致了以下错误:

file was built for archive which is not the architecture being linked (armv7): 
<long file path omitted> libCordova.a
Undefined symbols for architecture armv7

仅构建活动架构设置为“否”,错误将再次变为:

missing required architecture arm64 in file <long file path omitted> libCordova.a
Undefined symbols for architecture arm64

我不确定还有什么可以尝试的。该项目的体系结构设置仅包括设置为iOS 7.1的密钥“Base SDK”。项目的目标没有架构设置。无论如何,我很确定问题在于嵌入式CordovaLib子项目。我该怎么做才能使这个东西成功编译到我的设备上?

更新:Apache的Jira上的同样问题:https://issues.apache.org/jira/browse/CB-6223

8 个答案:

答案 0 :(得分:85)

@Shazron在Apache JIRA上发布了修复程序 - 他指出修复程序将作为Cordova 3.5的一部分发布:

  1. 选择您的项目图标
  2. 选择构建设置。
  3. 对于“架构”,选择$ ARCHS_STANDARD - 标准架构(armv7,armv7s,arm64)
  4. 对于“Valid Architectures”,添加“arm64”
  5. 选择您的CordovaLib.xcodeproj图标
  6. 在项目的构建设置(非目标)中,删除条件架构设置(悬停以查看减号)
  7. 对于“架构”,选择$ ARCHS_STANDARD - 标准架构(armv7,armv7s,arm64)
  8. 对于“Valid Architectures”,添加“arm64”
  9. 转到6,但现在为“目标”
  10. 以下是Shazron完整撰写此问题的链接:http://shazronatadobe.wordpress.com/2014/03/12/xcode-5-1-and-cordova-ios/

    现在已经发布了,该做的简短版本是:

    Cordova CLI 3.4.1-0.1.0已经发布,其中包括Cordova iOS 3.4.1,其中包含了本博文中提到的所有修复程序。更新您的Cordova CLI,如果您有现有项目,请执行“cordova platform update ios”。

答案 1 :(得分:11)

另一种有效的方法:

  1. 单击项目导航器顶部的项目(而不是Cordova.lib子项目)。
  2. 在编辑器窗格中,选择项目(而不是目标),选择“构建设置”编辑器选项卡,然后单击“全部”和“级别”按钮。
  3. 如有必要,展开“架构”组,并在其下找到“架构”行。
  4. 架构行中的第一个(已解决)和第三个(iOS默认)列将显示标准;第二个(项目)列将为空白。
  5. 点击空白的第二列,弹出一个包含一行“$(ARCHS_STANDARD)”的框。
  6. 双击该行以使其可编辑,然后将其更改为“$(ARCHS_STANDARD_32_BIT)”。
  7. 在框外单击以确认您的更改。现在第一个和第二个盒子里面只有一个$。
  8. 现在你应该能够建立。

答案 2 :(得分:10)

将Xcode 5.1降级为5.0.2对我有用,我等不及官方的Cordova 3.5版本了。

您可以在此处获取以前版本的副本:https://developer.apple.com/downloads/index.action

答案 3 :(得分:8)

他们刚刚发布了解决此问题的新版本3.4.1

因此,我更新单个文件以指向TAG 3.4.1:

/usr/local/lib/node_modules/cordova/platforms.js
第24行 从:

version: '3.4.0'

为:

version: '3.4.1'

然后删除项目中的iOS文件夹并运行:

cordova platform add ios

这将根据3.4.1下载包含所有补丁的新模板。

答案 4 :(得分:5)

按照此视频中的说明操作: https://www.youtube.com/watch?v=EIkJAKcz8DE

只需在项目有效架构中添加arm64,并删除Cordova项目的所有条件架构。

答案 5 :(得分:3)

我能够让我的应用程序在XCode 5.1中构建,首先在XCode中单独构建CordovaLib项目,然后构建我的项目。

答案 6 :(得分:2)

你只需要在每个语句和构建设置上添加arm64架构,我的意思是, 在您当前的项目和Cordova项目上。

在您的项目上:

  • 架构
  • 有效架构
科尔多瓦上的

  • 架构
  • 调试
  • 释放
  • 任何ios SDK

最重要的是

- cordova构建设置的有效架构

此配置会产生大量警告,但只是在警告声明的所有行中更改“%ld”“%d”

答案 7 :(得分:1)

抓住xcode图标并将其拖到垃圾箱!

转到此处https://developer.apple.com/downloads/index.action?name=Xcode并下载5.0.2并安装。

安装完成后,运行xcode,然后从终端尝试模拟器。

为我工作,虽然烦人!