gpt4 book ai didi

java - 将 ".so"库添加到我的 android studio 项目

转载 作者:行者123 更新时间:2023-11-30 09:00:09 27 4
gpt4 key购买 nike

当我尝试将 spatialite 数据库添加到我的 android studio projet 时遇到问题。我遵循了本教程 https://www.gaia-gis.it/fossil/libspatialite/wiki?name=spatialite-android-tutorial ,如前所述,我在我的项目中添加了两个文件夹:

  1. 原生 spatialite 库:它们位于我的 App 目录中名为 libs 的文件夹中,并包含多个用于不同平台的文件夹,其中包含名为 libspatialite.so 的主库

  2. 基本的 API 类,包含在 jsqlite 包中

尽管如此,我还是收到了这个错误:

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)

我错过了什么吗?

最佳答案

这听起来很像是您没有为您的模拟器包含合适版本的 NDK。根据 Android docs ,以下平台支持Android NDK

  • ARM
  • ARM-NEON
  • x86
  • MIPS

目前最常见的真实设备是 ARM (armeabi-v7a)。事实上,对于已发布的构建,不包含除此之外的任何内容可能几乎没有损失。但是模拟器通常可以在 x86 上运行。我知道我有一个 x86 的 NDK 文件,每次我准备好构建发布时我都会删除它,并在我想使用我的桌面模拟器时重新添加。

关于java - 将 ".so"库添加到我的 android studio 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26916323/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com