我在iOS上遇到SqlCipher和Akavache的问题。当我使用现有的SqlCipher实现将Akavache库添加到我的项目时,我在链接期间遇到了许多重复的sqlite错误。
目前的行为是什么?
当我使用Link SDK程序集构建iOS时,我收到以下内容 Sqlite Linking Errors
如果当前行为是个错误,请提供重现的步骤,如果可能的话,请提供问题的最小演示
预期的行为是什么? 那个Akavache Sqlite和SqlCipher Sqlite只是一起工作。
哪个版本的Akavache以及哪个平台/操作系统受此问题的影响?这在以前版本的Akavache中有效吗?
我不知道。 SqlCipher几个月前就已经实现了,我们刚刚将Akavache添加到项目中。
其他信息(例如堆栈跟踪,相关问题,如何解决的建议)
我联系了SqlCipher,推荐的方法是分叉Akavache并将以下代码行淹没 实施
https://github.com/akavache/Akavache/blob/develop/src/Akavache.Sqlite3/SQLite.cs#L224
在我走上维修叉的道路之前,我想知道是否有更好的方法?
答案 0 :(得分:2)
您在这里实际做的是将Akavache添加到已包含自定义SQLite版本的应用程序中,该版本包含自定义SQLite版本。而且由于iOS链接的完成方式,这是一个问题。
我怀疑你实际上需要Akavache的“分叉”。您真正需要的是IMO,它是Batteries_V2.Init()的一个实现,它与您应用中已有的SQLCipher实例进行通信。
这是可行的,因为SQLitePCL.raw已经包含了这个“捆绑”概念的多个实现,并使用诱饵和开关从一个变换到另一个。
您的问题与我不时得到的问题相同:“如何使用SQLitePCL.raw自定义SQLite版本?”您的情况唯一的区别是您已经有这样的自定义构建作为您的应用程序的一部分。无论如何,它是相似的,不幸的是,SQLitePCL.raw并没有让它变得如此简单。
无论如何,解释如何弥合Akavache和你现有的SQLCipher构建之间的差距可能超出了这个SO答案的范围,但我可能能够帮助你朝着正确的方向前进。您可以在https://github.com/ericsink/SQLitePCL.raw上发布问题,我会看到它。
答案 1 :(得分:0)
我对为Akavache添加密码支持兴趣不大。如果你能找到一种非可怕的方法,那么就可以在GitHub上为其他人发布它。 Akavache已经通过http://kent-boogaart.com/blog/password-protected-encryption-provider-for-akavache
加密了API有点担心Sqlite Cipher的作者建议删除该行,因为这意味着你也会遇到更大的Sqlite生态系统问题,包括azure移动服务。