Android - ' SQLite.SQLiteConnection'的类型初始值设定项。抛出一个例外。 ---> System.DllNotFoundException:e_sqlite3

时间:2016-12-01 09:54:03

标签: android xamarin xamarin.android sqlite-net sqlite-net-extensions

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

enter image description here

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

  

' SQLite.SQLiteConnection'的类型初始值设定项抛出一个例外。   ---> System.DllNotFoundException:e_sqlite3

完全例外:

  

Xamarin引起的:android.runtime.JavaProxyThrowable:   System.TypeInitializationException:类型初始值设定项   ' SQLite.SQLiteConnection'抛出一个例外。 --->   System.DllNotFoundException:e_sqlite3 at(包装器   托管到本机)   SQLitePCL.SQLite3Provider_e_sqlite3 + NativeMethods:sqlite3_libversion_number   () 在   SQLitePCL.SQLite3Provider_e_sqlite3.SQLitePCL.ISQLite3Provider.sqlite3_libversion_number   ()[0x00000] in:0 at   SQLitePCL.raw.SetProvider(SQLitePCL.ISQLite3Provider imp)[0x00000]   在< 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 ---结束   内部异常堆栈跟踪--- at   mono.android.view.View_OnClickListenerImplementor.n_onClick(母语   方法)at   mono.android.view.View_OnClickListenerImplementor.onClick(View_OnClickListenerImplementor.java:30)     在android.view.View.performClick(View.java:4780)at   android.view.View $ PerformClick.run(View.java:19866)at   android.os.Handler.handleCallback(Handler.java:739)at   android.os.Handler.dispatchMessage(Handler.java:95)at   android.os.Looper.loop(Looper.java:135)at   android.app.ActivityThread.main(ActivityThread.java:5254)at   java.lang.reflect.Method.invoke(Native Method)at   java.lang.reflect.Method.invoke(Method.java:372)at   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:903)     在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

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

  

12-01 10:43:05.356 D / Mono(11194):DllImport试图加载:   ' e_sqlite3&#39 ;. 12-01 10:43:05.358 D / Mono(11194):DllImport错误   加载库   ' /storage/emulated/0/Android/data/com.psonar.android/files / 替换 / libe_sqlite3&#39 ;:   ' 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失败:库   " /data/app/com.psonar.android-1/lib/x86//system/lib/libe_sqlite3"不   发现&#39 ;. 12-01 10:43:05.360 D / Mono(11194):DllImport错误加载   library' /system/lib/libe_sqlite3.so':' dlopen失败:library   " /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"找不到'。   12-01 10:43:05.361 D / Mono(11194):DllImport错误加载库   ' libe_sqlite3.so':' dlopen failed:library   " /data/app/com.psonar.android-1/lib/x86/libe_sqlite3.so"找不到'。   12-01 10:43:05.361 D / Mono(11194):DllImport错误加载库   ' e_sqlite3':' dlopen failed:library   " /data/app/com.psonar.android-1/lib/x86/e_sqlite3"找不到'。 12-01   10:43:05.362 D / Mono(11194):DllImport错误加载库   ' /storage/emulated/0/Android/data/com.psonar.android/files / 替换 / libe_sqlite3&#39 ;:   ' 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.so"   找不到'。 12-01 10:43:05.364 D / Mono(11194):DllImport错误   加载库' / system / lib / libe_sqlite3':' dlopen失败:库   " /data/app/com.psonar.android-1/lib/x86//system/lib/libe_sqlite3"不   发现&#39 ;. 12-01 10:43:05.364 D / Mono(11194):DllImport错误加载   library' /system/lib/libe_sqlite3.so':' dlopen失败:library   " /data/app/com.psonar.android-1/lib/x86//system/lib/libe_sqlite3.so"   找不到'。 12-01 10:43:05.364 D / Mono(11194):DllImport错误   加载库' libe_sqlite3':' dlopen failed:library   " /data/app/com.psonar.android-1/lib/x86/libe_sqlite3"找不到'。   12-01 10:43:05.364 D / Mono(11194):DllImport错误加载库   ' libe_sqlite3.so':' dlopen failed:library   " /data/app/com.psonar.android-1/lib/x86/libe_sqlite3.so"找不到'。   12-01 10:43:05.365 D / Mono(11194):DllImport错误加载库   ' 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&#39 ;. 12-01 10:43:05.366 D / Mono(11194):DllImport错误   加载库   ' /storage/emulated/0/Android/data/com.psonar.android/files / 替换 / libe_sqlite3&#39 ;:   ' 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失败:库   " /data/app/com.psonar.android-1/lib/x86//system/lib/libe_sqlite3"不   发现&#39 ;. 12-01 10:43:05.368 D / Mono(11194):DllImport错误加载   library' /system/lib/libe_sqlite3.so':' dlopen失败:library   " /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"找不到'。   12-01 10:43:05.368 D / Mono(11194):DllImport错误加载库   ' libe_sqlite3.so':' dlopen failed:library   " /data/app/com.psonar.android-1/lib/x86/libe_sqlite3.so"找不到'。   12-01 10:43:05.369 D / Mono(11194):DllImport错误加载库   ' e_sqlite3':' dlopen failed:library   " /data/app/com.psonar.android-1/lib/x86/e_sqlite3"找不到'。 12-01   10:43:05.370 D / Mono(11194):DllImport错误加载库   ' /storage/emulated/0/Android/data/com.psonar.android/files / 替换 / libe_sqlite3&#39 ;:   ' 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失败:库   " /data/app/com.psonar.android-1/lib/x86//system/lib/libe_sqlite3"不   发现&#39 ;. 12-01 10:43:05.372 D / Mono(11194):DllImport错误加载   library' /system/lib/libe_sqlite3.so':' dlopen失败:library   " /data/app/com.psonar.android-1/lib/x86//system/lib/libe_sqlite3.so"   找不到'。 12-01 10:43:05.372 D / Mono(11194):DllImport错误   加载库' libe_sqlite3':' dlopen failed:library   " /data/app/com.psonar.android-1/lib/x86/libe_sqlite3"找不到'。   12-01 10:43:05.372 D / Mono(11194):DllImport错误加载库   ' libe_sqlite3.so':' dlopen failed:library   " /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"找不到'。

显而易见的是: System.DllNotFoundException:e_sqlite3 但是我无法找到任何可以解决此问题的相关信息。

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

enter image description here

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

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

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:0)

我知道这是一个很老的帖子,很抱歉恢复, 要回答无法解决问题的@ sagar-panwala,最简单的方法是解决这个问题,而不会因为nu-get插件而烦恼,将.droid项目设置为" StartupProject"在为android编译时:

enter image description here

原始nuget包中可能存在错误。