Akavache Sqlite 链接错误

Akavache Sqlite linking errors

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

当前的行为是什么?

当我使用 Link SDK 程序集构建 iOS 时,我收到以下信息 Sqlite Linking Errors

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

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

哪个版本的 Akavache 和哪个平台/OS 受此问题影响?这在以前版本的 Akavache 中有效吗?

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

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

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

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

进行了加密 API

有点担心 Sqlite Cipher 的作者建议删除该行,因为这意味着您还将 运行 进入更大的 Sqlite 生态系统并遇到问题,包括 azure 移动服务。

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

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

这是可行的,因为 SQLitePCL.raw 已经包含此 "bundle" 概念的多个实现,并使用诱饵和切换从一个到另一个。

你的问题等同于我不时收到的问题:"How do I use a custom SQLite build with SQLitePCL.raw?"你的情况的唯一不同是你已经有这样一个自定义构建作为你的应用程序的一部分。无论如何,它是相似的,不幸的是,SQLitePCL.raw 并没有让它变得像它应该的那样简单。

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