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

目前的行为是什么?

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

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


安装/实施SqlCipher
安装Akavache
生成Xamarin.iOS项目


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

哪个版本的Akavache和哪个平台/操作系统受此问题影响?这在Akavache的早期版本中有效吗?


Akavache 5.0.0
iOS 10.3


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

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


链接仅设置为SDK程序集
这是Xamarin Forms项目,Android链接不会产生相同的结果。
我实际上能够在Android上执行代码,并证明这些技术发挥了很好的作用(据我所知)
我联系了SqlCipher,推荐的方法是派生Akavache并将下面的代码行换成另一行
实施。
https://github.com/akavache/Akavache/blob/develop/src/Akavache.Sqlite3/SQLite.cs#L224


在我继续保养叉子之前,我想知道是否有更好的方法?

最佳答案

您实际上在这里所做的就是将包含自定义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上发布问题,我会看到的。

关于ios - Akavache Sqlite链接错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44592767/

10-09 17:14