我编写了我的C++类,现在我必须创建库以在android上使用它们。一个类处理一个数据库,我事先准备好了它(它包括图片和字符串)。在Qt中它工作正常,所以代码是健壮的。我在Eclipse中有我的Android项目,JNI似乎没问题,因为在运行时android不会崩溃。问题是数据库遗漏。将sqlite数据库包含到C++ JNI项目中
有人能告诉我如何将它包含到项目中,以便通过构建apk文件包含它?已经看到了一个教程,解释将它放入资产文件夹并创建一个扩展Java类,但我不知道它是否也适用于i0m在JNI级别(使用C++)使用查询调用。
正如我以前悲伤,我没有错误,既没有编译,也没有运行时间。应用程序根本无法工作......因为没有数据库。当我将本地方法的定义留空时,它不会崩溃,所以它意味着对本地方法的调用可以正常工作。
一个例子,在C++类,我有:
bool Database::open() {
if (sqlite3_open(dataBaseName, &databaseConnection) == SQLITE_OK){
return true;
}
return false;
}
我叫它与本地通话:
JNIEXPORT void JNICALL Java_com_tamagotchi_ItemShop_openDatabase(JNIEnv *, jobject){
db->open();
}
... Java类:
static {
System.loadLibrary("nativeLib");
}
public native void openDatabase();
更新: 我见过一个例如数据库包含在资产文件夹中,并且可以使用getResources()。getAssets()。open(“some_file”)访问文件。问题是这是针对Java方面的,但我不需要从Java端访问它,我需要使用nativelibrary从C++/JNI端访问它。
你的问题被截断。请编辑它,并至少发布一些代码或错误消息 - 我们无法猜测出现了什么问题。 – Mat 2011-05-15 15:45:17