带有 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:] 奇怪的行为仅在设备上