【问题标题】:Possible bug in Akavache in Xamarin.Forms / Xamarin iOSXamarin.Forms / Xamarin iOS 中 Akavache 中可能存在的错误
【发布时间】:2018-04-27 00:23:23
【问题描述】:

Akavache 的实现适用于 Android 调试和发布以及 iOS 调试模式。但是,它在 iOS 发布模式下崩溃。

从 Raygun 截获的抛出异常是“Akavache.Sqlite3.Internal.SQLiteConnection”的类型初始化器抛出异常。

只需部署 iOS 发布模式并获得异常提示。感谢遇到类似问题的人是否可以提供帮助。

Akavache 版本是 6.0.0-alpha0038。

完整的堆栈跟踪如下:

Akavache.Sqlite3.SQLitePersistentBlobCache..ctor(System.String databaseFile, System.Reactive.Concurrency.IScheduler 调度程序) 在:0 Akavache.Sqlite3.Registrations+c__DisplayClass0_0.b__2() in :0

Akavache.Sqlite3.Registrations+c__DisplayClass0_0.b__3() in :0 Splat.ModernDependencyResolver.GetService(System.Type serviceType, System.String contract) in :0 Splat.DependencyResolverMixins.GetService[T](Splat.IDependencyResolver This, System.String contract) in :0 Akavache.BlobCache.get_UserAccount() 在 :0 XXX.UI.CompositionRoot.CreateBlobCache() in :0

XXX.UI.CompositionRoot.CreateApp() 在 :0 XXX.UI.CompositionRoot.LoggedCreation[T](System.Func`1[TResult] factory) in :0 :0

中的 XXX.UI.CompositionRoot.CreateApp()

XXX.UI.CompositionRoot.ResolveApp() 在 :0 XXX.UI.iOS.AppDelegate.ResolveApplication(XXX.UI.CompositionRoot compositionRoot) in :0 XXX.UI.iOS.AppDelegate.FinishedLaunching(UIKit.UIApplication app, Foundation.NSDictionary options) in :0 UIKit.UIApplication.Main(System.String[] args,System.IntPtr 主体,System.IntPtr 委托)在:0 UIKit.UIApplication.Main(System.String[] args, System.String principalClassName, System.String delegateClassName) 在:0 XXX.UI.iOS.Application.Main(System.String[] args) in :0

【问题讨论】:

  • 嗯,这是一个 alpha 版本,所以它是可能的。但是转到 Github 页面并在那里打开一个问题不是更有意义吗?
  • 链接可能有问题...我有 Akavache alpha 在发行版 ios 应用程序上运行,现在没有问题。您可以尝试跳过 Akavache Dll 的链接吗?或者使用链接器文件排除它们并查看是否有效?还要确保你有github.com/PureWeen/Akavache/blob/… 文件
  • @GeraldVersluis 这就是我的想法。至于去 GitHub,嗯,我不能确定它是否是一个错误,所以我首先想尝试 stackoverflow,看看是否有其他人遇到同样的问题。一旦我确定它确实是一个错误,那么它就是 GitHub。
  • @ShaneNeuville 好的,伙计,我要试试。我确实有如下链接器: 无论如何,我会尝试添加覆盖。干杯。
  • @ShaneNeuville 这肯定有帮助。非常感谢。如果您能将其作为回复发布,我将不胜感激,以便我接受。在此期间,我已在下面发布,以便遇到的任何人都可以解决它。等待您的反馈 Shane

标签: sqlite xamarin.ios xamarin.forms akavache


【解决方案1】:

这可能是链接的问题...

您可以尝试跳过 Akavache Dll 的链接吗?

或者使用链接器文件排除它们并查看是否有效?

还要确保您拥有https://github.com/PureWeen/Akavache/blob/3bd03246a6e198bde5eb93a54646dd9f25fc15a1/src/Akavache.Sqlite3/content/AkavacheSqliteLinkerOverride.cs.pp

平台项目中的文件

iOS 的主要问题是 Xamarin 工具使用静态分析来删除它不认为您的任何代码引用的 dll。 Akavache 使用反射来查找您是否正在使用 Xamarin 无法检测到的 SqlLite Dll,因此使用删除 DLL 的发布版本:-/

Override 类只是提供你想要的 Dll 的工具信息

【讨论】:

  • 标记为答案。谢谢你的朋友。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
  • 2019-04-18
  • 2013-10-11
  • 2019-12-22
  • 2012-01-21
相关资源
最近更新 更多