Java 从Android应用程序中的共享库调用函数
我正在努力在Android应用程序中使用共享库 我已经下载了,并将它们解压缩到我的项目中的HelloSpatialite/app/src/main/jniLibs目录中。所以posts()说这就是在最近的androidstudio版本中需要做的所有事情 这是我的目录列表: HelloSpatialite/app/src/main/jniLibs]:ls-l/.so -rwxr-xr-x@1 user staff 7778576 Jun 16 22:40 armeabi-v7a/libjsqlite.so -rwxr-xr-x@1 user staff 7782620 Jun 16 22:30 armeabi/libjsqlite.so -rwxr-xr-x@1 user staff 12080476 Jun 16 22:51 x86/libjsqlite.so 我验证了共享库是否包含在APK中 但是,现在我无法使用此库中的类和函数 如果使用Java 从Android应用程序中的共享库调用函数,java,android,android-studio,shared-libraries,Java,Android,Android Studio,Shared Libraries,我正在努力在Android应用程序中使用共享库 我已经下载了,并将它们解压缩到我的项目中的HelloSpatialite/app/src/main/jniLibs目录中。所以posts()说这就是在最近的androidstudio版本中需要做的所有事情 这是我的目录列表: HelloSpatialite/app/src/main/jniLibs]:ls-l/.so -rwxr-xr-x@1 user staff 7778576 Jun 16 22:40 armeabi-v7a/libjsqlit
导入jsqlite.Database代码>,我将得到一个错误:(6,15)错误:来自Android Studio的包jsqlite不存在
我正试着跟着这条路走。本教程的代码示例来自eclipse时代,并且似乎以稍微不同的方式获得jsqlite包
有人能帮我走上正轨吗
编辑:我的代码(不包括共享对象)处于打开状态。我终于找到了答案
由于共享lib已经编译,我必须将相应的java文件名称空间保留在packagejsqlite代码>。当时真正的问题是弄清楚如何将这些java文件保持在顶级范围内
最后,我修改了模块的AndroidManifest.xml,使其不具有通常的“yourcompany.packagename”作用域,而只是使用了“packagename”。
通常:
<manifest
package="com.example.spatialite_database_driver">
</manifest>
变成
<manifest
package="spatialite_database_driver">
</manifest>
我不确定这是否是最理想的场景,但它可以让我的模块工作,而无需重新编译JNI代码
我在这里有成功设置此模块的过程:
以及使用该模块的应用程序链接
注意:对于这个模块,没有准备好的.jar或.aar文件可用,所以我在一个模块中使用共享对象+java src文件。您的AndroidManifest.xml
看起来像什么?您添加了
条目吗?我在本地的AndroidManifest.xml
中尝试了这个
,但没有明显的区别。您链接的归档文件只包含jni库,但我想您还需要一个java API jar来链接它们。