有点背景......
SQLite是一个为多个平台编译的开源C ++库。在几个不同的平台上,这个库有几种常用的C#包装器。一些常见的是:
https://github.com/praeclarum/sqlite-net.git
https://github.com/mattleibow/Mono.Data.Sqlite.git
https://github.com/oysteinkrog/SQLite.Net-PCL.git
这是我的一个来自SQLite.Net-PCL的剥离后叉。
https://github.com/MelbourneDeveloper/SQLite.Net.Standard.git
在不同平台上围绕SQLite存在多个版本问题,但最近,在Android平台上出现了一个大版本问题。你可以在这里读到它: http://ericsink.com/entries/sqlite_android_n.html
据Xamarin说: 注意:由于Google的更改,Android N现在只允许链接到NDK提供的本机库。 libsqlite.so不是NDK提供的本机库。因此,现有的应用使用例如在Android N上运行时,Mono.Data.Sqlite.dll将崩溃。这可能包括其他使用SQLite的程序集,而不是随Xamarin.Android一起发布。 Xamarin.Android 7.0是Cycle 8的一部分,它将Mono.Data.Sqlite.dll更新为包含自定义版本的libsqlite.so,名为libsqlite3_xamarin.so。
https://developer.xamarin.com/releases/android/xamarin.android_7/xamarin.android_7.0/
所以,我的问题是:我们应该为Android使用哪个Android C ++库? 版本是否取决于安装的Android操作系统的版本? 我们从哪里获得的C ++库?
听起来谷歌只允许自定义版本的库。我想这意味着他们只会接受签名的库,并且会接受从Xamarin编译的库。如果是这种情况,我们如何获取此库并将其打包在.NET标准DLL中,或将其包含在Android应用程序包中??
我问这个问题,因为我的图书馆已经指出了这个问题: https://github.com/MelbourneDeveloper/SQLite.Net.Standard/issues/5
我觉得这与版本控制问题有关。任何能够解释这一点的东西都会有所帮助。在我上面提到的repo中,我创建了一个名为Issues / 5的分支,它使用了一个名为libsqlite3_xamarin的不同C ++库,它似乎与Mono.Data.Sqlite捆绑在一起但是当我的手机进入睡眠状态时我仍然遇到上述问题。