Micka
Fortgeschrittenes Mitglied
- 1
Hallo,
ich möchte gerne innerhalb einer Android-App die UpscaledDB testen. Laut Entwickler soll diese unter Android nutzbar sein. Mein Verständnisproblem beschreibe ich im weiteren ausführlich, nur der Einfachheit halber hier einmal in der Kurzfassung. Der Entwickler schreibt folgendes:
Ausführliche Beschreibung:
Ich habe mit dem Entwickler der UpscaleDB einige Emails geschrieben um zu erfahren ob und wie die Datenbank in einer Android-Anwendung eingebunden werden kann.
Zunächst schrieb er:
Daraufhin habe ich mir ein Tutorial gesucht (Create Hello-JNI with Android Studio) und mich erstmal eingelesen wie die Geschichte mit dem JNI Interface funktioniert. Das ganze habe ich auch an einem neuen Projekt im Android Studio nachvollzogen. Soweit so gut, wie ich etwas C Code in meiner Android-App ausführe habe ich nun verstanden.
In einer weiteren Email des Entwicklers der UpscaleDB hies es:
Ich habe mich bisher nicht wirklich mit C beschäftigt, das ganze zu kompilieren habe ich nicht verstanden. Eine Nachfrage zu weiteren Hinweisen diesbezüglich wurde ebenfalls beantwortet.
Also habe ich die Windows Dateien ebenfalls runtergeladen.
(upscaledb - embedded database technology -> Win32 compiled libraries ->http://files.upscaledb.com/dl/upscaledb-win32-2.2.0.zip)
Wie ich festgestellt habe enthält der Download jedoch keine fertige Jar-Bibliothek. Okay, das ist halb so wild. Lädt man sich von der Webseite das aktuelle Projekt (upscaledb - embedded database technology -> Sources -> http://files.upscaledb.com/dl/upscaledb-2.2.0.tar.gz) enthält dies ein Java Unterverzeichnis, Laut Entwickler der Datenbank kann dies über die win32.bat kompiliert werden um eine Jar-Datei zu erhalten. Dies klappt auch.
Nun habe ich also die benötigte jar Datei. die folgende Aussage verwirrt mich aber noch:
Ich weiß wie ich die Jar Datei in Android Studio in mein Projekt importiere. (Einfache file Dependency), aber wie importiere ich auch die DLL Dateien? Muss ich die überhaupt importieren oder reicht es die beiden DLL Dateien einfach in den "libs" Ordner zu kopieren wo sich auch die Jar Datei befindet?
ich möchte gerne innerhalb einer Android-App die UpscaledDB testen. Laut Entwickler soll diese unter Android nutzbar sein. Mein Verständnisproblem beschreibe ich im weiteren ausführlich, nur der Einfachheit halber hier einmal in der Kurzfassung. Der Entwickler schreibt folgendes:
Wie soll ich das verstehen? Müssen die DLL Dateien auch importiert werden? Wenn ja wie?Damit die jar-Datei korrekt geladen werden kann muss upscaledb-java.dll und upscaledb-2.2.0.dll im Pfad liegen.
Ausführliche Beschreibung:
Ich habe mit dem Entwickler der UpscaleDB einige Emails geschrieben um zu erfahren ob und wie die Datenbank in einer Android-Anwendung eingebunden werden kann.
Zunächst schrieb er:
Es gibt eine Java-API die das JNI-Interface benutzt. Damit lässt sich upscaledb aus Java heraus nutzen.
Man muss also zuerst den Native Code für Android mit dem NDK compilieren (wie z.B. hier beschrieben:
Building existing autotools C/C++ projects on Android | DanielPocock.com)
und dann sollte man die JNI-Bibliothek nutzen können.
Einige Dependencies müssen nicht zwingend portiert werden: openssl, libuv, zlib und snappy sind optional. Falls man auf Verschlüsselung und (teilweise) Kompression verzichtet werden sie nicht benötigt.
Daraufhin habe ich mir ein Tutorial gesucht (Create Hello-JNI with Android Studio) und mich erstmal eingelesen wie die Geschichte mit dem JNI Interface funktioniert. Das ganze habe ich auch an einem neuen Projekt im Android Studio nachvollzogen. Soweit so gut, wie ich etwas C Code in meiner Android-App ausführe habe ich nun verstanden.
In einer weiteren Email des Entwicklers der UpscaleDB hies es:
als erstes musst Du upscaledb compilieren; entweder als statische Bibliothek (upscaledb.a) oder dynamische (upscaledb.so).
Danach musst Du das JNI-Projekt compilieren, wie es auch im Tutorial beschrieben ist. Das sollte eine dynamische Bibliothek erzeugen (upscaledb-java.so), die im Pfad installiert werden muss.
Hier ist das JNI-Projekt:
upscaledb/java/src at master · cruppstahl/upscaledb · GitHub (die Datei heißt upscaledb.cc).
Das JNI-Projekt muss entweder statisch gegen upscaledb linken, oder die dynamische upscaledb-Bibliothek muss im Pfad sein.
Danach kannst du die upscaledb-Java-Bibliothek benutzen:
upscaledb/java/java at master · cruppstahl/upscaledb · GitHub
Diese Java-Klassen laden die upscaledb-java.so-Datei und greifen darauf zu. Dann kann mit der Java-API upscaledb benutzt werden. Hier ist ein sample:
upscaledb/DatabaseTest.java at master · cruppstahl/upscaledb · GitHub
Ich habe mich bisher nicht wirklich mit C beschäftigt, das ganze zu kompilieren habe ich nicht verstanden. Eine Nachfrage zu weiteren Hinweisen diesbezüglich wurde ebenfalls beantwortet.
Unter Windows ist der kostenlose Compiler von Microsoft ganz gut (Visual Studio Express). Allerdings findest Du die für Windows compilierten Dateien auch auf der Webseite unter upscaledb.com/download. Da ist auch eine upscaledb-java.dll enthalten, sowie die jar-Datei mit den Java-Bibliotheken. Damit die jar-Datei korrekt geladen werden kann muss upscaledb-java.dll und upscaledb-2.2.0.dll im Pfad liegen.
Also habe ich die Windows Dateien ebenfalls runtergeladen.
(upscaledb - embedded database technology -> Win32 compiled libraries ->http://files.upscaledb.com/dl/upscaledb-win32-2.2.0.zip)
Wie ich festgestellt habe enthält der Download jedoch keine fertige Jar-Bibliothek. Okay, das ist halb so wild. Lädt man sich von der Webseite das aktuelle Projekt (upscaledb - embedded database technology -> Sources -> http://files.upscaledb.com/dl/upscaledb-2.2.0.tar.gz) enthält dies ein Java Unterverzeichnis, Laut Entwickler der Datenbank kann dies über die win32.bat kompiliert werden um eine Jar-Datei zu erhalten. Dies klappt auch.
Nun habe ich also die benötigte jar Datei. die folgende Aussage verwirrt mich aber noch:
Damit die jar-Datei korrekt geladen werden kann muss upscaledb-java.dll und upscaledb-2.2.0.dll im Pfad liegen.
Ich weiß wie ich die Jar Datei in Android Studio in mein Projekt importiere. (Einfache file Dependency), aber wie importiere ich auch die DLL Dateien? Muss ich die überhaupt importieren oder reicht es die beiden DLL Dateien einfach in den "libs" Ordner zu kopieren wo sich auch die Jar Datei befindet?