gpt4 book ai didi

xamarin.forms - SQLite 似乎不再适用于 xamarin android

转载 作者:行者123 更新时间:2023-12-04 21:29:46 25 4
gpt4 key购买 nike

我们有一个 Xamarin.Forms 项目,需要使用 sqlite 本地数据库来存储日期。 EF Core 的 sqlite 库用于设置,并且由来自不同 PC 的不同开发人员(与 2019 年相比)进行设置。最初,它与 Database.EnsureCreated() 一起使用函数,然后是 ef core 的迁移。一个多月来,一切都很顺利。

上周突然间,由于 sqlite 的一些错误,Android 应用程序无法在任何人的 PC 上启动。它显示以下错误:

Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)



我花了一段时间尝试各种修复和回滚,认为这是代码的问题。这包括以下内容:
  • 删除 obj 和 bin 文件夹,为以下所有步骤清理和重建。
  • 将 ef 的版本降级到 2.2.3(我们开始使用的版本)
  • 回滚到 git 提交最多一周后
  • 升级了ef core的依赖版本
  • 删除了过去的几次迁移
  • 将 xamarin 表单降级到 3.6.x

  • 在尝试了上述和其他几个修复程序之后,终于在上周五(在所有 PC 上)升级了 java 和 android SDK 的版本。一旦这个修复工作,那天一切都很顺利。周二再次出现问题(没有库更新或代码更改)。更深入地查看 EF Cores 日志记录表明它在尝试连接到数据库时崩溃。

    该问题可以在 android 设备上复制,但不能在模拟器上复制。我不确定我们是否需要在 android 中请求一些新的权限。

    我终于用 sqlite 设置创建了一个新的 xamarin 表单项目。我使用了 pcl 库和 ef 核心。我仍然发现同样的错误。

    这是复制问题的 git hub https://github.com/neville-nazerane/xamarin-site

    更新

    只是我注意到的一点。早些时候我的数据库文件被命名为“main.db”。现在无论我将此文件名更改为什么,或者无论我更改什么变量。它总是在日志中将数据库名称显示为“main”。不确定更改数据库名称是否可以解决问题。但是,从未找到更改此数据库名称的方法。我尝试了不同的连接字符串,它只是说“database”和“db”是未知键

    更新

    复制步骤:
    using (var db = new AppDbContext())
    {
    db.Add(new Person {
    Age = 55,
    Name = "Neville"
    });
    db.SaveChanges();
    Person[] alldata = db.People.ToArray();
    }
    Person的定义和 AppDbContext很明显。因此,本着不让问题太长的精神,我不会在这里发布。但是,如果需要,我也可以发布它们。

    最佳答案

    这是 Xamarin.Forms 和 Mono 的错误。

    它在几个月前就被检测到,它已修复,但随后出现了一些回归(使用 VS 2019 v16.1)。

    即使使用最新版本(v16.1.2),该错误仍然存​​在,因此我们需要等待修复。

    资料来源:

    https://github.com/mono/mono/issues/14170

    https://github.com/xamarin/xamarin-android/issues/3112

    https://github.com/xamarin/xamarin-android/issues/2920

    关于xamarin.forms - SQLite 似乎不再适用于 xamarin android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56355254/

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