2017-05-12 18 views
0

在播放音頻時,發佈模式下發生崩潰。Xamarin Apple手錶在發佈模式下在AVAudioPlayerNode中墜毀

*終止應用程序由於未捕獲的異常‘System.Exception的’,理由是:「無法創建類型的原生性實例‘AVFoundation.AVAudioPlayerNode’:本地類尚未加載 有可能通過將ObjCRuntime.Class.ThrowOnInitFailure設置爲false來忽略此情況。' *第一次投擲堆棧:「。

雖然原生AppleWatch OS應用程序的工作正常。

Public void PlaySound 
{ 

     var audioPlayer = new AVAudioPlayerNode(); 
     var audioEngine = new AVAudioEngine(); 
     audioEngine.AttachNode(audioPlayer); 

     AVAudioFormat stereoFormat = new AVAudioFormat(44100, 2); 
     audioEngine.Connect(audioPlayer, audioEngine.MainMixerNode, stereoFormat); 

     NSError error; 
     if (!audioEngine.Running) 
     { 
      audioEngine.StartAndReturnError(out error); 
     } 

     var filePath = NSBundle.MainBundle.PathForResource("TestAudio","wav"); 
     var url  = NSUrl.FromString(sFilePath); 

     AVAudioFile audioFile = new AVAudioFile(url, out error); 

     audioPlayer.ScheduleFile(audioFile, null, null); 
     audioPlayer.Play(); 
} 

回答

0

這是Xamarin for Watch OS的一個問題,我已經向Xamarin bugzilla註冊了一個bug併爲它提供了一個解決方案。

回覆了Xamarin開發商: 至於這個bug解決方法,嘗試添加下列到額外的mTouch參數在項目的WatchOS構建選項:

-gcc_flags「-framework AVFoundation」

我加這對我的WatchExtension的WatchOS構建選項和這個工作就像魅力。

Xamarin的最新更新是,他們已經將AVFoundation包含在他們最新的模擬器中。

fixed:https://github.com/xamarin/xamarin-macios/commit/0dd385d81fac0474dbb725b730b4fbb018839a97