Я написал свои классы C ++, и теперь мне нужно создать библиотеку, чтобы использовать их на Android.Один класс обрабатывает базу данных, которую я подготовил заранее (она включает в себя картинки и строки).В Qt все работает нормально, поэтому код надежен.У меня есть проект Android в Eclipse, JNI, кажется, в порядке, так как во время выполнения Android не падает.Проблема в том, что база данных отсутствует.
Может кто-нибудь сказать мне, как включить его в проект таким образом, чтобы он был включен при сборке файла 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, мне нужно получить доступ к нему со стороны C ++ / JNI, используя nativelibrary.