onsip / onsip-cordova

Other
48 stars 29 forks source link

Build Issue #16

Closed russellf9 closed 9 years ago

russellf9 commented 9 years ago

I installed the plugin as instructed:

cordova plugin add https://github.com/onsip/onsip-cordova.git
cp plugins/com.onsip.cordova/build platforms/ios/cordova/

To an existing project. ( Which was originally using just the PhoneRTC Plugin which I had previously removed by: cordova plugin remove com.dooble.phonertc ).

I set the Xcode settings as the instructions in: alongubkin/phonertc/installation.

I'm not 100% sure if that step is required.

The build failed after a few warnings with:

Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_RTCICECandidate", referenced from:
      objc-class-ref in PhoneRTCDelegate.o
  "_OBJC_CLASS_$_RTCSessionDescription", referenced from:
      objc-class-ref in PhoneRTCDelegate.o
  "_OBJC_CLASS_$_RTCPeerConnectionFactory", referenced from:
      objc-class-ref in PhoneRTCDelegate.o
  "_OBJC_CLASS_$_RTCVideoCapturer", referenced from:
      objc-class-ref in PhoneRTCDelegate.o
  "_OBJC_CLASS_$_RTCPair", referenced from:
      objc-class-ref in PhoneRTCDelegate.o
  "_OBJC_CLASS_$_RTCMediaConstraints", referenced from:
      objc-class-ref in PhoneRTCDelegate.o
  "_OBJC_CLASS_$_RTCEAGLVideoView", referenced from:
      objc-class-ref in PhoneRTCPlugin.o
  "_OBJC_CLASS_$_RTCICEServer", referenced from:
      objc-class-ref in PhoneRTCPlugin.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

** BUILD FAILED **

Which suggests there are some missing files.

I'm very rusty with x-code so any help would be appreciated.

Thanks.

russellf9 commented 9 years ago

Take 2

I reinstalled the PhoneRTC Plugin,

cordova plugin add https://github.com/alongubkin/phonertc.git

A bug in my browser app was fixed, so I'm guessing this plug-in is required.

But when build for iOS ( in Xcode ) I had the following failure:

Ld /Users/russellwenban/Library/Developer/Xcode/DerivedData/f9-Ionic-Webrtc-clahytlqpjfccscximpncawjdbez/Build/Products/Debug-iphoneos/f9-Ionic-Webrtc.app/f9-Ionic-Webrtc normal armv7
    cd /Users/russellwenban/localhosts/www.factornine.co.uk/development/ionic-webrtc/platforms/ios
    export IPHONEOS_DEPLOYMENT_TARGET=7.1
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk -L/Users/russellwenban/Library/Developer/Xcode/DerivedData/f9-Ionic-Webrtc-clahytlqpjfccscximpncawjdbez/Build/Products/Debug-iphoneos -L/Users/russellwenban/localhosts/www.factornine.co.uk/development/ionic-webrtc/platforms/ios/f9-Ionic-Webrtc/Plugins/com.onsip.cordova -L/Users/russellwenban/localhosts/www.factornine.co.uk/development/ionic-webrtc/platforms/ios/f9-Ionic-Webrtc/Plugins/com.dooble.phonertc -F/Users/russellwenban/Library/Developer/Xcode/DerivedData/f9-Ionic-Webrtc-clahytlqpjfccscximpncawjdbez/Build/Products/Debug-iphoneos -filelist /Users/russellwenban/Library/Developer/Xcode/DerivedData/f9-Ionic-Webrtc-clahytlqpjfccscximpncawjdbez/Build/Intermediates/f9-Ionic-Webrtc.build/Debug-iphoneos/f9-Ionic-Webrtc.build/Objects-normal/armv7/f9-Ionic-Webrtc.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -dead_strip -weak_framework CoreFoundation -weak_framework UIKit -weak_framework AVFoundation -weak_framework CoreMedia -weak-lSystem -ObjC -fobjc-arc -fobjc-link-runtime -miphoneos-version-min=7.1 -framework AssetsLibrary /Users/russellwenban/Library/Developer/Xcode/DerivedData/f9-Ionic-Webrtc-clahytlqpjfccscximpncawjdbez/Build/Products/Debug-iphoneos/libCordova.a -framework CoreGraphics -framework MobileCoreServices -lstdc++ -lsqlite3.0 -framework OpenGLES -framework CoreVideo -framework CoreMedia -framework CoreAudio -framework AVFoundation -framework QuartzCore -framework CoreLocation -framework AudioToolbox -framework GLKit -ljingle -ljingle_sound -lwebrtc_base -weak_framework ImageIO -ljingle_p2p -l_core_neon_offsets -laudio_coding_module -laudio_conference_mixer -laudio_device -laudio_processing_neon -laudio_processing -lbitrate_controller -lCNG -lcommon_audio_neon -lcommon_audio -lcommon_video -lcrnspr -lcrnss -lcrnssckbi -lcrssl -lexpat -lfield_trial_default -lG711 -lG722 -licudata -licui18n -licuuc -liLBC -lisac_neon -liSAC -liSACFix -ljingle_media -ljingle_peerconnection_objc -ljingle_peerconnection -ljsoncpp -lmedia_file -lneteq -lnss_static -lmetrics_default -lrtc_p2p -lwebrtc_vp9 -lrtc_xmpp -lopus -lpaced_sender -lPCM16B -lrbe_components -lremote_bitrate_estimator -lrtc_base_approved -lrtc_base -lrtc_sound -lrtc_xmllite -lrtp_rtcp -lsqlite_regexp -lsrtp -lsystem_wrappers -lusrsctplib -lvideo_capture_module_internal_impl -lvideo_capture_module -lvideo_coding_utility -lvideo_engine_core -lvideo_processing -lvideo_render_module_internal_impl -lvideo_render_module -lvoice_engine -lvpx_asm_offsets_vp8 -lvpx_asm_offsets_vpx_scale -lvpx -lwebrtc_common -lwebrtc_i420 -lwebrtc_opus -lwebrtc_utility -lwebrtc_video_coding -lwebrtc_vp8 -lwebrtc -lyuv_neon -lyuv -lc++ -Xlinker -dependency_info -Xlinker /Users/russellwenban/Library/Developer/Xcode/DerivedData/f9-Ionic-Webrtc-clahytlqpjfccscximpncawjdbez/Build/Intermediates/f9-Ionic-Webrtc.build/Debug-iphoneos/f9-Ionic-Webrtc.build/Objects-normal/armv7/f9-Ionic-Webrtc_dependency_info.dat -o /Users/russellwenban/Library/Developer/Xcode/DerivedData/f9-Ionic-Webrtc-clahytlqpjfccscximpncawjdbez/Build/Products/Debug-iphoneos/f9-Ionic-Webrtc.app/f9-Ionic-Webrtc

ld: warning: directory not found for option '-L/Users/russellwenban/localhosts/www.factornine.co.uk/development/ionic-webrtc/platforms/ios/f9-Ionic-Webrtc/Plugins/com.dooble.phonertc'
ld: library not found for -lmetrics_default
clang: error: linker command failed with exit code 1 (use -v to see invocation)
egreenmachine commented 9 years ago

This plugin is forked from phonertc and does not actually require that you include it. You should be able to just follow the instructions in our readme to get yourself setup and started.

russellf9 commented 9 years ago

Hi Eric thanks for the quick response.

I'm just in the process of removing the PhoneRTC plugin.

I assume the xcodeproj settings have to be set the same as defined in the Installation from the original PhoneRTC plugin?

Took a bit time to re-install but when I ran 'cordova run` the build failed with errors:

for example:

Undefined symbols for architecture armv7:
  "std::_List_node_base::reverse()", referenced from:
      std::list<webrtc::Packet*, std::allocator<webrtc::Packet*> >::reverse() in libneteq.a(neteq.payload_splitter.o)
  "std::ostream::operator<<(short)", referenced from:
      webrtc::NetEqImpl::DecodeLoop(std::list<webrtc::Packet*, std::allocator<webrtc::Packet*> >*, webrtc::Operations*, webrtc::AudioDecoder*, int*, webrtc::AudioDecoder::SpeechType*) in libneteq.a(neteq.neteq_impl.o)
  "std::_Rb_tree_decrement(std::_Rb_tree_node_base const*)", referenced from:
      std::_Rb_tree_const_iterator<unsigned short>::operator--() in libwebrtc_video_coding.a(webrtc_video_coding.jitter_buffer.o)
      std::_Rb_tree_const_iterator<std::pair<unsigned int const, webrtc::VCMFrameBuffer*> >::operator--() in libwebrtc_video_coding.a(webrtc_video_coding.jitter_buffer.o)
  "std::string::append(unsigned long, char)", referenced from:
      rtc::HttpParseAttributes(char const*, unsigned long, std::vector<std::pair<std::string, std::string>, std::allocator<std::pair<std::string, std::string> > >&) in libwebrtc_base.a(webrtc_base.httpcommon.o)
  "std::_List_node_base::transfer(std::_List_node_base*, std::_List_node_base*)", referenced from:
      std::list<webrtc::RtpRtcp*, std::allocator<webrtc::RtpRtcp*> >::_M_transfer(std::_List_iterator<webrtc::RtpRtcp*>, std::_List_iterator<webrtc::RtpRtcp*>, std::_List_iterator<webrtc::RtpRtcp*>) in libvideo_engine_core.a(video_engine_core.vie_receiver.o)
      std::list<webrtc::MixerParticipant*, std::allocator<webrtc::MixerParticipant*> >::_M_transfer(std::_List_iterator<webrtc::MixerParticipant*>, std::_List_iterator<webrtc::MixerParticipant*>, std::_List_iterator<webrtc::MixerParticipant*>) in libaudio_conference_mixer.a(audio_conference_mixer.audio_conference_mixer_impl.o)
      std::list<webrtc::VCMPacket, std::allocator<webrtc::VCMPacket> >::_M_transfer(std::_List_iterator<webrtc::VCMPacket>, std::_List_iterator<webrtc::VCMPacket>, std::_List_iterator<webrtc::VCMPacket>) in libwebrtc_video_coding.a(webrtc_video_coding.frame_buffer.o)
      std::list<webrtc::FecPacket*, std::allocator<webrtc::FecPacket*> >::_M_transfer(std::_List_iterator<webrtc::FecPacket*>, std::_List_iterator<webrtc::FecPacket*>, std::_List_iterator<webrtc::FecPacket*>) in librtp_rtcp.a(rtp_rtcp.forward_error_correction.o)
      std::list<webrtc::ForwardErrorCorrection::RecoveredPacket*, std::allocator<webrtc::ForwardErrorCorrection::RecoveredPacket*> >::_M_transfer(std::_List_iterator<webrtc::ForwardErrorCorrection::RecoveredPacket*>, std::_List_iterator<webrtc::ForwardErrorCorrection::RecoveredPacket*>, std::_List_iterator<webrtc::ForwardErrorCorrection::RecoveredPacket*>) in librtp_rtcp.a(rtp_rtcp.forward_error_correction.o)
      std::list<webrtc::DtmfEvent, std::allocator<webrtc::DtmfEvent> >::_M_transfer(std::_List_iterator<webrtc::DtmfEvent>, std::_List_iterator<webrtc::DtmfEvent>, std::_List_iterator<webrtc::DtmfEvent>) in libneteq.a(neteq.dtmf_buffer.o)
      std::list<webrtc::Packet*, std::allocator<webrtc::Packet*> >::_M_transfer(std::_List_iterator<webrtc::Packet*>, std::_List_iterator<webrtc::Packet*>, std::_List_iterator<webrtc::Packet*>) in libneteq.a(neteq.payload_splitter.o)
      ...
  "std::istream::get(char&)", referenced from:
      cricket::YuvFrameGenerator::DrawBarcode(unsigned int) in libjingle_media.a(libjingle_media.yuvframegenerator.o)
      cricket::ComputeBarcodeDigits(unsigned int, std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >*) in libjingle_media.a(libjingle_media.yuvframegenerator.o)
  "std::string::operator+=(char)", referenced from:
      cricket::ComputeStunCredentialHash(std::string const&, std::string const&, std::string const&, std::string*) in libjingle_p2p.a(libjingle_p2p.stun.o)
  "std::string::insert(unsigned long, std::string const&)", referenced from:
      cricket::StunMessage::Read(rtc::ByteBuffer*) in libjingle_p2p.a(libjingle_p2p.stun.o)
  "std::string::append(std::string const&)", referenced from:
      webrtc::SdpSerialize(webrtc::JsepSessionDescription const&) in libjingle_peerconnection.a(libjingle_peerconnection.webrtcsdp.o)
      webrtc::AddLine(std::string const&, std::string*) in libjingle_peerconnection.a(libjingle_peerconnection.webrtcsdp.o)
      webrtc::BuildMediaDescription(cricket::ContentInfo const*, cricket::TransportInfo const*, cricket::MediaType, std::vector<cricket::Candidate, std::allocator<cricket::Candidate> > const&, std::string*) in libjingle_peerconnection.a(libjingle_peerconnection.webrtcsdp.o)
      webrtc::ParseRtcpFbAttribute(std::string const&, cricket::MediaType, cricket::MediaContentDescription*, webrtc::SdpParseError*) in libjingle_peerconnection.a(libjingle_peerconnection.webrtcsdp.o)
      webrtc::UpdateMediaDefaultDestination(std::vector<cricket::Candidate, std::allocator<cricket::Candidate> > const&, std::string, std::string*) in libjingle_peerconnection.a(libjingle_peerconnection.webrtcsdp.o)
      rtc::SSLFingerprint::ToString() in libwebrtc_base.a(webrtc_base.sslfingerprint.o)
      rtc::Pathname::pathname() const in libwebrtc_base.a(webrtc_base.pathutils.o)
      ...

(Similar to the examples in my first post ) :-(

russellf9 commented 9 years ago

I think I have resolved the error.

I removed the plugins using:

cordova plugin remove org.apache.cordova.statusbar com.dooble.phonertc

But when I reset the iOS build by going this:

platform rm ios
platform add ios

The plugins where introduced because they were listed in the package.json

"cordovaPlugins": [
    "org.apache.cordova.statusbar",
    "https://github.com/alongubkin/phonertc.git",
    "org.apache.cordova.console",
    "org.apache.cordova.camera"
  ]

I removed these items from the package.json, then repeated the cordova plugin remove .... and the plugins weren't re-introduced on platform add ios!

russellf9 commented 9 years ago

And ran:

cordova plugin add https://github.com/onsip/onsip-cordova.git
cp plugins/com.onsip.cordova/build platforms/ios/cordova/

I couldn't run

cordova run

but was able to build to an iOS device via Xcode.

russellf9 commented 9 years ago

Hi just a quick question Eric.

I removed the phonertc plugin. And now when I call createOffer() the phonertc Session cannot be created.

( I'm running in the cordova browser platform )

createOffer(): error creating phonertc.Session instance: TypeError: undefined is not a function {stack: (...), message: "undefined is not a function"}

cordova.plugins.phonertc.Session is undefined.

Is there something I'm missing?

This is really a Ionic build issue so I'll close the issue