Xamarin.Forms / Xamarin iOS 中的 Akavache 可能存在错误
Possible bug in Akavache in Xamarin.Forms / Xamarin iOS
Akavache 的实施适用于 Android 调试和发布以及 iOS 调试模式。但是,它在 iOS 发布模式下崩溃。
The type initializer for 'Akavache.Sqlite3.Internal.SQLiteConnection' throw an exception.
抛出的异常,从 Raygun 截获
只需部署 iOS 发布模式并得到异常提示。如果有遇到过类似问题的人可以提供帮助,我们将不胜感激。
Akavache 版本为 6.0.0-alpha0038。
完整堆栈跟踪如下:
Akavache.Sqlite3.SQLitePersistentBlobCache..ctor(System.String databaseFile, System.Reactive.Concurrency.IScheduler scheduler) in :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 <412cf7afb8e84872aee33a6b0acc7f20#a572ceb4cff14caae1629fe17a67dfc3>:0
Splat.DependencyResolverMixins.GetService[T](Splat.IDependencyResolver This, System.String contract) in <412cf7afb8e84872aee33a6b0acc7f20#a572ceb4cff14caae1629fe17a67dfc3>:0
Akavache.BlobCache.get_UserAccount() in <6b3110b6f37348ddb9bd9456cdb85f61#a572ceb4cff14caae1629fe17a67dfc3>:0
XXX.UI.CompositionRoot.CreateBlobCache() in <2815cf10ecb04f8fa012a0a005f4202e#a572ceb4cff14caae1629fe17a67dfc3>:0
XXX.UI.CompositionRoot.CreateApp() in <2815cf10ecb04f8fa012a0a005f4202e#a572ceb4cff14caae1629fe17a67dfc3>:0
XXX.UI.CompositionRoot.LoggedCreation[T](System.Func`1[TResult] factory) in <2815cf10ecb04f8fa012a0a005f4202e#a572ceb4cff14caae1629fe17a67dfc3>:0
XXX.UI.CompositionRoot.CreateApp() in <2815cf10ecb04f8fa012a0a005f4202e#a572ceb4cff14caae1629fe17a67dfc3>:0
XXX.UI.CompositionRoot.ResolveApp() in <2815cf10ecb04f8fa012a0a005f4202e#a572ceb4cff14caae1629fe17a67dfc3>: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 principal, System.IntPtr delegate) in :0
UIKit.UIApplication.Main(System.String[] args, System.String principalClassName, System.String delegateClassName) in :0
XXX.UI.iOS.Application.Main(System.String[] args) in :0
这可能是 linking...
的问题
您可以尝试 link 跳过 Akavache Dll 吗?
或者使用 linker 文件来排除它们,看看是否可行?
您的平台项目中的文件
iOS 的主要问题是 Xamarin 工具使用静态分析来删除它认为没有任何代码引用的 dll。 Akavache 使用反射来查找您是否正在使用 Xamarin 无法检测到的 SqlLite Dll,因此对于删除 DLL 的发行版本:-/
Override class 只是给出了你想要那个 Dll
的工具信息
Akavache 的实施适用于 Android 调试和发布以及 iOS 调试模式。但是,它在 iOS 发布模式下崩溃。
The type initializer for 'Akavache.Sqlite3.Internal.SQLiteConnection' throw an exception.
抛出的异常,从 Raygun 截获只需部署 iOS 发布模式并得到异常提示。如果有遇到过类似问题的人可以提供帮助,我们将不胜感激。
Akavache 版本为 6.0.0-alpha0038。
完整堆栈跟踪如下:
Akavache.Sqlite3.SQLitePersistentBlobCache..ctor(System.String databaseFile, System.Reactive.Concurrency.IScheduler scheduler) in :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 <412cf7afb8e84872aee33a6b0acc7f20#a572ceb4cff14caae1629fe17a67dfc3>:0 Splat.DependencyResolverMixins.GetService[T](Splat.IDependencyResolver This, System.String contract) in <412cf7afb8e84872aee33a6b0acc7f20#a572ceb4cff14caae1629fe17a67dfc3>:0 Akavache.BlobCache.get_UserAccount() in <6b3110b6f37348ddb9bd9456cdb85f61#a572ceb4cff14caae1629fe17a67dfc3>:0 XXX.UI.CompositionRoot.CreateBlobCache() in <2815cf10ecb04f8fa012a0a005f4202e#a572ceb4cff14caae1629fe17a67dfc3>:0
XXX.UI.CompositionRoot.CreateApp() in <2815cf10ecb04f8fa012a0a005f4202e#a572ceb4cff14caae1629fe17a67dfc3>:0 XXX.UI.CompositionRoot.LoggedCreation[T](System.Func`1[TResult] factory) in <2815cf10ecb04f8fa012a0a005f4202e#a572ceb4cff14caae1629fe17a67dfc3>:0 XXX.UI.CompositionRoot.CreateApp() in <2815cf10ecb04f8fa012a0a005f4202e#a572ceb4cff14caae1629fe17a67dfc3>:0
XXX.UI.CompositionRoot.ResolveApp() in <2815cf10ecb04f8fa012a0a005f4202e#a572ceb4cff14caae1629fe17a67dfc3>: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 principal, System.IntPtr delegate) in :0 UIKit.UIApplication.Main(System.String[] args, System.String principalClassName, System.String delegateClassName) in :0 XXX.UI.iOS.Application.Main(System.String[] args) in :0
这可能是 linking...
的问题您可以尝试 link 跳过 Akavache Dll 吗?
或者使用 linker 文件来排除它们,看看是否可行?
您的平台项目中的文件
iOS 的主要问题是 Xamarin 工具使用静态分析来删除它认为没有任何代码引用的 dll。 Akavache 使用反射来查找您是否正在使用 Xamarin 无法检测到的 SqlLite Dll,因此对于删除 DLL 的发行版本:-/
Override class 只是给出了你想要那个 Dll
的工具信息