0

我在 iOS 上遇到了 SqlCipher 和 Akavache 的问题。当我使用现有的 SqlCipher 实现将 Akavache 库添加到我的项目时,我在链接过程中遇到了许多重复的 sqlite 错误。

当前的行为是什么?

当我使用 Link SDK 程序集构建 iOS 时,我收到以下 Sqlite 链接错误

如果当前行为是一个错误,请提供重现的步骤,如果可能,请提供问题的最小演示

  • 安装/实现 SqlCipher
  • 安装 Akavache
  • 构建 Xamarin.iOS 项目

预期的行为是什么? Akavache Sqlite 和 SqlCipher Sqlite 一起工作。

哪些版本的 Akavache 以及哪些平台/操作系统会受到此问题的影响?这在以前版本的 Akavache 中有效吗?

  • 阿卡瓦奇 5.0.0
  • iOS 10.3

我不会知道的。SqlCipher 是几个月前实现的,我们现在刚刚将 Akavache 添加到项目中。

其他信息(例如堆栈跟踪、相关问题、如何修复的建议)

在我走上维护分叉的道路之前,我想知道是否有更好的方法?

4

2 回答 2

2

您在这里有效地做的是将包含自定义 SQLite 构建的 Akavache 添加到已经包含自定义 SQLite 构建的应用程序中。由于 iOS 链接的完成方式,这是一个问题。

我怀疑您是否真的需要 Akavache 的“分叉”。IMO,您真正需要的是 Batteries_V2.Init() 的实现,它与您的应用程序中已有的 SQLCipher 实例对话。

这是可行的,因为 SQLitePCL.raw 已经包含此“捆绑”概念的多个实现,并使用诱饵和切换从一个更改为另一个。

您的问题相当于我不时收到的问题:“如何使用 SQLitePCL.raw 的自定义 SQLite 构建?” 您的情况的唯一区别是您已经将这样的自定义构建作为您的应用程序的一部分。无论如何,它是相似的,不幸的是,SQLitePCL.raw 并没有让这变得像它应该的那样简单。

无论如何,解释如何弥合 Akavache 和您现有的 SQLCipher 构建之间的差距可能超出了这个 SO 答案的范围,但我可能能够帮助您朝着正确的方向前进。您可以在https://github.com/ericsink/SQLitePCL.raw上发布问题,我会看到的。

于 2017-06-16T21:28:21.380 回答
0

我对向 Akavache 添加 Cipher 支持兴趣不大。如果你能找到一种不那么糟糕的方法,那么将它发布到 GitHub 上供其他人使用。Akavache 已经通过http://kent-boogaart.com/blog/password-protected-encryption-provider-for-akavache提供了一个加密 API

Sqlite Cipher 的作者建议删除该行,这有点令人担忧,因为这意味着您还会遇到更大的 Sqlite 生态系统(包括 azure 移动服务)并遇到问题。

于 2017-06-16T21:23:39.367 回答