Xamarin.Forms iOS项目启动时崩溃,启用链接并启用Auth0.OidcClient和SfListViewR



我一直在努力追踪我的AppDelegate.cs中的一个崩溃,该崩溃似乎是由Auth0.OidcClient.ActivityMediatorSyncfusion.ListView.XForms.iOS.SfListViewRenderer引起的。只有在启用链接的Release模式下启动时才会发生崩溃(只有Link Framework SDK或全部链接都会发生崩溃(。我还发现,如果我删除以下行之一:

SfListViewRenderer.Init(); //Problem line 1.

或:

ActivityMediator.Instance.Send(url.AbsoluteString); //Problem line 2.

然后撞击声消失了。只有启用了这两条线并启用了链接,才会发生崩溃。这是我的AppDelegate.cs:

using Auth0.OidcClient;
using Foundation;
using PanCardView.iOS;
using Syncfusion.ListView.XForms.iOS;
using Syncfusion.SfAutoComplete.XForms.iOS;
using Syncfusion.SfBusyIndicator.XForms.iOS;
using Syncfusion.SfCalendar.XForms.iOS;
using Syncfusion.SfCarousel.XForms.iOS;
using Syncfusion.SfKanban.XForms.iOS;
using Syncfusion.SfNumericTextBox.XForms.iOS;
using Syncfusion.SfPullToRefresh.XForms.iOS;
using Syncfusion.SfRangeSlider.XForms.iOS;
using Syncfusion.SfRotator.XForms.iOS;
using Rg.Plugins.Popup;
using Syncfusion.XForms.iOS.Buttons;
using Syncfusion.XForms.iOS.Cards;
using Syncfusion.XForms.iOS.EffectsView;
using Syncfusion.XForms.iOS.PopupLayout;
using Syncfusion.XForms.iOS.TextInputLayout;
using Syncfusion.XForms.iOS.ComboBox;
using Syncfusion.XForms.iOS.ProgressBar;
using Syncfusion.XForms.Pickers.iOS;
using Xamarin.Forms.Platform.iOS;
using Syncfusion.XForms.iOS.Border;
using Syncfusion.SfGauge.XForms.iOS;
using Syncfusion.SfChart.XForms.iOS.Renderers;
using Xamarin.Forms;
using Sharpnado.Shades.iOS;
using UIKit;
using Xamarin;

namespace VulcanApp.iOS
{
// The UIApplicationDelegate for the application. This class is responsible for launching the 
// User Interface of the application, as well as listening (and optionally responding) to 
// application events from iOS.
[Register("AppDelegate")]
public partial class AppDelegate : FormsApplicationDelegate
{
//
// This method is invoked when the application has loaded and is ready to run. In this 
// method you should instantiate the window, load the UI into it and then make the window
// visible.
//
// You have 17 seconds to return from this method, or iOS will terminate your application.
//
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
Forms.SetFlags("UseLegacyRenderers");
Forms.Init();

IQKeyboardManager.SharedManager.Enable = true;

iOSShadowsRenderer.Initialize();

new SfRangeSliderRenderer();
new SfRotatorRenderer();
new SfNumericTextBoxRenderer();
new SfBusyIndicatorRenderer();
new SfAutoCompleteRenderer();

CardsViewRenderer.Preserve();

Popup.Init();

SfListViewRenderer.Init(); //Problem line 1.
SfEffectsViewRenderer.Init();
SfCardLayoutRenderer.Init();
SfCarouselRenderer.Init();
SfKanbanRenderer.Init();
SfGaugeRenderer.Init();
SfComboBoxRenderer.Init();
SfPopupLayoutRenderer.Init();
SfChartRenderer.Init();
SfLinearProgressBarRenderer.Init();
SfTextInputLayoutRenderer.Init();
SfBorderRenderer.Init();
SfButtonRenderer.Init();
SfSegmentedControlRenderer.Init();
SfChipRenderer.Init();
SfChipGroupRenderer.Init();
SfCheckBoxRenderer.Init();
SfTimePickerRenderer.Init();
SfSwitchRenderer.Init();
SfPullToRefreshRenderer.Init();
SfCalendarRenderer.Init();

UIApplication.SharedApplication.StatusBarHidden = true;

LoadApplication(new App());

return base.FinishedLaunching(app, options);
}

//This method is required for using the OidcClient on iOS.
public override bool OpenUrl(UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
{
ActivityMediator.Instance.Send(url.AbsoluteString); //Problem line 2.

return true;
}
}
}

我已尝试删除和恢复程序包。清空bin/和obj/文件夹,并重新排列各种Syncfusion元素的初始化顺序。我在iOS 14.8 iPad和iOS 15.1 iPad上崩溃了。

有人知道这里会发生什么吗?有人对故障排除有什么建议吗?

我找到了一个解决方案。据我所知,动态注册器被删除,导致了以下异常:ObjCRuntime.RuntimeException: Can't register the class Plugin.BLE.BleCentralManagerDelegate when the dynamic registrar has been linked away。我不确定为什么会发生这种情况,但在Additional mtouch参数中添加以下标志修复了崩溃:--optimize=-remove-dynamic-registrar

相关内容

  • 没有找到相关文章

最新更新