Xamarin Apple手表在发布模式下在AVAudioPlayerNode中崩溃

时间:2017-05-12 21:39:38

标签: ios xamarin xamarin.ios watchkit apple-watch

播放音频时,在播放模式下崩溃。

*因未捕获的异常而终止应用程序'System.Exception',原因:'无法创建”AVFoundation.AVAudioPlayerNode“类型的本机实例:尚未加载本机类。 通过将ObjCRuntime.Class.ThrowOnInitFailure设置为false,可以忽略此条件。 * 首先抛出调用堆栈:“。

虽然使用Native 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();
}

1 个答案:

答案 0 :(得分:0)

这是Xamarin for Watch OS的问题,我已经将错误记录到Xamarin bugzilla并获得了解决方案。

回复Xamarin开发者: 作为此错误的解决方法,请尝试将以下内容添加到项目的WatchOS构建选项中的其他mtouch参数中:

-gcc_flags" -framework AVFoundation"

我将此添加到我的WatchExtension的WatchOS构建选项中,这就像魅力一样。

Xamarin的最新更新是他们已将AVFoundation包含在他们最新的模拟器中。

已修复:https://github.com/xamarin/xamarin-macios/commit/0dd385d81fac0474dbb725b730b4fbb018839a97