构建 Cordova 3.4 应用程序时架构 i386 的未定义符号

Posted

技术标签:

【中文标题】构建 Cordova 3.4 应用程序时架构 i386 的未定义符号【英文标题】:Undefined symbols for architecture i386 while building Cordova 3.4 application 【发布时间】:2014-02-25 11:10:04 【问题描述】:

在我的 Mac 上构建 Cordova 应用程序时,我收到构建错误 Undefined symbols for architecture i386。我正在使用 Cordova 3.4 版和 Xcode 5.0.2。

这是我项目的 Xcode 属性 Build Settings -> Architectures 的快照

Undefined symbols for architecture i386:
  "_AudioservicesAddSystemSoundCompletion", referenced from:
      _playBeep in CDVNotification.o
  "_AudioServicesCreateSystemSoundID", referenced from:
      _playBeep in CDVNotification.o
  "_AudioServicesDisposeSystemSoundID", referenced from:
      _soundCompletionCallback in CDVNotification.o
  "_AudioServicesPlaySystemSound", referenced from:
      -[CDVVibration vibrate:] in CDVVibration.o
      _playBeep in CDVNotification.o
  "_AudioServicesRemoveSystemSoundCompletion", referenced from:
      _soundCompletionCallback in CDVNotification.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/barcodeScanner.app/barcodeScanner normal i386
(1 failure)
Error: /Users/dipin/Projects/barcodeScanner/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)
DIPINs-MacBook-Air:barcodeScanner dipinkumarkrishnan$ cordova -v
3.4.0-0.1.0

请帮我解决这个错误。 android 构建适用于同一个项目。

干杯!

【问题讨论】:

【参考方案1】:

您可能缺少AudioToolbox.framework。将此添加到目标的构建阶段,然后重试。

【讨论】:

那行得通。添加AudioToolbox.framework 后,它工作正常。 Cordova 3.6,Xcode 6。这个解决方案有效!我需要将 AUdioToolbox 添加到 Build Phases 的“Link Binary With Libraries”部分 几乎相同的错误:体系结构 i386 的未定义符号:“_SCNetworkReachabilityScheduleWithRunLoop”,引用自:CDVReachability.o 中的-[CDVReachability startNotifier] “_SCNetworkReachabilitySetCallback”,引用自:CDVReachability.o 中的-[CDVReachability startNotifier] ld:未找到架构 i386 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)** BUILD FAILED ** 以下构建命令失败:Ld build/emulator/XXX.app /XXX normal i386 (1 failure) 请帮忙!!! 对于上面缺少 _SCNetworkReachabilityScheduleWithRunLoop 的@BraianMellor:我发现我必须添加 SystemConfiguration.framework,它似乎没有通过网络信息插件 (Cordova iOS 3.8.0) 添加。

以上是关于构建 Cordova 3.4 应用程序时架构 i386 的未定义符号的主要内容,如果未能解决你的问题,请参考以下文章

仅构建活动架构时 Cordova 链接器错误“没有为归档构建文件,该文件不是被链接的架构 (i386)”

Cordova 在 IOS 上构建时忽略了指定的架构

通过 cordova / phonegap 构建过程为 ios 应用程序设置架构

requestFileSystem 永远不会在 iOS 上返回 Cordova 3.4

cordova 3.4.1 iOS 命令行构建忽略有效架构?

Facebook Connect Plugin Cordova 3.4 如何获取好友列表