gpt4 book ai didi

xamarin - 在 Android 7+ 上使用 EF7 SQLite

转载 作者:行者123 更新时间:2023-12-03 22:06:18 24 4
gpt4 key购买 nike

在我的项目中,我使用了 Microsoft.EntityFrameworkCore.SQLite来自 NuGet 的包。但对于 Android 7+,应用程序崩溃 unauthorized access to "/system/lib64/libsqlite.so".
这是因为 Android 7 不允许使用除 NDK 中的库以外的 native 库(据我所知)。另请参阅此问题:https://github.com/aspnet/EntityFramework/issues/7777 .

所以,我现在在互联网上研究了大约 2 天,但尝试了很多事情都没有成功让 EFCore 在 Android 7 上工作。其中之一是更新到预览版 v2.0.0-preview1-final .但这导致了其他问题,如以下应用程序编译,但在模拟器上部署/启动时崩溃:

06-21 09:58:18.970 D/Mono    ( 3632): Assembly Loader probing location: 'System.Runtime.CompilerServices.Unsafe'.
06-21 09:58:18.970 F/monodroid-assembly( 3632): Could not load assembly 'System.Runtime.CompilerServices.Unsafe' during startup registration.
06-21 09:58:18.970 F/monodroid-assembly( 3632): This might be due to an invalid debug installation.

然后我尝试将“System.Runtime.CompilerServices.Unsafe”NuGet 包手动添加到我的项目中,但它没有解决问题。
我搞砸了很多,尝试了不同的构建参数等,实际上让应用程序在 Android 7 模拟器上使用 EFCore 的预览包运行。但是,在项目清理和重建后,错误再次出现。

关于如何让 EFCore Sqlite 在 Android 7 上工作的任何帮助?

我在 Xamarin.Android 7.3.1.2 上使用 Visual Studio 2017

我创建了一个示例项目以重现该问题: https://github.com/tipa/EFCoreSample - 基本上只是从 VS 的基本 Android 模板开始,并添加了 Nuget 包

最佳答案

我知道这个问题是在两个多月前提出的,您可能已经找到了解决方案,但我想发布我们如何设法解决这个问题。

我们正在使用 EntityFrameworkCore 和 SQLite 开发 Xamarin.Forms 应用程序。由于项目和公司政策,我们被限制使用 .NetStandard 1.6(我们将我们的 PCL 项目从 .NetFramework 迁移到 .NetStandard 以集成 EntityFrameworkCore)。

在这个问题开始发生在我们身上后,我们设法通过执行以下操作来解决这个问题:

  • 在 DAL 项目(我们有一个单独的 PCL 项目,其中包含上下文、UoW、存储库和模型)
  • 将主 Xamarin.Forms Android 项目中的“Microsoft.Data.Sqlite”(这会自动更新所需的依赖项)从“1.1.1”版本更新为“2.0.0-preview1-final”

  • EntityFrameworkCore 版本 2.x.x 使用 Android 7+“批准”的方式访问“libsqlite.so”文件,而版本 1.x.x 不使用。

    希望这对可能使用我们拥有的类似软件包的任何人都有帮助。

    关于xamarin - 在 Android 7+ 上使用 EF7 SQLite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44674114/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com