81

昨天(3/10/14)当 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 子项目,在项目和目标中,我都去了架构下的构建设置,并确保它不包含在任何调试或发布架构中。此时Build Active Architecture Only设置为“是”。这导致了以下错误: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

Build Active Architecture Only设置 为“No”,错误再次变为:

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

4

8 回答 8

86

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

  1. 选择您的项目图标
  2. 选择构建设置。
  3. 对于“架构”,选择 $ARCHS_STANDARD - 标准架构(armv7、armv7s、arm64)
  4. 对于“有效架构”,添加“arm64”
  5. 选择您的 CordovaLib.xcodeproj 图标
  6. 在项目的构建设置(不是目标)中,删除条件架构设置(悬停查看减号)
  7. 对于“架构”,选择 $ARCHS_STANDARD - 标准架构(armv7、armv7s、arm64)
  8. 对于“有效架构”,添加“arm64”
  9. 转到 6,但现在为“目标”执行此操作

这是 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”。

于 2014-03-11T21:13:49.647 回答
11

另一种有效的方法:

  1. 单击项目导航器顶部的项目(不是 Cordova.lib 子项目)。
  2. 在编辑器窗格中,选择项目(不是目标),选择 Build Settings 编辑器选项卡,然后单击 All 和 Levels 按钮。
  3. 如有必要,展开 Architectures 组并在其下找到 Architectures 行。
  4. 架构行中的第一列(已解决)和第三列(iOS 默认)将显示标准;第二个(项目)列将是空白的。
  5. 单击空白的第二列以显示一个框,该框将包含一行“$(ARCHS_STANDARD)”。
  6. 双击该行使其可编辑,然后将其更改为“$(ARCHS_STANDARD_32_BIT)”。
  7. 在框外单击以确认您的更改。现在第一个和第二个盒子里只有一个 $。
  8. 现在你应该可以构建了。
于 2014-03-14T03:26:04.787 回答
10

将 Xcode 5.1 降级到 5.0.2 对我有用,我迫不及待地等待带有修复程序的官方 Cordova 3.5 版本。

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

于 2014-03-12T04:46:26.113 回答
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 的新模板以及所有补丁。

于 2014-04-05T04:21:09.757 回答
5

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

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

于 2014-05-01T07:30:14.857 回答
3

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

于 2014-03-26T14:41:33.900 回答
2

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

在您的项目上:

  • 架构
  • 有效架构

在科尔多瓦:

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

最重要的

-cordova 构建设置中的有效架构

这种配置会产生很多警告,但只是在警告所说的所有行中将“%d”更改为“%ld” 。

于 2014-03-17T20:01:47.667 回答
1

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

去这里https://developer.apple.com/downloads/index.action?name=Xcode并下载 5.0.2 并安装。

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

为我工作,虽然烦人!

于 2014-03-27T22:41:37.697 回答