Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi Firemonkey mobile - Android deployment (https://www.delphipraxis.net/192228-firemonkey-mobile-android-deployment.html)

AnCorr 30. Mär 2017 20:16

Firemonkey mobile - Android deployment
 
Hallo,

nach langer Abwesenheit (auch vom Programmieren) habe ich mal wieder ein Problem bei dem ich nicht mehr weiterkomme, und eure Hilfe brauche.

Ich habe seit Jahren auf Linux einen Webserver laufen. Unter Anderem habe ich dort auch mein "Rezeptbuch" abgelegt.
Bisher habe ich mit die Rezepte immer per Internetbrowser angesehen. Das "Rezeptbuch" ist mittels PHP, HTML, Javascrip, CSS und einer MySQL Datenbank aufgebaut.
Ich moechte mir nun eine Windows/Android-App programmieren, mit der ich mir die Rezepte ebenfalls ansehen kann. Zum Einen moechte ich damit meine Programmierkenntnisse in Richtung Android erweitern, zum Anderen moechte ich in die Android-App auch die Moeglichkeit zur Erstellung einer Einkaufsliste einbauen.

Ich habe schon eine - unter Windows - komplett funktionierende Anwendung (Multi-Device-Anwendung).
Die Anwendung verwendet von dbexpress eine SQLConnection-Komponente und eine SQLQuery-Komponente.

Die Anwendung laesst sich auch kompilieren und auf eines meiner Android-Geraete uebertragen, tut dort aber nichts. Der Bildschirm bleibt schwarz und irgendwann meldet das System, dass die Anwendung "haengt".

Das Ganze haengt nur mit den Datenbankkomponenten zusammen. Nehme ich die Aufrufe zum Verbinden mit dem Datenbankserver und Einlesen der Rezeptdaten heraus (auskommentieren), laeuft die Anwendung (was dann noch an "Funktion" uebrigbleibt) auch unter Android.

Um dem Problem auf den Grund zu gehen, habe ich nun einfach mal eine neue Anwendung erzeugt, welche nur ein paar Controls wie Labels und Buttons hat, um zu sehen was sich auf dem Android-Geraet tut. -> Funktioniert natuerlich ohne Probleme.
Dann habe ich die dbexpress-Komponenten (siehe oben) hinzugefuegt (ohne jegliche Funktion). Auch dann funktioniert die App noch.
Ich kann die SQL-Connection-Komponente auch konfigurieren (per Programmcode) und auch die Query-Komponente mit SQL Strings fuettern. All das funktioniert noch. D. h., die App startet und zeigt die verwendeten Buttons und Labels.

Sobald ich aber einen Open- oder EcexSQL-Befehl absetze, oder die SQL-Connection-Komponente auf "Connected = true" setze, tut sich bei der Android App nichts mehr.

Ich denke, dass es daran liegt, dass die Dateien dbxmys.dll und libmysql.dll nicht auf die Android-Geraete uebertragen werden.

Ich habe diese in der "Deployment-Konfiguration" angegeben. Ausprobiert habe ich als Zielverzeichnisse schon ".\", "library\lib\armeabi-v7a" und "library\lib\armeabi".
Aber ich kann die Dateien auf den Geraeten (sind bis auf eines gerootet) nicht finden.
Ich habe noch eine andere Anwendung programmiert habe, welche zusaetzliche Dlls (BASS fuer Mp3) benoetigt. Bei dieser werden die Dlls auf die Geraete uebertragen.
Ich kann keinen Unterschied feststellen, wenn ich bei beiden Anwendungen die "Deployment-Konfiguration" vergleiche (was die zusaetzlichen Dlls anbelangt).

Nun meine Fragen:
Hat schon jemand eine Android App entwickelt, welche mittels dbxpress-Komponenten auf eine MySQL-Datenbank zugreift? Wenn ja, wo genau muessen welche Dateien mit ausgeliefert werden?
Ich habe (hier) schon eine Threads gesehen, wo "letztendlich" auf REST, SOAP oder Datasnap "ausgewichen" wird. Da es sich bei mir um meine "ganz persoenliche" Webseite/Datenbank mit etwa 400 Rezepten geht, moechte ich nach Moeglichkeit keine weitern "Server-/Client-Anwendungen/-Komponenten" ins Spiel bringen.

Ich habe mir diesbezueglich auch schon diverse Youtube-Videos angesehen, aber dabei werden immer nur Windows-Anwendungen gezeigt, welche ja bei mir auch schon wunderbar funktioniert. Wie dies aber ganz genau mit Firemonkey Mobile und Android funktioniert, habe ich leider nicht gefunden.

Meine Konfiguration:
Windows 7
Delphi 10 Seattle
(ich habe auch noch aeltere Delphi-Versionen, aber dort steht die Webbrowser-Komponente nicht fuer Android zur Verfuegung)
Diverse Android-Geraete mit den unterschiedlichsten Android-Versionen (Galaxy S1 Android 2.3.5 gerootet, Galaxy S2 Android 4.1.2 gerootet, Galaxy S5 Android 6.0.1 gerootet, Galaxy Note 10.1 2014 Android 5.1.0 gerootet, Galaxy S7 Edge Android 7.0 Samsung Stock-ROM)


Ich hoffe, ihr seid beim Lesen nicht eingeschlafen. Ich wollte euch gleich so viele Informationen wie moeglich geben.


Danke fuer's Durchlesen und eure Hilfe/Kommentare im Voraus! :-)


AnCorr

mkinzler 31. Mär 2017 06:51

AW: Firemonkey mobile - Android deployment
 
Eine direkte Verbindung zu einer Datenbank ist bei mobilen Geräten nicht die richtige Lösung. Ich würde dies entkoppeln, in dem man eine Zwischenschicht einbaut ( z.B. Rest(ful)service).

Mavarik 31. Mär 2017 10:55

AW: Firemonkey mobile - Android deployment
 
Zitat:

Zitat von AnCorr (Beitrag 1366026)
Ich denke, dass es daran liegt, dass die Dateien dbxmys.dll und libmysql.dll nicht auf die Android-Geraete uebertragen werden.

Ich habe diese in der "Deployment-Konfiguration" angegeben. Ausprobiert habe ich als Zielverzeichnisse schon ".\", "library\lib\armeabi-v7a" und "library\lib\armeabi".

emmm... DLL? Android? OK.. Nicht das ich etwas falsches sagen, ich habe mit Android auf Intel-CPU keine Erfahrung. Aber normalerweise sind DLL's Intel-Code und Android hat i.d.R. eine ARM CPU...

Mavarik

mkinzler 31. Mär 2017 10:57

AW: Firemonkey mobile - Android deployment
 
Android hat selbst auf x86/x64 keine "Dll"s sondern "so"s.

Mavarik 31. Mär 2017 11:00

AW: Firemonkey mobile - Android deployment
 
Zitat:

Zitat von mkinzler (Beitrag 1366047)
Android hat selbst auf x86/x64 keine "Dll"s sondern "so"s.

Dachte ich mir... Hast Du ein Android/Intel Device?

mkinzler 31. Mär 2017 11:10

AW: Firemonkey mobile - Android deployment
 
Windows: Dll
Android(Linux): so
MacOS: dylib

AnCorr 31. Mär 2017 13:50

AW: Firemonkey mobile - Android deployment
 
Hallo,

danke schon mal fuer die rege Anteilnahme, auch wenn es mich nicht direkt weiterbringt.

Ja, auf Android (Linux) gibt es keine Dlls. Ich bin davon ausgeganen, dass sich das RAD Studio darum kuemmert einen "Wrapper" dafuer zu erzeugen, oder was auch immer. Ich habe bei meinen stundenlangen Suchen im Internet (auch bei Stackoverflow) immer wieder nur gelesen, dass man die genannten Dlls mit "verteilen" muss.
Mittlerweile nehme ich auch an, dass dort mal wieder alles falsch verstanden wurde, und bei den Antworten dann nur noch auf das "Firemonkey", aber nicht mehr auf das "mobile Android" geachtetet wurde.
Es gibt somit scheinbar niemanden, der soetwas schon einmal funktionsfaehig umgesetzt hat.

Mittlerweile habe ich mich auch schon mal stundenlang mit REST auseinandergesetzt. Habe mir auf meine Synology Tomcat installiert und auch "sqlrest" installiert. Die Dokumentation ist sehr spaerlich und ich komme damit ueberhaupt nicht klar. Auch "Rester" habe ich ausprobiert, aber da scheitert es schon an der Datenbankanbindung. Obwohl meine Zugangsdaten in der config.php korrekt angegeben sind, erhalte ich beim Seitenaufruf nur "Authentication error".

Na ja, ich werde noch etwas weiter forschen. Vielleicht findet sich ja noch eine, mit "relativ akzeptablen Aufwand" zu implenentierende Loesung.


Gruss
AnCorr

MEissing 31. Mär 2017 16:00

AW: Firemonkey mobile - Android deployment
 
dbExpress und auch FireDAC sind nicht dafür ausgelegt direkt von Android auf einen DB-Server zuzugreifen.

Es gibt zwei Ausnahmen (bei FireDAC): SQLite und InterBase (bedingt: da nur IBLite/IB ToGo vorgesehen sind... direktes TCP/IP auf einem IB-Server geht aber auch ("Kids! Don't do this at home!"))

Alternativen: UniDAC von DevArt

AnCorr 31. Mär 2017 16:54

AW: Firemonkey mobile - Android deployment
 
Zitat:

Zitat von MEissing (Beitrag 1366079)
dbExpress und auch FireDAC sind nicht dafür ausgelegt direkt von Android auf einen DB-Server zuzugreifen.

Es gibt zwei Ausnahmen (bei FireDAC): SQLite und InterBase (bedingt: da nur IBLite/IB ToGo vorgesehen sind... direktes TCP/IP auf einem IB-Server geht aber auch ("Kids! Don't do this at home!"))

Alternativen: UniDAC von DevArt

Die Komponente von Devart habe ich auch schon gefunden. Aber 200 Dollar nur fuer eine App, die ich wahrscheinlich gerade mal fuer mich und evtl. ein paar Freunde schreibe, scheint mir im Moment etwas viel. :-)
Ich moechte die App ja nicht vermarkten. Dafuer ist das "Ganze drumherum" viel zu speziell auf meine Beduerfnisse zugeschnitten.
Danke trotzdem fuer die Information!


Gruss
AnCorr

Mavarik 1. Apr 2017 10:54

AW: Firemonkey mobile - Android deployment
 
Zitat:

Zitat von AnCorr (Beitrag 1366072)
Mittlerweile habe ich mich auch schon mal stundenlang mit REST auseinandergesetzt. Habe mir auf meine Synology Tomcat installiert und auch "sqlrest" installiert. Die Dokumentation ist sehr spaerlich und ich komme damit ueberhaupt nicht klar. Auch "Rester" habe ich ausprobiert, aber da scheitert es schon an der Datenbankanbindung. Obwohl meine Zugangsdaten in der config.php korrekt angegeben sind, erhalte ich beim Seitenaufruf nur "Authentication error".

Na ja, ich werde noch etwas weiter forschen. Vielleicht findet sich ja noch eine, mit "relativ akzeptablen Aufwand" zu implenentierende Loesung.

Eigentlich brauchst Du keine Frendkomponenten dafür...

"Einfaches" REST kannst Du auf dem Server in wenigen Zeilen erzeugen - zur "Not" schau dir mal SuperObjects an... Und auf der Kilent Seite ist es ähnlich.

Das einzige was dann ein bisschen Tipparbeit ist, ist CRUD umzusetzen.

Mavarik


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:22 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz