我已经安装了Phonegap (3.0.3)和Cordova CLI。
我也将iOS作为平台运行(使用$ cordova platforms ls
进行了确认)
我已经安装了插件($ cordova plugins ls
)
org.apache.cordova.core.dialogs
org.apache.cordova.core.vibration
但是,当我运行这个控制台命令($ cordova emulate ios
)时,我得到以下错误。
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:
_playBeep in CDVNotification.o
-[CDVVibration vibrate:] in CDVVibration.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/MyApp.app/MyApp normal i386
(1 failure)
我遵循了API页面的指示(http://cordova.apache.org/docs/en/edge/cordova_notification_notification.md.html#Notification),下面是导致错误的MyApp > www > config.xml
文件中的config.xml文件。
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.myapp.myapp" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>MyApp</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="dev@callback.apache.org" href="http://cordova.io">
Apache Cordova Team
</author>
<plugin name="Notification" value="CDVNotification" />
<access origin="*" />
<preference name="fullscreen" value="true" />
<preference name="webviewbounce" value="true" />
</widget>
有什么建议可能是这个问题,以及我如何着手解决它?
发布于 2013-08-28 23:16:42
在您的Xcode项目中添加AudioToolbox框架:
您的目标>构建阶段>将二进制文件与库链接
单击'+‘按钮
选择AudioToolbox.framework
发布于 2013-08-26 20:55:11
你运行cordova build ios
了吗?
然后是cordova emulate ios
当您在构建阶段没有将源代码添加到编译源时,就会发生此错误。尝试使用以下命令添加插件:
TargetSettings ->生成阶段->编译源->添加.m类
发布于 2013-12-20 14:11:36
看看CDVNotification.h - #import行告诉您需要添加到编译源构建阶段的所有内容。
Foundation/Foundation.h UIKit/UIKit.h AudioToolbox/AudioServices.h
把这3个加起来,它就会编译了。
更新- CDVNotification.m中需要额外的更改
playBeep()调用soundCompletionCallback() soundCompletionCallback调用playBeep()
为了使playBeep没有错误,必须声明soundCompletionCallback。简单的解决方案是在playBeep之前声明它,然后在之后定义它。
将此行添加到static void playBeep(int count)之前
// declared but not defined to avoid undeclared error in playBeep
static void soundCompletionCallback(SystemSoundID ssid, void* data);
https://stackoverflow.com/questions/17942868
复制相似问题