2013-07-30 14 views
16

私はPhonegap(3.0.3)とCordova CLIをインストールしました。Phonegap、Cordova - プラグインの問題

私もプラットフォームとしてのiOSを実行しています($ cordova platforms lsを用いて確認)

私はこのコンソールコマンド($ cordova emulate ios)を実行したときに、私が得る、しかしプラグイン($ cordova plugins ls

org.apache.cordova.core.dialogs 
org.apache.cordova.core.vibration 

がインストールされています次のエラー。

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="[email protected]" 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> 

どのような問題が発生する可能性がありますか、どのように修正することができますか?

+0

前に、私はまったく同じ問題を抱えている

この行を追加し、あなたがこの問題を解決する方法を見つけましたか? –

答えて

0

cordova build iosを実行しましたか?

その後、cordova emulate ios

ビルドフェーズでコンパイルソースにソースを追加しないと、このエラーが起こります。 でプラグインを追加してください:

TargetSettings - >フェーズをビルド - >ソースをコンパイル - >あなたの.mクラスを追加

14

は、XcodeプロジェクトでAudioToolboxフレームワークを追加します。

をあなたのターゲット>フェーズ>リンクを貼りますライブラリとバイナリは

'+' ボタンをクリックします

選択AudioToolbox.framework

+0

はうまくいきません...あまりあまりしません – Michael

+2

これはトリックでした。 –

+0

私はcordova-plugin-dialogsを使用しています。 – micmia

0

CDVNotification.hを見てください。#import行は、コンパイルソースビルドフェーズに追加する必要があるすべてを示します。

財団/ Foundation.h のUIKit/UIKit.h AudioToolbox/AudioServices.h

は、これらの3を追加し、それがコンパイルされます。

UPDATE - 追加変更は()

playBeepがエラーフリーであるためには、soundCompletionCallbackが宣言されなければならない()soundCompletionCallback()を呼び出し がsoundCompletionCallbackはplayBeepを呼び出しCDVNotification.m

playBeepに必要です。簡単な解決策は、playBeepの前にそれを宣言し、その後に定義することです。単に静的ボイドplayBeep(int型の数)

// declared but not defined to avoid undeclared error in playBeep 
static void soundCompletionCallback(SystemSoundID ssid, void* data); 
関連する問題