3

在我们的 Xamarin Android 项目中,我们正在尝试从 sqlite-net 切换到官方的 sqlite-net-pcl 包。

在此处输入图像描述

但是,在创建新 SQLiteConnection 时进行此切换后,我收到以下异常:

'SQLite.SQLiteConnection' 的类型初始化程序引发了异常。---> System.DllNotFoundException: e_sqlite3

完全例外:

Xamarin 由以下原因引起:android.runtime.JavaProxyThrowable:System.TypeInitializationException:“SQLite.SQLiteConnection”的类型初始化程序引发了异常。---> System.DllNotFoundException: e_sqlite3 at (wrapper managed-to-native) SQLitePCL.SQLite3Provider_e_sqlite3+NativeMethods:sqlite3_libversion_number () at SQLitePCL.SQLite3Provider_e_sqlite3.SQLitePCL.ISQLite3Provider.sqlite3_libversion_number () [0x00000] in :0 at SQLitePCL.raw。 SetProvider (SQLitePCL.ISQLite3Provider imp) [0x00000] in <4472a4c16754425197d915f39ebd937e>:0 at SQLitePCL.Batteries_V2.Init () [0x0000d] in <1125db7e18f0475797b2764ec6653cf1>:0 at SQLite.SQLiteConnection..cctor () [0x00000] in /Users/fak /Dropbox/Projects/sqlite-net/src/SQLite.cs:171 --- 内部异常堆栈跟踪结束 --- 在单声道。

在日志中,我可以看到以下信息:

12-01 10:43:05.356 D/Mono (11194): DllImport 试图加载:'e_sqlite3'。12-01 10:43:05.358 D/Mono (11194): DllImport 错误加载库'/storage/emulated/0/Android/data/com.psonar.android/files/。覆盖/libe_sqlite3':'dlopen失败:库“/data/app/com.psonar.android-1/lib/x86//storage/emulated/0/Android/data/com.psonar.android/files/。覆盖/ libe_sqlite3“未找到”。12-01 10:43:05.360 D/Mono (11194): DllImport 错误加载库'/storage/emulated/0/Android/data/com.psonar.android/files/。覆盖/libe_sqlite3.so':'dlopen失败:库“/data/app/com.psonar.android-1/lib/x86//storage/emulated/0/Android/data/com.psonar.android/files/。覆盖/libe_sqlite3.so" 找不到'。12-01 10:43:05.360 D/Mono (11194): DllImport 错误加载库 '/system/lib/libe_sqlite3': 'dlopen failed: library"/data/app/com. psonar.android-1/lib/x86//system/lib/libe_sqlite3" 未找到'。12-01 10:43:05.360 D/Mono (11194): DllImport 错误加载库'/system/lib/libe_sqlite3.so' :'dlopen 失败:库“/data/app/com.psonar.android-1/lib/x86//system/lib/libe_sqlite3.so”未找到'。12-01 10:43:05.360 D/Mono (11194 ): DllImport 错误加载库'libe_sqlite3': 'dlopen failed: library "/data/app/com.psonar.android-1/lib/x86/libe_sqlite3" not found'. 12-01 10:43:05.361 D/Mono (11194):DllImport 错误加载库“libe_sqlite3.so”:“dlopen 失败:库”/data/app/com.psonar.android-1/lib/x86/libe_sqlite3.so"未找到'。12-01 10:43:05.361 D/Mono (11194): DllImport 错误加载库'e_sqlite3':'dlopen失败:库“/data/app/com.psonar.android-1/lib/x86/e_sqlite3”未找到'。12-01 10:43:05.362 D/Mono (11194): DllImport 错误加载库'/storage/模拟/0/Android/data/com.psonar.android/files/。覆盖/libe_sqlite3':'dlopen失败:库“/data/app/com.psonar.android-1/lib/x86//storage/emulated/0/Android/data/com.psonar.android/files/。覆盖/ libe_sqlite3“未找到”。12-01 10:43:05.364 D/Mono (11194): DllImport 错误加载库'/storage/emulated/0/Android/data/com.psonar.android/files/。覆盖/libe_sqlite3.so':'dlopen失败:库“/data/app/com.psonar.android-1/lib/x86//storage/emulated/0/Android/data/com.psonar.android/files/。覆盖libe_sqlite3':'dlopen 失败:找不到库“/data/app/com.psonar.android-1/lib/x86/libe_sqlite3”'。12-01 10:43:05.365 W/Mono (11194):DllImport 无法加载库“dlopen 失败:未找到库“/data/app/com.psonar.android-1/lib/x86/libe_sqlite3”。12-01 10:43:05.365 D/Mono (11194): DllImport 试图加载:'e_sqlite3'。12-01 10:43:05.366 D/Mono (11194): DllImport 错误加载库'/storage/emulated/0/Android/data/com.psonar.android/files/。libe_sqlite3':'dlopen 失败:找不到库“/data/app/com.psonar.android-1/lib/x86/libe_sqlite3”'。12-01 10:43:05.365 W/Mono (11194):DllImport 无法加载库“dlopen 失败:未找到库“/data/app/com.psonar.android-1/lib/x86/libe_sqlite3”。12-01 10:43:05.365 D/Mono (11194): DllImport 试图加载:'e_sqlite3'。12-01 10:43:05.366 D/Mono (11194): DllImport 错误加载库'/storage/emulated/0/Android/data/com.psonar.android/files/。12-01 10:43:05.365 D/Mono (11194): DllImport 试图加载:'e_sqlite3'。12-01 10:43:05.366 D/Mono (11194): DllImport 错误加载库'/storage/emulated/0/Android/data/com.psonar.android/files/。12-01 10:43:05.365 D/Mono (11194): DllImport 试图加载:'e_sqlite3'。12-01 10:43:05.366 D/Mono (11194): DllImport 错误加载库'/storage/emulated/0/Android/data/com.psonar.android/files/。覆盖/libe_sqlite3':'dlopen失败:库“/data/app/com.psonar.android-1/lib/x86//storage/emulated/0/Android/data/com.psonar.android/files/。覆盖/ libe_sqlite3“未找到”。12-01 10:43:05.368 D/Mono (11194): DllImport 错误加载库 '/storage/emulated/0/Android/data/com.psonar.android/files/。覆盖/libe_sqlite3.so':'dlopen失败:库“/data/app/com.psonar.android-1/lib/x86//storage/emulated/0/Android/data/com.psonar.android/files/。覆盖/libe_sqlite3.so" 找不到'。12-01 10:43:05.368 D/Mono (11194): DllImport 错误加载库'/system/lib/libe_sqlite3': 'dlopen failed: library"/data/app/com. psonar.android-1/lib/x86//system/lib/libe_sqlite3" not found'。12-01 10:43:05.368 D/Mono (11194): DllImport error loading library '/system/lib/libe_sqlite3.so' :'dlopen 失败:库“/data/app/com.psonar.android-1/lib/x86//system/lib/libe_sqlite3.so”未找到'。12-01 10:43:05.368 D/Mono (11194 ): DllImport 错误加载库'libe_sqlite3': 'dlopen failed: library "/data/app/com.psonar.android-1/lib/x86/libe_sqlite3" not found'. 12-01 10:43:05.368 D/Mono (11194):DllImport 错误加载库“libe_sqlite3.so”:“dlopen 失败:库”/data/app/com.psonar.android-1/lib/x86/libe_sqlite3.so"未找到'。12-01 10:43:05.369 D/Mono (11194): DllImport 错误加载库'e_sqlite3':'dlopen失败:找不到库“/data/app/com.psonar.android-1/lib/x86/e_sqlite3”。12-01 10:43:05.370 D/Mono (11194): DllImport error loading library '/storage/模拟/0/Android/data/com.psonar.android/files/。覆盖/libe_sqlite3':'dlopen失败:库“/data/app/com.psonar.android-1/lib/x86//storage/emulated/0/Android/data/com.psonar.android/files/。覆盖/ libe_sqlite3“未找到”。12-01 10:43:05.371 D/Mono (11194): DllImport 错误加载库 '/storage/emulated/0/Android/data/com.psonar.android/files/。覆盖/libe_sqlite3.so':'dlopen失败:库“/data/app/com.psonar.android-1/lib/x86//storage/emulated/0/Android/data/com.psonar.android/files/。覆盖/libe_sqlite3.so" 找不到'。12-01 10:43:05.372 D/Mono (11194): DllImport 错误加载库 '/system/lib/libe_sqlite3': 'dlopen failed: library"/data/app/com. psonar.android-1/lib/x86//system/lib/libe_sqlite3" 未找到'。12-01 10:43:05.372 D/Mono (11194): DllImport error loading library '/system/lib/libe_sqlite3.so' :'dlopen 失败:库“/data/app/com.psonar.android-1/lib/x86//system/lib/libe_sqlite3.so”未找到'。12-01 10:43:05.372 D/Mono (11194 ):加载库'libe_sqlite3'的DllImport错误:'dlopen失败:找不到库“/data/app/com.psonar.android-1/lib/x86/libe_sqlite3”'。12-01 10:43:05.372 D/Mono (11194):DllImport 错误加载库“libe_sqlite3.so”:“dlopen 失败:库”/data/app/com.psonar.android-1/lib/x86/libe_sqlite3.so"未找到'。12-01 10:43:05.373 D/Mono (11194): DllImport 错误加载库'libe_sqlite3':'dlopen失败:找不到库“/data/app/com.psonar.android-1/lib/x86/libe_sqlite3”。12-01 10:43:05.373 W/Mono(11194):DllImport 无法加载库“dlopen 失败:找不到库“/data/app/com.psonar.android-1/lib/x86/libe_sqlite3”。/data/app/com.psonar.android-1/lib/x86/libe_sqlite3“未找到”。/data/app/com.psonar.android-1/lib/x86/libe_sqlite3“未找到”。

很明显出了什么问题:System.DllNotFoundException: e_sqlite3但是我找不到任何可以解决这个问题的相关信息。

我检查了我的 nuget 包,它们似乎都已正确安装。

在此处输入图像描述

我检查了包裹位置,一切都正确。非常不确定原因可能在哪里。

编辑: 在这里向包的作者报告: https ://github.com/praeclarum/sqlite-net/issues/478

4

2 回答 2

7

nuget 包也必须安装在我们的主 droid 应用程序项目中。如果它安装在不是应用程序启动项目的解决方案项目中,则会产生这些问题。

于 2016-12-05T07:22:22.050 回答
0

我知道那是一篇旧帖子,很抱歉,要回答无法解决问题的@sagar-panwala,最简单的方法是解决该问题而不会对 nu-get 插件感到生气,将 .droid 项目设置为“StartupProject " 为 android 编译时:

在此处输入图像描述

原来的nuget包中可能有错误。

于 2018-05-30T12:56:51.990 回答