如何在android项目中包含sqlite4java

时间:2015-03-04 16:36:23

标签: java android eclipse

我想在我的android项目中使用sqlite4java。以下屏幕截图显示了我的项目设置:

My Project setup

正如您所看到的,我已将jar文件复制到我的libs文件夹中并将其包含在构建路径中。我还根据sqlite4java的文档复制了文档和src文件。我下载的zip文件还包含一个名为libsqlite4java-android-i686.so的库文件,我将其包含在libs目录中。我尝试运行我的项目时会得到什么(它会在没有抱怨的情况下编译)是以下错误信息:

03-04 07:37:13.251: W/System.err(2419): 
com.almworks.sqlite4java.SQLiteException: [-91] cannot load library: 
java.lang.UnsatisfiedLinkError: Couldn't load sqlite4java-android-i686 
from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data
/app/de.redhouse24.android-2.apk"],nativeLibraryDirectories=[/data
/app-lib/de.redhouse24.android-2, /system/lib]]]: findLibrary returned 
null

如您所见,找不到文件sqlite4java-android-i686.so。由于wiley,我将libsqlite4java-andriod-i686.so文件重命名为sqlite4java-android-i686.so,这就是我的项目结构显示文件名称的原因。我改名为TBH,因为我在这次讨论中找到了建议:
https://code.google.com/p/sqlite4java/issues/detail?id=42

我还试图在构建路径中包含so-file,但这只是阻止了我的项目编译。

我的问题:在我的android项目中使用sqlite4java需要做什么?

我使用mac和eclipse与adt,如果这有任何区别。

1 个答案:

答案 0 :(得分:2)

首先,重命名库对您没有帮助。不要重命名库,保留名称。

其次,你只有686-lib。 如果您打算在基于原子的设备之外的其他设备上运行您的应用程序,则还必须为其他体系结构添加so-files。 每个体系结构的so-files都位于libs目录下的子目录中,如下所示:

libs/x86
libs/armeabi
libs/armeabi-v7a

将libsqlite4java-android-i686.so文件放在那里,以及它可能需要的其他.so文件作为依赖项,它应该可以工作。

将源和文档包含在libs文件夹中有点让我无法理解。这只会膨胀你的最终apk文件,应该避免。 您的用户将会感激不尽。