带有 xcode 5.1 的 cordova 3.4 不会使用最新的文件传输插件构建

Posted

技术标签:

【中文标题】带有 xcode 5.1 的 cordova 3.4 不会使用最新的文件传输插件构建【英文标题】:cordova 3.4 with xcode 5.1 won´t build with latest file-transfer plugin 【发布时间】:2014-04-03 11:33:34 【问题描述】:

我将我的 cordova 应用程序更新到 3.4.0-0.1.3。我有 xcode 5.1。在我的应用程序中,我使用了一个 rm/add 所有插件的早午餐。 cordova plugins list 报告以下内容:

[ 'com.phonegap.plugins.PushPlugin',
  'org.apache.cordova.camera',
  'org.apache.cordova.console',
  'org.apache.cordova.device',
  'org.apache.cordova.dialogs',
  'org.apache.cordova.file',
  'org.apache.cordova.file-transfer',
  'org.apache.cordova.geolocation',
  'org.apache.cordova.globalization' ]

在那之后,我尝试在 xcode 中构建并遇到很多错误 (47),但我做了功课,发现了很多有用的答案,例如 http://shazronatadobe.wordpress.com/2014/03/12/xcode-5-1-and-cordova-ios/,这帮助我将问题减少到 2 个。以下是错误消息来自命令行,因为我不允许(现在)发布屏幕截图。它们与 xcode 中的非常相似:

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_CDVFilesystemURL", referenced from:
      objc-class-ref in CDVFileTransfer.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

** BUILD FAILED **


The following build commands failed:
  Ld build/emulator/Appname.app/Appname normal i386
(1 failure)
Error: /Users/username/Documents/cordova/appname/platforms/ios/cordova/build: Command failed with exit code 65
    at ChildProcess.whenDone (/usr/local/lib/node_modules/cordova/src/superspawn.js:112:23)
    at ChildProcess.EventEmitter.emit (events.js:98:17)
    at maybeClose (child_process.js:735:16)
    at Process.ChildProcess._handle.onexit (child_process.js:802:5)

由于错误消息是指 CDVFileTransfer.o,我尝试再次卸载 File-Transfer Pluging 构建。现在我收到了这个可爱的** BUILD SUCCEEDED ** 消息。重新安装插件后,再次构建失败。

我做了很多研究,但没有发现任何相关内容,除了以下内容,但我不确定这是否会导致问题:https://issues.apache.org/jira/browse/CB-6212 有人可以确认吗?

有人用新的 xcode (5.1) 和文件传输插件 (0.4.2) 运行最新的 cordova (3.4.0-0.1.3) 吗?

非常感谢!

【问题讨论】:

我遇到了完全相同的问题。 Cordova 3.4.0-0.1.2 和 xcode 5.1 - 你找到解决方案了吗? 不是喷气机。如果我找到解决方案,我会在这里报告... 【参考方案1】:

我也遇到了同样的错误。我通过检查 xcode 编译的文件来解决它。 就我而言,CDVFile.m 不在列表中。

我请您验证插件 *.m 文件是否已正确添加到编译文件列表中。

【讨论】:

Build Phases > Compile Sources CDVFileTransfer.m 中存在但 CDVFile.m 丢失。我将它添加到 CDVFileTransfer.m 正上方的列表中,这将错误从 2 增加到 4,但是错误消息建议我也添加 CDVAssetLibraryFilesystem.m 和 CDVLocalFilesystem.m 也丢失了。现在我的构建再次工作!非常感谢!!! 谢谢!这个答案和上面的评论也对我有用。 确保所有来源都出现在Build Phases > Compile Sources 列表中是必不可少的。选择项目的目标后,您可以找到Build Phases 面板。 (升级到 Cordova 3.5.0 后,我遇到了这个问题。)【参考方案2】:

尝试仅卸载 File 插件,然后重新安装(在出现错误后)。 为了让我正确地重现这一点,还请提供插件的安装顺序,它可能会提供错误的线索。

【讨论】:

仅卸载文件插件似乎不起作用。我收到消息 No dangling plugins to remove. 并且插件仍然显示为 cordova plugin list。我已经尝试卸载它们(第一个文件传输),然后重新安装它们(第一个文件),但没有运气。 cordova 3.3.0 也有同样的问题。在删除和重新添加插件后查看差异,似乎 SystemConfiguration.framework 和 AudioToolbox.framework 被删除,但没有重新添加。手动添加它们解决了它【参考方案3】:

我遇到了同样的问题。这对我有用:

    卸载文件传输 卸载文件 重新安装文件传输

我尝试了其他所有订单,但这是唯一对我有用的方法。

【讨论】:

感谢 shekki25!我也试过这个卸载/重新安装顺序。但唯一的解决方案是添加缺少的构建源。也许这是科尔多瓦 3.4.0 和 3.4.1 中的一个错误修复了它。我记得读过一些关于它的东西,但我不确定...... 我猜你忘了安装文件插件作为第三步,因为文件传输依赖于它?所以: 1.卸载文件传输 2.卸​​载文件 3.重新安装文件 4.重新安装文件传输 ??

以上是关于带有 xcode 5.1 的 cordova 3.4 不会使用最新的文件传输插件构建的主要内容,如果未能解决你的问题,请参考以下文章

离子:console.log 未显示在带有cordova 4.1.1 的xcode 中

带有 Xcode 4.3.1 的 iOS 5.1:[UIColor colorWithPatternImage:] 奇怪的行为仅在设备上

带有情节提要的 presentViewController 显示黑色视图 iOS 7.1 xcode 5.1

Xcode 找不到任何匹配的配置文件

xCode 5.1 CopyPNG文件错误

Cordova 应用程序的代码签名失败(使用 XCode 5.1.1 和 Cordova 3.4.1-0.1.0)