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的一部分发布:
- select您的项目图标
- select生成设置。
- 对于“体系结构”,请select$ ARCHS_STANDARD – 标准体系结构(armv7,armv7s,arm64)
- 对于“有效的体系结构”,添加“arm64”
- select您的CordovaLib.xcodeproj图标
- 在项目的生成设置(不是目标)中,删除条件体系结构设置(hover以查看减号)
- 对于“体系结构”,请select$ ARCHS_STANDARD – 标准体系结构(armv7,armv7s,arm64)
- 对于“有效的体系结构”,添加“arm64”
- 转到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”。
另一种方法是:
- 点击项目导航器顶部的项目(而不是Cordova.lib子项目)。
- 在编辑器窗格中,select项目(不是目标),select“生成设置”编辑器选项卡,然后单击“所有”和“级别”button。
- 根据需要展开体系结构组,并在其下find体系结构行。
- 架构行中的第一个(已解决)和第三个(iOS默认)列将显示为标准; 第二个(项目)栏将是空白的。
- 点击空白的第二列,popup一个包含一行“$(ARCHS_STANDARD)”的框。
- 双击该行使其可编辑,然后将其更改为“$(ARCHS_STANDARD_32_BIT)”。
- 在框外点击以确认您的更改。 现在第一个和第二个盒子里只有一个$。
- 现在你应该可以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尝试模拟器。
为我工作,虽然恼人!