2013-07-30 13 views
16

Zainstalowałem Phonegap (3.0.3) i Cordova CLI.Phonegap, Cordova - Problem z wtyczkami

Ja również z systemem iOS jako platforma (potwierdzone za pomocą $ cordova platforms ls)

mam zainstalowane wtyczki ($ cordova plugins ls)

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

Jednak gdy uruchomię tę komendę konsoli ($ cordova emulate ios), otrzymuję następujący błąd.

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) 

śledzę ze wskazówkami ze strony API tutaj (http://cordova.apache.org/docs/en/edge/cordova_notification_notification.md.html#Notification) i poniżej jest mój plik config.xml w pliku MyApp > www > config.xml co powoduje błąd.

<?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> 

Jakieś sugestie co to może być problem i jak mogę go naprawić?

+0

Mam dokładnie taki sam problem, czy znaleźć sposób, aby rozwiązać ten problem? –

Odpowiedz

0

Czy uruchomiłeś cordova build ios?

następnie cordova emulate ios

Ten błąd zdarzyć, gdy nie dodawać źródła do źródła skompilować w fazie budowy. próby dodania wtyczek z:

TargetSettings -> Budowanie Fazy -> Skompiluj Źródła -> dodaj swoją klasę .m

14

Dodaj ramy AudioToolbox w projekcie Xcode:

swój cel> Budowa Fazy> Link Binary z bibliotekami

Kliknij przycisk '+'

Wybierz AudioToolbox.framework

+0

nie działa ... nie tak bardzo – Michael

+2

To załatwiło sprawę. –

+0

Używam dialogów cordova-plugin, to działa dla mnie :) – micmia

0

Zobacz CDVNotification.h - linie #import mówią wszystko, co musisz dodać do swojej fazy kompilacji źródeł.

Foundation/Foundation.h UIKit/UIKit.h AudioToolbox/AudioServices.h

Dodaj te 3 i będzie skompilować.

UPDATE - to dodatkowa zmiana jest konieczna w CDVNotification.m

playBeep() wywołuje soundCompletionCallback() soundCompletionCallback wzywa playBeep()

Aby playBeep aby być wolne od błędów, soundCompletionCallback muszą być zadeklarowane. Prostym rozwiązaniem jest zadeklarowanie go przed playBeep, a następnie zdefiniowanie go po.

Dodaj tę linię tuż przed static void playBeep (int count)

// declared but not defined to avoid undeclared error in playBeep 
static void soundCompletionCallback(SystemSoundID ssid, void* data); 
Powiązane problemy