无法在Xamarin.iOS应用程序上启用AppCenter.Crashes

5
尝试在现有的Xamarin.iOS应用程序中使用新的AppCenter时,我在AppCenter.Crashes API方面遇到了一些问题。我遵循了入门部分,并在我的AppDelegate.cs中添加了以下代码:
using Microsoft.AppCenter;
using Microsoft.AppCenter.Analytics;
using Microsoft.AppCenter.Crashes;

// ...
public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
    //...
    // App Center
    AppCenter.Start("xxxxxxx-xxxx-xxxx-xxxx", typeof(Analytics), typeof(Crashes));

    return true;
}

我也安装了相应的NuGet包(这是我的packages.config文件中对应的行)。

<package id="Microsoft.AppCenter" version="1.5.0" targetFramework="xamarinios10" />
<package id="Microsoft.AppCenter.Analytics" version="1.5.0" targetFramework="xamarinios10" />
<package id="Microsoft.AppCenter.Crashes" version="1.5.0" targetFramework="xamarinios10" />

请注意,如果我禁用AppCenter.Crashes模块:
AppCenter.Start("xxxxxxx-xxxx-xxxx-xxxx", typeof(Analytics));

一切都很好(我可以在App Center后端看到分析数据)。

但启用了AppCenter.Crashes模块后,我的应用程序崩溃并显示以下控制台消息:

11:24:53.521334 +0100   MyApp.iOS   [AppCenter] VERBOSE: +[MSAppDelegateForwarder addTraceBlock:]_block_invoke_2/101 Start buffering traces.
11:24:53.521381 +0100   MyApp.iOS   [AppCenter] DEBUG: +[MSAppDelegateForwarder load]_block_invoke/48 Application delegate forwarder is enabled. It may use swizzling.
11:24:53.521587 +0100   MyApp.iOS   [AppCenter] VERBOSE: +[MSAppDelegateForwarder flushTraceBuffer]/398 Stop buffering traces, flushed.
11:24:53.524550 +0100   MyApp.iOS   [AppCenterXamarin] DEBUG: +[MSWrapperLogger MSWrapperLog:tag:level:]/7 No named identifier found in appSecret; using as-is
11:24:53.528625 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes fileURLWithName:]/1075 Didn't create crash buffer file as one already existed at file:///var/mobile/Containers/Data/Application/76272998-91E2-469F-9A0F-9B0C7A9899E1/Library/Caches/com.microsoft.appcenter/crasheslogbuffer/0.mscrasheslogbuffer.
11:24:53.529190 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes fileURLWithName:]/1075 Didn't create crash buffer file as one already existed at file:///var/mobile/Containers/Data/Application/76272998-91E2-469F-9A0F-9B0C7A9899E1/Library/Caches/com.microsoft.appcenter/crasheslogbuffer/1.mscrasheslogbuffer.
11:24:53.529652 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes fileURLWithName:]/1075 Didn't create crash buffer file as one already existed at file:///var/mobile/Containers/Data/Application/76272998-91E2-469F-9A0F-9B0C7A9899E1/Library/Caches/com.microsoft.appcenter/crasheslogbuffer/2.mscrasheslogbuffer.
11:24:53.529787 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes fileURLWithName:]/1075 Didn't create crash buffer file as one already existed at file:///var/mobile/Containers/Data/Application/76272998-91E2-469F-9A0F-9B0C7A9899E1/Library/Caches/com.microsoft.appcenter/crasheslogbuffer/3.mscrasheslogbuffer.
11:24:53.547125 +0100   MyApp.iOS   [AppCenter] INFO: -[MSHttpSender networkStateChanged]/346 Internet connection is up.
11:24:53.549737 +0100   MyApp.iOS   [AppCenter] DEBUG: +[MSSessionContext sharedInstance]_block_invoke/31 5 session(s) in the history.
11:24:53.551565 +0100   MyApp.iOS   [AppCenter] VERBOSE: -[MSSessionContext setSessionId:]/70 Stored new session with id:(null) and timestamp: 2018-03-14 10:24:53 +0000.
11:24:53.551644 +0100   MyApp.iOS   [AppCenter] INFO: -[MSAppCenter configure:]/222 App Center SDK configured successfully.
11:24:53.551699 +0100   MyApp.iOS   [AppCenter] VERBOSE: -[MSAppCenter start:withServices:]/234 Prepare to start services: MSAnalytics, MSCrashes
11:24:53.551865 +0100   MyApp.iOS   [AppCenter] VERBOSE: -[MSAppCenter start:withServices:]/236 Start services MSCrashes, MSAnalytics
11:24:53.552616 +0100   MyApp.iOS   [AppCenterCrashes] DEBUG: -[MSCrashes configureCrashReporterWithUncaughtExceptionHandlerEnabled:]/588 EnableUncaughtExceptionHandler is set to YES
11:24:53.557629 +0100   MyApp.iOS   [AppCenterCrashes] DEBUG: -[MSCrashes configureCrashReporterWithUncaughtExceptionHandlerEnabled:]/639 Exception handler successfully initialized.
11:24:53.574825 +0100   MyApp.iOS   [AppCenterCrashes] INFO: -[MSCrashes applyEnabledState:]/357 Crashes service has been enabled.
11:24:53.578904 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes startWithChannelGroup:appSecret:]/401 Started crash service.
11:24:53.579845 +0100   MyApp.iOS   [AppCenter] VERBOSE: -[MSSessionContext setSessionId:]/70 Stored new session with id:36C20159-XXXX-XXXX-XXXX-1E137546055A and timestamp: 2018-03-14 10:24:53 +0000.
11:24:53.579893 +0100   MyApp.iOS   [AppCenterAnalytics] INFO: -[MSSessionTracker renewSessionId]/50 New session ID: 36C20159-XXXX-XXXX-XXXX-1E137546055A
11:24:53.579940 +0100   MyApp.iOS   CCMonitor created
11:24:53.584290 +0100   MyApp.iOS   [AppCenterAnalytics] INFO: -[MSAnalytics applyEnabledState:]/108 Analytics service has been enabled.
11:24:53.585392 +0100   MyApp.iOS   [AppCenterAnalytics] VERBOSE: -[MSAnalytics startWithChannelGroup:appSecret:]/73 Started Analytics service.
11:24:53.586034 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes onEnqueuingLog:withInternalId:]/448 Storing a log to Crashes Buffer: (sid: 36C20159-XXXX-XXXX-XXXX-1E137546055A, type: startSession)
11:24:53.586103 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes onEnqueuingLog:withInternalId:]/459 Found an empty buffer position.
11:24:53.586193 +0100   MyApp.iOS   [AppCenter] DEBUG: -[MSChannelUnitDefault enqueueItem:]_block_invoke/114 Saving log, type: startSession.
11:24:53.589925 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes deleteBufferedLog:withInternalId:]/520 Deleting a log from buffer with id ED4281FF-XXXX-XXXX-BB26-4DF6975F55EC
11:24:53.590438 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes onEnqueuingLog:withInternalId:]/448 Storing a log to Crashes Buffer: (sid: (null), type: startService)
11:24:53.590495 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes onEnqueuingLog:withInternalId:]/459 Found an empty buffer position.
11:24:53.590541 +0100   MyApp.iOS   [AppCenter] DEBUG: -[MSChannelUnitDefault enqueueItem:]_block_invoke/114 Saving log, type: startService.
11:24:53.592715 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes deleteBufferedLog:withInternalId:]/520 Deleting a log from buffer with id 5B6ECE02-XXXX-XXXX-86F8-10C663A6C411
11:24:53.603916 +0100   MyApp.iOS   [MyApp.iOS][DEBUG] iPhone format detected
11:24:54.674171 +0100   MyApp.iOS   [AppCenterCrashes] DEBUG: -[MSCrashes startCrashProcessing]/695 Start delayed CrashManager processing
11:24:54.757002 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes processCrashReports]/755 Crash reports found
11:24:54.770674 +0100   MyApp.iOS   [AppCenterCrashes] DEBUG: -[MSCrashes processCrashReports]/767 shouldProcessErrorReport is not implemented or returned YES, processing the crash report: <MSPLCrashReport: 0x1c00a6240>
11:24:54.770755 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes processCrashReports]/755 Crash reports found
11:24:54.779793 +0100   MyApp.iOS   [AppCenterCrashes] DEBUG: -[MSCrashes processCrashReports]/767 shouldProcessErrorReport is not implemented or returned YES, processing the crash report: <MSPLCrashReport: 0x1d42bd0a0>
11:24:54.779905 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes processCrashReports]/755 Crash reports found
11:24:54.787919 +0100   MyApp.iOS   [AppCenterCrashes] DEBUG: -[MSCrashes processCrashReports]/767 shouldProcessErrorReport is not implemented or returned YES, processing the crash report: <MSPLCrashReport: 0x1d44a2e80>
11:24:54.787956 +0100   MyApp.iOS   [AppCenterCrashes] VERBOSE: -[MSCrashes processCrashReports]/755 Crash reports found
11:24:54.794906 +0100   MyApp.iOS   [AppCenterCrashes] DEBUG: -[MSCrashes processCrashReports]/767 shouldProcessErrorReport is not implemented or returned YES, processing the crash report: <MSPLCrashReport: 0x1d44a8820>
17:55:19.480297 +0100   MyApp.iOS   [MyApp.iOS][DEBUG] api Sync success, need to write now ....  <- My app debug message, all is OK here
17:55:19.482483 +0100   MyApp.iOS   [MyApp.iOS][DEBUG] 0 total objects received .... <- My app debug message, all is OK here
17:38:55.495458 +0100   MyApp.iOS   dynamic_cast error 2: One or more of the following type_info's  has hidden visibility.  They should all have public visibility.   N10__cxxabiv116__shim_type_infoE, id, N10__cxxabiv117__pbase_type_infoE.
17:38:55.495535 +0100   MyApp.iOS   dynamic_cast error 2: One or more of the following type_info's  has hidden visibility.  They should all have public visibility.   N10__cxxabiv116__shim_type_infoE, id, N10__cxxabiv117__pbase_type_infoE.
17:38:55.495594 +0100   MyApp.iOS   dynamic_cast error 2: One or more of the following type_info's  has hidden visibility.  They should all have public visibility.   N10__cxxabiv116__shim_type_infoE, id, N10__cxxabiv117__pbase_type_infoE.
11:25:01.376121 +0100   MyApp.iOS   [AppCenterCrashes] DEBUG: void ms_save_log_buffer_callback(siginfo_t *, ucontext_t *, void *)/102 Closed a buffer file: /var/mobile/Containers/Data/Application/76272998-XXXX-XXXX-XXXX-9B0C7A9899E1/Library/Caches/com.microsoft.appcenter/crasheslogbuffer/0.mscrasheslogbuffer
11:25:01.376170 +0100   MyApp.iOS   [AppCenterCrashes] DEBUG: void ms_save_log_buffer_callback(siginfo_t *, ucontext_t *, void *)/102 Closed a buffer file: /var/mobile/Containers/Data/Application/76272998-XXXX-XXXX-XXXX-9B0C7A9899E1/Library/Caches/com.microsoft.appcenter/crasheslogbuffer/1.mscrasheslogbuffer
11:25:01.376292 +0100   MyApp.iOS   [AppCenterCrashes] DEBUG: void ms_save_log_buffer_callback(siginfo_t *, ucontext_t *, void *)/102 Closed a buffer file: /var/mobile/Containers/Data/Application/76272998-XXXX-XXXX-XXXX-9B0C7A9899E1/Library/Caches/com.microsoft.appcenter/crasheslogbuffer/2.mscrasheslogbuffer

最后的日志从1.mscrasheslogbuffer重复到59.mscrasheslogbuffer

请注意,我的应用程序加载遵循以下步骤:

  • 加载第一个带有图像和活动指示器的视图控制器,调用一些Rest API
  • API调用后执行一个带有NavBar的segue到另一个视图控制器

应用似乎在两个步骤之间崩溃:我可以看到第一个屏幕,并且日志表明http/api的内容是正确的。

请注意,在模拟器和真实设备上都具有相同的行为。

有任何想法吗?

编辑1:添加更多日志AppCenter.LogLevel = LogLevel.Verbose;


你的链接器设置是什么? - valdetero
模拟器上不要链接,设备上只链接框架SDK。 - j-guyon
你有找到解决方案吗?我在不同的上下文中遇到了完全相同的 dynamic_cast 错误。找不到任何有用的东西,你的帖子最接近。 - Thomas Hilbert
我在不同的上下文中看到了相同的错误。希望能找到解决方案 (: - Locksleyu
@ThomasHilbert,不幸的是我没有找到任何解决方案 :( - j-guyon
显示剩余2条评论
1个回答

0
我们这边也遇到了同样的问题。
我们通过移除对 Microsoft.AppCenter 的 NuGet 引用来解决了这个问题。
换句话说,我们只保留了对其他 NuGet 包的引用。
  • Microsoft.AppCenter.Analytics
  • Microsoft.AppCenter.Crashes

我们也在使用版本1.5.0。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接