2

Spatialite データベースを Android Studio プロジェクトに追加しようとすると問題が発生します。プロジェクトに2つのフォルダーを追加しました:

  1. ネイティブ Spatialite ライブラリ: これらは、私のアプリ ディレクトリの libs という名前のフォルダーに配置され、libspatialite.so というメイン ライブラリを保持するさまざまなプラットフォーム用のフォルダーがいくつか含まれています。

  2. jsqlite パッケージに含まれる基本的な API クラス

これにもかかわらず、私はこのエラーが発生しています:

11-13 13:52:17.358    1853-1853/liara.geodatamining W/System.err﹕ Unable to load sqlite_jni: java.lang.UnsatisfiedLinkError: Couldn't load proj from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/liara.geodatamining-2.apk"],nativeLibraryDirectories=[/data/app-lib/liara.geodatamining-2, /system/lib]]]: findLibrary returned null
11-13 13:52:17.358    1853-1853/liara.geodatamining W/dalvikvm﹕ No implementation found for native Ljsqlite/Database;.internal_init:()V
11-13 13:52:17.358    1853-1853/liara.geodatamining W/dalvikvm﹕ Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Ljsqlite/Database;
11-13 13:52:17.358    1853-1853/liara.geodatamining W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xb2d19b20)
11-13 13:52:17.358    1853-1853/liara.geodatamining E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: liara.geodatamining, PID: 1853
    java.lang.UnsatisfiedLinkError: Native method not found: jsqlite.Database.internal_init:()V
            at jsqlite.Database.internal_init(Native Method)
            at jsqlite.Database.<clinit>(Database.java:951)
            at liara.geodatamining.map.onCreate(map.java:116)
            at android.app.Activity.performCreate(Activity.java:5231)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)  

何か足りないのですか?

4

2 に答える 2

1

.so ファイルのみを使用し、C/C++ ソースを自分でコンパイルしない場合、NDK は必要ありません。

Android Studio では、.so ファイルをドロップする場所は Eclipse と同じではありません。これでjniLibs/<ABI>、ABI がarmeabiarmeabi-v7ax86x86_64mipsmips64arm64-v8a のいずれかになります。

lib/<abi>APK を zip ファイルとして開き、.so ファイルがフォルダー内にあることを確認するだけで、.so ファイルが適切に統合されていることを確認できます。

于 2015-02-06T17:15:42.483 に答える