【问题标题】:xcode 5.1: libCordova.a architecture problemsxcode 5.1:libCordova.a 架构问题
【发布时间】:2014-04-15 14:14:36
【问题描述】:

昨天(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 子项目,在项目和目标中,我都去了 Architectures 下的 Build Settings 并确保不包含 arm64在任何调试或发布架构中。此时 Build Active Architecture 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 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

【问题讨论】:

  • 我也有同样的问题。 iOS 7.1 和 Xcode 5.1 已经为开发人员提供了一段时间,因此令人失望的是,Cordova 团队在发布之前至少没有就此发出警告。
  • 是的。我创建了一个全新的“Hello World”Cordova 项目,并安装了最新的 Cordova,但它无法成功编译。
  • 能否获取并重新安装iOS 7.0 SDK?
  • 我使用these settings 编译它,但是当我去验证存档时,我收到错误:**此捆绑包无效。包含 armv7s 架构的应用程序必须包含 armv7 架构。这很奇怪,因为看起来我 两者都包含了。
  • 修复 Apache Cordova JIRA 问题中的步骤:issues.apache.org/jira/browse/CB-6223

标签: ios xcode cordova xcode5.1


【解决方案1】:

@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”。

【讨论】:

  • 优秀。对于第 6 步,我认为我应该删除所有这些是否正确:SCREENSHOT
  • 起初它似乎没问题:应用程序存档并验证。但是,当作为临时发行版导出时,它将无法在 iPhone 5S 上运行。
  • 是的,这个答案让应用程序在 5S 上编译和安装,但是当它开始运行时,它会引发 lldb 错误并崩溃(如果您正在运行连接到 Mac 的设备,则会暂停在运行 Xcode 时)。
  • 这里是@Shazron 帖子的链接。它涵盖了 3 个问题:shazronatadobe.wordpress.com/2014/03/12/…
  • 我确认它对我有用。不要忘记第 9 点,即删除目标“Cordova Lib”的任何条件架构设置。您应该同时拥有项目“CordovaLib”和目标“CordovaLib”。架构设置应该看起来: - 调试:标准架构(...) - 发布:标准架构(...)
【解决方案2】:

另一种可行的方法:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 这行得通——唯一需要注意的是,您不能在运行 iOS 7.1 的 iPhone 上直接在 XCode 中进行测试。这就是模拟器派上用场的地方。编译后的应用可以在 iOS 7.1 上运行(在 iPhone 5 和 5S 上均已确认),因此在 Cordova 3.5 发布之前降级似乎是最佳选择。
    • 这对我现在也最有效。下载 Xcode 5.02 并将其复制(首先将其命名为 XCode_502)到 Applications 使我能够在 Xcode 5.1 旁边运行它。
    • Ade 我已经降级到 5.0.2 并且一直在 iPhone 5 和 iPad 2 上测试我的应用程序,都使用 iOS 7.1,没有问题,我也将应用程序提交到 iTunes Connect 没有问题。
    【解决方案4】:

    他们刚刚发布了一个新版本 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 的新模板以及所有补丁。

    【讨论】:

    • @JPrichardson 谢谢,我现在要升级 :)
    • npm 更新cordova -g,然后更新cordova平台更新ios
    【解决方案5】:

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

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

    【讨论】:

    • 你让我省了很多麻烦。该视频解决了我几个小时以来一直在努力解决的问题。
    • 这对我有用。感谢您制作视频 - 它非常清楚。
    【解决方案6】:

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

    【讨论】:

    • 这对我也有用。完美,因为降级 Xcode(并且无法在 iOS7.1 设备上进行测试)对我来说不是一个选择。谢谢!
    【解决方案7】:

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

    关于你的项目:

    • 架构
    • 有效的架构

    在科尔多瓦:

    • 架构
    • 调试
    • 发布
    • 任何 ios SDK

    最重要的

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

    此配置会生成大量警告,但只是在警告所述的所有行中更改 "%ld""%d"

    【讨论】:

      【解决方案8】:

      抓住 xcode 图标并将其拖到 bin 中!

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

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

      为我工作,但很烦人!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-08
        • 2014-04-15
        • 2014-04-15
        • 1970-01-01
        相关资源
        最近更新 更多