Сбой приложения Xamarin.Forms на iOS после обновления до 13.1 - PullRequest
1 голос
/ 28 октября 2019

Я использовал Visual Studio 2017 с Visual Studio 2017 на Mac. Моно версия была 5.18.1, а версия Xamarin.iOS была 12.4 (я думаю). Приложение работало нормально без каких-либо проблем. Недавно я обновил Visual Studios для Windows и Mac до 2019 года, а версия Xamarin.iOS обновилась до 13.4. Теперь приложение имеет странные сбои как на симуляторах, так и на iPhone с iOS 13.1. Но на симуляторах с iOS 12.4 приложение работает плавно. Кроме того, выпущенное приложение в магазине приложений (сборка с Xamarin.iOS 12.4) работает нормально, как и ожидалось, на устройствах iOS 13.1.

Приложение, кажется, зависает при выполнении какой-либо работы, связанной с анимацией, и вот сбоивойти из AppCenter.

Application Specific Information:
*** Terminating app due to uncaught exception 'SIGABRT', reason: 'Objective-C exception thrown.  Name: NSInternalInconsistencyException Reason: Modifications to the layout engine must not be performed from a background thread after it has been accessed from the main thread.
Native stack trace:

**some native trace**

Xamarin Exception Stack:
Foundation.MonoTouchException: Objective-C exception thrown.  Name: NSInternalInconsistencyException Reason: Modifications to the layout engine must not be performed from a background thread after it has been accessed from the main thread.
Native stack trace:

**some native trace**

at ObjCRuntime.Runtime.ThrowNSException (System.IntPtr ns_exception) [0x00000] in /Library/Frameworks/Xamarin.iOS.framework/Versions/13.4.0.2/src/Xamarin.iOS/ObjCRuntime/Runtime.cs:406
  at ObjCRuntime.Runtime.throw_ns_exception (System.IntPtr exc) [0x00000] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/runtime/Delegates.generated.cs:128
  at (wrapper native-to-managed) ObjCRuntime.Runtime.throw_ns_exception(intptr)
  at (wrapper managed-to-native) ObjCRuntime.Messaging.void_objc_msgSendSuper(intptr,intptr)
  at UIKit.UIView.LayoutSubviews () [0x00023] in /Library/Frameworks/Xamarin.iOS.framework/Versions/13.4.0.2/src/Xamarin.iOS/UIView.g.cs:1290
  at Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].LayoutSubviews () [0x00000] in D:\a\1\s\Xamarin.Forms.Platform.iOS\VisualElementRenderer.cs:289
  at null.null
  at (wrapper managed-to-native) ObjCRuntime.Messaging.void_objc_msgSendSuper(intptr,intptr)
  at UIKit.UIView.LayoutSubviews () [0x00023] in /Library/Frameworks/Xamarin.iOS.framework/Versions/13.4.0.2/src/Xamarin.iOS/UIView.g.cs:1290
  at Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].LayoutSubviews () [0x00000] in D:\a\1\s\Xamarin.Forms.Platform.iOS\VisualElementRenderer.cs:289
  at null.null
  at (wrapper managed-to-native) ObjCRuntime.Messaging.void_objc_msgSend(intptr,intptr)
  at CoreAnimation.CATransaction.Commit () [0x00000] in /Library/Frameworks/Xamarin.iOS.framework/Versions/13.4.0.2/src/Xamarin.iOS/CATransaction.g.cs:90
  at Xamarin.Forms.Platform.iOS.CADisplayLinkTicker.StartThread () [0x0003a] in D:\a\1\s\Xamarin.Forms.Platform.iOS\CADisplayLinkTicker.cs:61
  at System.Threading.ThreadHelper.ThreadStart_Context (System.Object state) [0x00014] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/mcs/class/referencesource/mscorlib/system/threading/thread.cs:74
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00071] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:968
  at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:910
  at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state) [0x0002b] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:899
  at System.Threading.ThreadHelper.ThreadStart () [0x00008] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/mcs/class/referencesource/mscorlib/system/threading/thread.cs:111

У кого-нибудь есть идеи, в чем может быть проблема? (

1 Ответ

0 голосов
/ 01 ноября 2019

Каким-то образом, когда я удалил Xamarin.Forms.Editor из представлений, связанных с падением, сбоя не произошло. Я подумал, что если мой код ничего не делает, то, вероятно, средство визуализации (EditorRenderer) может отвечать за обновление пользовательского интерфейса в фоновом потоке или что-то в этом роде. Поэтому я немного обновил версию Xamarin.Forms, и она сработала.

Итак, обновление версии Xamarin.Forms до версии 3.6 решило проблему!

...