1

sqlite データ ストア (sqlite-net を使用) を使用する Xamarin アプリがあります。ARC Welder を使用して Windows マシンでアプリを起動すると、エラーが発生します。

E/mono-rt (  204): [ERROR] FATAL UNHANDLED EXCEPTION: 
    System.DllNotFoundException: /system/lib/libsqlite.so
E/mono-rt (  204): at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () <0x00028>
E/mono-rt (  204): at Android.Runtime.JNIEnv.NewString (string) <0x00093>
E/mono-rt (  204): at Java.Lang.Throwable..ctor (string) <0x0003b>
E/mono-rt (  204): at Android.Runtime.JavaProxyThrowable..ctor (System.Exception) <0x0001f>
E/mono-rt (  204): at Java.Lang.Throwable.FromException (System.Exception) <0x0009f>
E/mono-rt (  204): at Android.Runtime.AndroidEnvironment.UnhandledException (System.Exception) <0x0015f>

この問題を解決する方法はありますか? ARC Welder で実行される sqlite をネイティブに使用する Android Java アプリを作成することは可能ですか、または sqlite は ARC で利用できないものですか?

4

2 に答える 2

2

ARC が /system/lib フォルダーを作成しない場合、これを解決する可能性のある同様の問題に対する回答を次に示します。アプリが起動したら、自分の sqlite.so にその部分を PATH 環境変数の先頭に追加します。( https://github.com/praeclarum/sqlite-net/issues/343にあります)

string path=Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "lib");
Environment.SetEnvironmentVariable("PATH", path+";"+Environment.GetEnvironmentVariable("PATH"), EnvironmentVariableTarget.Process);

Android 用 Sqlite: https://www.sqlite.org/android/doc/trunk/www/index.wiki

于 2015-06-12T15:27:36.147 に答える
1

ARC は /system/lib ディレクトリを作成しません。Android フレームワーク内部で SQLite を使用しますが、パフォーマンス上の理由から静的ライブラリを使用します。

ただし、アプリケーションが独自に使用するために共有ライブラリをロードすることは合理的と思われます。バグを報告してください。

今すぐ本当に必要な場合は、ARC の .APK に libsqlite.so を含めることができます。ただし、別の場所から.soをロードするためにsqlite-netに何をしなければならないかわかりません。

于 2015-04-13T18:49:29.850 に答える