【问题标题】:Cannot resolve corresponding JNI function - jsqlite无法解析对应的 JNI 函数 - jsqlite
【发布时间】:2017-03-17 07:36:03
【问题描述】:

我正在尝试将一个 android 项目从 Eclipse 转移到 android studio。该项目使用一个名为 jsqlite 的特殊数据库。在这个库中有一个名为 jsqlite.Database 的类,它有一些本地函数。当我将鼠标悬停在那些本机函数上时,我收到消息:

无法解析对应的JNI函数Java_jsqlite_Database__1open 报告 Java 中没有的本地方法声明 项目中找到对应的JNI函数

这条消息是针对这个原生函数的:

private native void _open(String filename, int mode)
    throws jsqlite.Exception;

这些路径下的项目中有 3 个 .so 文件:

app\libs\armeabi\libjsqlite.so
app\libs\armeabi-v7a\libjsqlite.so
app\libs\x86\libjsqlite.so

所以我的猜测是走错了路。我试图将它们移到其他位置,但没有成功。有什么想法可以尝试下一步吗?

更新

这是我的项目结构:

>app
 ->manifest
 ->java
   ->com.myapp.data
   ->jsqlite
 ->jniLibs
 ->res

【问题讨论】:

    标签: java android android-ndk


    【解决方案1】:

    您将库放在错误的文件夹中。

    这应该是正确的路径:

    ..\YourProject\app\src\main\jniLibs\armeabi\libjsqlite.so
    ..\YourProject\app\src\main\jniLibs\armeabi-v7a\libjsqlite.so
    ..\YourProject\app\src\main\jniLibs\x86\libjsqlite.so
    

    【讨论】:

    • 感谢您的回复。我尝试了所有可能的路径,但仍然遇到相同的错误。我用我的项目的文件结构更新了我的帖子,如果你想检查一下。
    • 您是否按照示例项目here的项目结构?使用 Android Studio,您应该有 2 个独立的模块,一个代表您的应用 (spatialite-android),另一个代表库 (spatialite-android-library)
    • 不,我没有。你能指导我吗?
    • 对不起,我从来没有使用过这个库。在此处阅读如何导入模块库developer.android.com/studio/projects/…。使用此处描述的 File->New->Import 模块功能
    • 感谢您的帮助
    猜你喜欢
    • 2018-07-05
    • 2017-10-12
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多