Forum: PC-Programmierung Native Executables für Android-Systeme


von Jürgen W. (lovos)


Lesenswert?

Hallo,
mich würde interessieren, ob man mit einer entsprechenden 
Cross-Compiler-Umgebung Binärprogramme für Android compilieren kann 
(also kein Java/Dalvic Code) und starten.
Ausführen würde ich diese innerhalb "Vi IMproved Touch", also einer 
VIM-Portierung für Android.
Unter PC-OS kann man ja z.B. innerhalb VIM Binärprogramme starten (z.B. 
make), vielleicht geht das unter Android auch.
Die Programme sollen einen Inhalt aus einer Datei lesen und irgendein 
Ergebnis in einer anderen Datei ablegen, ein typischen Consolen-Programm 
halt.
Vielleicht hat das jemand schon gemacht und kann mir Tipps geben?

von adsf (Gast)


Lesenswert?

Da gibts von google AFAIK ein fertiges SDK für...

von Nelix, (Gast)


Lesenswert?

Android Native Delompent Kit:

http://developer.android.com/tools/sdk/ndk/index.html

Aber eine Android App ist IMMER eine Java App, die kann aber nativen 
Code aufrufen. Sprich: Eine native Anwendung braucht einen Java-Wrapper.

von Jürgen W. (lovos)


Lesenswert?

Hopla,
Ein c-programm mit main()-funktion, was auf stdout ausgibt, würde gar 
nicht funktionieren?
eine konsole gibt es aber (App "terminal emulator")

von Malte S. (maltest)


Lesenswert?

Und aus def Shell geht das auch. Kannst bestimmt auch irgendein Terminal 
dazu bringen, per Laucherverknüpfung direkt dieses Binary zu starten. 
Auch das wäre in gewissem Sinne ja schon ein Wrapper.

von Rolf M. (rmagnus)


Lesenswert?

Jürgen W. schrieb:
> Hopla,
> Ein c-programm mit main()-funktion, was auf stdout ausgibt, würde gar
> nicht funktionieren?

Möglich ist das auch. Allerdings ist es schwierig, ein solches Programm 
auf einem Gerät, das nicht gerootet ist, auszuführen. Die Verzeichnisse, 
auf die man überhaupt Schreibzugriff hat, liegen auf Filesystemen, die 
ohne executable-Rechte gemountet sind.

von Jürgen W. (lovos)


Lesenswert?

Gerootet ist es (noch) nicht. Entsprechende Tools (für Xperia Tipo) 
laufen nur unter Windows, das muss ich noch besorgen.
Ich muss noch anfügen, dass ich nicht unbedingt Native Code brauche, 
eine Scriptsprache wie Python tät's auch.
Da man unter PC-Systeme so einfach mit gcc (oder mingw32-gcc) 
Native-Programme erstellen kann, dachte ich, bei Android wäre das auch 
so.

Ich muss lediglich das Programm von einer Konsole/Shell aus starten 
können ("launchen"), z.B. innerhalb Vi IMproved mit
1
:!myprog
oder
1
:!python myscript.py arg1 arg2
Grundsätzlich kann der VIM in Andriod Executables launchen, z.B. :!pwd, 
:!ls -l /

Obwohl ich schon eine Python-Script App installiert habe, kennt die 
Shell nicht den python-Befehl. Vllt muss das Gerät dazu gerootet sein, 
wer weis.

von Nils Stec (Gast)


Lesenswert?

Das geht mit jedem ARM-linux-Cross-Compiler. Einfach compilieren, 
kopieren und ausführen.

von Bernd S. (bernds1)


Lesenswert?

Nils Stec schrieb:
> Das geht mit jedem ARM-linux-Cross-Compiler. Einfach compilieren,
> kopieren und ausführen.

Und die compilierten Programme kannst du unter Android laufen lassen? 
Wie bekommt z.B. ein beliebiger Cross-Compiler den Zugriff auf den 
GPS-Empfänger hin, oder den Magnetfeldsensor (oder andere Komponenten)? 
Ist die API von Android wirklich in jedem Linux-Crosscompiler enthalten?
Und wenn das so ist, wie bekommt man ein Programm gestartet in einem 
Verzeichnis, das keine execute-Rechte hat?

> ...Einfach compilieren,
> kopieren und ausführen.
Ich befürchte, so einfach ist das doch nicht, oder?
Erklär das mal bitte etwas genauer, wie du das meinst.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Ich bin mir jetzt nicht ganz sicher, aber mit Lazarus/Freepascal müsste 
das gehen. Google mal danach.

von Bernd S. (bernds1)


Lesenswert?

Stimmt, bei Lazarus steht als Zielplattform auch Android mit drin. Jetzt 
bin ich überrascht :-)
Damit muß ich mich mal beschäftigen.
Weiß jemand, ob man da nur Kommandozeilen-Programme (Ein- und Ausgabe 
über Terminal) schreiben kann oder auch grafische Programme mit GUI und 
dem Ansprechen der einzelnen Komponenten im Android wie Sensoren usw.?

Gruß Bernd

von Rolf M. (rmagnus)


Lesenswert?

Wenn du eine GUI haben willst, kannst du doch gleich eine App schreiben. 
Dann ist das einfacher.
Wenn du es nicht in Java programmieren willst, geht das auch, z.B. mit 
C++ und Qt, per Necessistas.

von Bernd S. (bernds1)


Lesenswert?

Rolf Magnus schrieb:
> Wenn du eine GUI haben willst, kannst du doch gleich eine App schreiben.
> Dann ist das einfacher.
> Wenn du es nicht in Java programmieren willst, geht das auch, z.B. mit
> C++ und Qt, per Necessistas.

Jetzt mal gaaanz langsam :-)
Das ist keine Antwort auf meine Frage.
Ich hatte gefragt, wie das ganze in Lazarus funktioniert und was man 
damit alles machen kann.
Und du schlägst mir vor, eine App zu schreiben und bringst dann noch C++ 
und Qt in die Diskussion.

Was hat das alles mit Lazarusprogrammen für Android zu tun?

Klär mich mal bitte auf, ok? :-)

von Rolf M. (rmagnus)


Lesenswert?

Ich hatte übersehen, daß du den Thread gekapert hast und dachte, du 
seist der ursprüngliche Poster. Der wollte Kommandozeilenprogramme in C 
schreiben, und da du jetzt dann noch mit GUI kamst, schien mir das die 
logische Weiterführung.

von Bernd S. (bernds1)


Lesenswert?

Rolf Magnus schrieb:
> Ich hatte übersehen, daß du den Thread gekapert hast und dachte, du
> seist der ursprüngliche Poster. Der wollte Kommandozeilenprogramme in C
> schreiben, und da du jetzt dann noch mit GUI kamst, schien mir das die
> logische Weiterführung.

Nee, is ja auch nicht schlimm. Ich habe nichts gekapert, aber ich wurde 
auf Lazarus hingewiesen und wollte als Gegenfrage nur wissen, was damit 
alles geht. Das konnte mir aber noch niemand beantworten. Ich will nicht 
unbedingt eine GUI, ich möchte nur wissen, was da möglich ist.

Gruß Bernd

von Tobi (Gast)


Lesenswert?


von Bernd S. (bernds1)


Lesenswert?

Danke, das kannte ich noch nicht. Ich bin schon eine Weile mit Lazarus 
unterwegs, aber daß damit auch Android als Zielplattform möglch ist, 
habe ich erst heute morgen erfahren. Deshalb wurde ich neugierig...

Ist ja erstmal genug Stoff zum Lesen. Danke nochmals :-)

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Fragen wegen Lazarus & Android werden am besten in diesem Forum 
beantwortet:
http://www.lazarusforum.de/
Da gab es neulich mal einen Thead dazu.

Ich programmiere schon seit vielen Jahren mit Lazarus und erstelle die 
EXE für Windows/Linux 32/64 Bit. Nur mit dem Android hatte ich noch nie 
etwas zu tun. Ich hatte nur mal was gelesen.

Dennoch kann man mit Lazarus das Programm unter Linux testen, 
anschließend für Android kompillieren und dort nutzen. Schwierig wird es 
wohl erst, wenn gewisse API Befehle vom Android nicht unterstützt 
werden.

Mein EleLa Quellcode läuft zu 99,8% mit beiden Betriebssystemen, den 
Rest muss ich mit Compillerschaltern umswitchen (z.B. Dateisystem 
Operationen).

von Bernd S. (bernds1)


Lesenswert?

Markus Müller schrieb:
> Fragen wegen Lazarus & Android werden am besten in diesem Forum
> beantwortet:
> http://www.lazarusforum.de/
> Da gab es neulich mal einen Thead dazu.
>
Da habe ich ab und zu mal was gelesen, wenn ich einen Tipp gesucht habe. 
Aber ich bin dort nicht angemeldet.
Ich werde mich dort auch mal in Sachen Androi umschauen. Danke!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.