xcode 5.1:libCordova.a架构问题

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

我已经阅读了很多关于如何改变活动架构和只构build活动架构的不同解决scheme,而且它们都不起作用。 所以这里是我所尝试的和我得到的错误。 最初我得到了错误:

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

所以我尝试了以下。 我在我的项目中select了CordovaLib子项目,在项目和目标中,我select了Architectures下的Build Settings ,并确保arm64不包含在任何Debug或Release体系结构中。 此时Build Active Only设置为“是”。 这导致了以下错误:

 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主动架构只有 “不”,错误再次变成:

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

我不知道还有什么要尝试的。 该项目的体系结构设置只包括设置为iOS 7.1的关键“基础SDK”。 该项目的目标没有架构设置。 无论如何,我相当确定问题在于embedded式CordovaLib子项目。 我能做些什么来使这个东西成功地编译到我的设备上?

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

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

  1. select您的项目图标
  2. select生成设置。
  3. 对于“体系结构”,请select$ ARCHS_STANDARD – 标准体系结构(armv7,armv7s,arm64)
  4. 对于“有效的体系结构”,添加“arm64”
  5. select您的CordovaLib.xcodeproj图标
  6. 在项目的生成设置(不是目标)中,删除条件体系结构设置(hover以查看减号)
  7. 对于“体系结构”,请select$ ARCHS_STANDARD – 标准体系结构(armv7,armv7s,arm64)
  8. 对于“有效的体系结构”,添加“arm64”
  9. 转到6,但现在做“目标”

这里有一个链接到沙斯龙的这个问题的完整写: 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,其中包含了本博客文章中提到的所有修补程序。 更新你的cordovaCLI,如果你有一个现有的项目,做一个“cordova平台更新IOS”。

另一种方法是:

  1. 点击项目导航器顶部的项目(而不是Cordova.lib子项目)。
  2. 在编辑器窗格中,select项目(不是目标),select“生成设置”编辑器选项卡,然后单击“所有”和“级别”button。
  3. 根据需要展开体系结构组,并在其下find体系结构行。
  4. 架构行中的第一个(已解决)和第三个(iOS默认)列将显示为标准; 第二个(项目)栏将是空白的。
  5. 点击空白的第二列,popup一个包含一行“$(ARCHS_STANDARD)”的框。
  6. 双击该行使其可编辑,然后将其更改为“$(ARCHS_STANDARD_32_BIT)”。
  7. 在框外点击以确认您的更改。 现在第一个和第二个盒子里只有一个$。
  8. 现在你应该可以build立。

降级Xcode 5.1到5.0.2为我工作,我不能等待一个正式的cordova3.5版本的修复。

您可以在这里获得以前版本的副本: https : //developer.apple.com/downloads/index.action

他们刚刚发布了一个解决这个问题的新版本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下载所有补丁的新模板。

请按照以下video中的说明操作: https : //www.youtube.com/watch?v = IEkJAKcz8DE

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

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

您只需在每个声明和build筑设置上添加arm64体系结构,即在当前项目和cordova项目上。

在你的项目上:

  • 架构
  • 有效的体系结构

在cordova:

  • 架构
  • debugging
  • 发布
  • 任何ios SDK

和最重要的

在cordova有限的体系结构build立设置

这种configuration会产生很多警告,但只是在警告中提到的所有行上更改“%ld”“%d”

抓住XCODE的图标,并把它拖到箱子!

https://developer.apple.com/downloads/index.action?name=Xcode然后下载5.0.2并安装。;

安装之后,运行xcode,然后从terminal尝试模拟器。

为我工作,虽然恼人!