我一直在努力追踪我的AppDelegate.cs中的一个崩溃,该崩溃似乎是由Auth0.OidcClient.ActivityMediator和Syncfusion.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