Code and Create

Scripting auf dem Gemini mit Bash

Alte Psionhasen werden es vermissen: OPL - eine auf Basic basierende Scriptumgebung. Etwas vergleichbares existiert auf Android nicht. Zumindest wird nichts mitgeliefert.

Mit DroidScript gibt es eine kommerzielle Lösung, welche über Javascript ähnliche, teilweise auch mehr Möglichkeiten zur Softwareentwicklung direkt unter Android bietet.

Der Vorteil gegenüber anderen Entwicklungsumgebungen wie zum Beispiel AIDE ist, dass keine komplexe Programmiersprache wie JAVA gelernt werden muss, sondern mit Javascript eine relativ einfache und mit den Erweiterungen in DroidScript dennoch sehr umfassende Möglichkeit zum Programmieren unter Android existiert.

An dieser Stelle soll es aber um eine quelloffene und freie Entwicklungsumgebung gehen.

Programme

Unsere Entwicklungsumgebung baut auf Termux und dem Turbo Editor auf.

Termux installiert man am Besten über f-droid und den Turbo Editor lädt man sich über Google Play herunter. Alternativ habe ich diese Version erstellt. Diese ist identisch mit der aktuellen GitHub-Version, bis auf das ein paar Standardeinstellungen geändert und die Google/Werbeeinblendungen deaktiviert wurden.

Achtung: Falls der normale Turbo Editor aus Google Play oder selbst kompiliert verwendet wird, muss vor der ersten Benutzung unter Einstellungen die Textkodierung auf UTF-8 umgestellt werden!

Termux einrichten

Termux an sich ist eine Kommandozeilenumgebung für Android, welche für sich genommen erstmal nicht zwingend fürs Programmieren gedacht ist. Über den Befehl apt ist es aber möglich, diverse Scriptsprachen zu installieren. Nachdem man die Pakete Termux und Termux:API installiert hat, sollte man folgende Befehle ausführen:

apt update; apt upgrade
termux-setup-storage
pkg install termux-api sqlite

Der erste Befehl aktualisiert die Installation, der zweite legt Verknüpfungen zum Android Speicherverzeichnis an und der dritte sorgt dafür, dass die Termux:API-Erweiterung nutzbar und sqlite3 als Datenbank verfügbar ist.

Lässt man sich mit ls/ls -la nun sein Termux-home anzeigen, stellt man fest, dass diverse Links zur virtuellen SD Karte von Android angelegt wurden:

$ ls
storage
$ ls -la storage/
dcim -> /storage/emulated/0/DCIM
downloads -> /storage/emulated/0/Download
external-1 -> /storage/151B-2C0E/Android/data/com.termux/files
movies -> /storage/emulated/0/Movies
music -> /storage/emulated/0/Music
pictures -> /storage/emulated/0/Pictures
shared -> /storage/emulated/0

(Ausgabe vereinfacht)

Lass uns loslegen!

Prinzipiell lässt sich mit Termux so ziemlich alles nutzen was unter Linux verfügbar ist. Bash ist quasi schon vorinstalliert und man kann somit auch direkt mit dem Scripten loslegen. Wer lieber mit Python oder Perl (...) arbeiten möchte, muss diese Scriptsprachen lediglich mit apt install python bzw. apt install perl nachinstallieren. Termux:API und sqlite3 lässt sich damit genauso gut nutzen.

Dank dem Projekt 'Learn X in Y minutes' und Bash scripting cheatsheet ist der Einstieg in Bash Script relativ leicht.

Programmieren im Turbo Editor / Beispiele

Grafische Nutzerein- und ausgaben

Wir öffnen nun den Turbo Editor und tappen auf "Neue Datei".

In unserem Beispiel nutzen wir das Termux:API um eine Nutzereingabe zu holen und diese dann auch über eine Meldung wieder auszugeben:

#!/bin/bash
nutzereingabe=$( termux-dialog -t "Wie lautet dein Name?" )
$( termux-toast "Dein Name lautet $nutzereingabe.")

Mit dem Diskettensymbol speichern wir das direkt unter /storage/emulated/0 mit dem Dateinamen nutzereingabe.sh.

Nun wechseln wir zurück zu Termux und starten das Script:

$ bash storage/shared/nutzereingabe.sh

Über dieses simple Beispiel hinaus bietet das Termux:API einige Möglichkeiten zur Nutzerinteraktion und einiges mehr. Hier findet sich eine Dokumentation der verfügbaren Befehle.

Datenbank

Bash Scripte bieten von Haus aus keine Datenbankfunktion, welche über Arrays o.ä. hinaus geht. Allerdings ist es recht einfach mittels sqlite3 auf dem gleichen Weg, wie man Termux:API verwendet diese Funktionalität nachzurüsten:

#!/bin/bash
#...
inhalteVonN=$( sqlite3 meineDatenbank.db "select * from n" )
#...

Empfehlenswerte Termux-Erweiterungen

Termux biete mit seinen Erweiterungen vielfältige Möglichkeiten, wie man seine fertigen Scripte auch grafisch oder bei bestimmten Ereignissen starten kann.

Termux:Boot ermöglicht es Scripte direkt beim Start des Gerätes auszuführen.

Termux:Task ist eine integration von Tasker, um Scripte zum Beispiel als App-Icon zu erstellen oder zu gewissen Ereignissen auszuführen.

Termux:Widget stellt ein Widget zur Verfügung.