Entwicklung von Ubuntu Touch Apps mit Python mit pyOtherSide
Ubuntu Touch Apps werden mit Qt5 und C++ entwickelt. Mit pyOtherSide können wir Python anstelle von C++ verwenden.
Wahrscheinlich kennen viele von euch nur zwei Handy-Betriebssysteme, iOS auf Apple -Telefonen und Googles Android auf allen anderen Telefonen (etwa 80%). Aber es gibt auch Ubuntu Touch (UT), das ursprünglich von Canonical Ltd. entwickelt und von UBports fortgesetzt wurde. Ich schreibe einen Beitrag darüber, weil ich UT auf einem Nexus 5 verwende und mich fragte, wie schwierig es sein würde, Apps dafür zu entwickeln. Als ich entdeckte, dass Sie Python anstelle von C++ verwenden können, dachte ich, dass ich Sie dazu verleiten könnte, in Ubuntu Touch zu schauen und eine App dafür zu entwickeln.
Meine Geschichte mit Ubuntu Touch
Ich habe den BQ Aquaris E4.5 Ubuntu Edition im April 2015 für mich und einen Freund bestellt, nachdem Ubuntu Touch 2014 veröffentlicht wurde. Nach etwa sechs Monaten der Updates wurden die meisten Probleme durch Ubuntu gelöst und das Telefon wurde zu meinem täglichen Treiber, wunderbarem Betriebssystem. Ich verlor das Telefon während einer Reise und wechselte zu Lineageos ohne Gaps. Obwohl Sicherheit ein ernstes Thema in den Android custom ROM Communities ist, ist die Privatsphäre nicht wirklich heiß, was bedeutet, dass fast alle custom ROMs'phone home' zu Google, beim Öffnen des Telefons, haben Standard-Kontaktsuche durch Google aktiviert, versuchen Sie, Ihren Standort zu extrahieren und zu senden, etc, ganz zu schweigen von all den Schwachstellen und schlechten Apps, von denen wir die ganze Zeit hören. Google tut einfach alles, um deine Daten zu bekommen, sie werden mit einer Geldstrafe belegt, aber fahren fort. Ich denke, man kann sie Diebe nennen. Krank davon habe ich kürzlich einen alten Nexus 5 gekauft, UT darauf geblitzt und bin wieder glücklich.
Ubuntu Touch heute
Das Team UBports hat im letzten Jahr enorme Fortschritte gemacht, aber es gibt noch viel zu tun. Um nur einige zu nennen. Gehen Sie zu Ubuntu 20.04. Es gibt ein Bluetooth Problem, das verhindert, dass du dein carkit benutzt (kein Ton während des Anrufs). Sie können eine Telefonnummer nicht sperren. Die Anzahl der Anwendungen ist begrenzt, und eine Reihe von Anwendungen werden noch ausgearbeitet. FluffyChat, ein Matrix -Client, unterstützt die Verschlüsselung end-to-end nicht. Dekko 2, der Mail-Client, wird aktualisiert. Dies ist der Preis, den Sie für die Privatsphäre zahlen.
Ubuntu Touch Anwendungsentwicklung
UT Anwendungen werden typischerweise mit Qt5 und C++ entwickelt. Glücklicherweise wurde pyOtherSide geschaffen, das es uns ermöglicht, Python aus QML heraus aufzurufen. Um die Entwicklung zu starten, müssen Sie Clickable installieren, siehe Links unten. Ich lasse Ubuntu 18.04 mit Python 3.6 laufen, also ist das einfach. Zuerst habe ich einen Python virtual environment erstellt und aktiviert. Zur Installation von Clickable Typ:
pip3 install git+https://gitlab.com/clickable/clickable.git
Als nächstes können Sie Ihre erste Anwendung durch Eingabe erstellen:
clickable create
Dies stellt Ihnen einige Fragen und generiert eine UT Anwendung. Sie können diese Anwendung dann auf Ihrem desktop durch Eingabe ausführen:
clickable desktop
Wenn Sie es auf Ihrem UT -Telefon ausführen möchten, stellen Sie zunächst sicher, dass Sie den Entwicklermodus auf Ihrem Telefon aktiviert haben:
System settings -> About -> Developer mode
Dann tippen Sie:
clickable
und die Anwendung wird geladen und im Telefon gestartet. Das klingt einfach und ist es auch, aber es ist nur ein Ausgangspunkt.
Verwendung von Python und pyOtherSide
Wir können C++ durch Python mit pyOtherSide ersetzen. Damit alles funktioniert, installieren Sie pyOtherSide:
sudo ap-get install pyotherside
Die folgende Anwendung zeigt ein Fenster, Abmessungen 200x200, mit einem Text'Nothing here yet' und einer Schaltfläche. Wenn Sie auf die Schaltfläche klicken, sollte sich der Text in'Hallo von Python!' ändern. Der neue Text stammt von einer Funktion hello_world in applogic.py. Wir erstellen zwei Dateien, im selben Verzeichnis, die erste ist hello.qml:
// hello.qml
import QtQuick 2.6
import QtQuick.Controls 1.2
import io.thp.pyotherside 1.0
Rectangle {
width: 200
height: 200
color: 'blue'
Python {
id: py
Component.onCompleted: {
// Print version of plugin and Python interpreter
console.log('PyOtherSide version: ' + pluginVersion());
console.log('Python version: ' + pythonVersion());
addImportPath(Qt.resolvedUrl('.'));
importModule('applogic', function() {});
console.log('after importModule');
}
}
Label {
id: label;
text: "Nothing here yet"
}
Button {
text: "press"
anchors.centerIn: parent
onClicked: {
console.log('in onClicked');
py.call('applogic.hello_world', [], function(result) {
// async call
console.log('after call');
label.text = result;
});
}
}
}
und der andere ist applogic.py:
# applogic.py
def hello_world():
print("printing ... Hello from Python!")
return "Hello from Python!"
Jetzt können wir das mit qmlscene ausführen. Dies ermöglicht es uns, es auszuführen, ohne vollständig zu sein:
qmlscene hello.qml
Es sollte ein Fenster anzeigen und auf der Konsole drucken:
loadRulesFromFile: Loading "/home/peter/.config/QtProject/qtlogging.ini" ...
onCompleted: PyOtherSide version: 1.4.0
onCompleted: Python version: 3.6.2
onCompleted: after importModule
Nach dem Anklicken des Buttons sollte die Konsole sagen:
onClicked: in onClicked
printing ... Hello from Python!
: after call
und der Text im Popup sollte sich ändern in: Hallo von Python! Wenn das funktioniert, dann schauen Sie sich auch die Beispiele an, die im Repository pyOtherSide verfügbar sind.
Verwendung von QtCreator
Wir wollen definitiv nicht, dass die Screens von Hand selbst gestaltet werden und genau hier setzt QtCreator an. Wenn es noch nicht installiert ist, können Sie es mit dem Ubuntu Software Center installieren. Jetzt können Sie hello.qml öffnen, den Bildschirm bearbeiten, speichern und erneut ausführen.
Fortgeschrittener
Ich schlage vor, dass Sie sich andere UT -Anwendungen ansehen, die mit Python erstellt wurden. Ein Beispiel ist ActivityTracker, der Code ist auf Github. Diese App verwendet auch SQLite als Datenbank. Du kannst es bekommen, indem du tippst:
git clone https://github.com/ernesst/ActivityTracker.git
Sie können es auf Ihrem desktop oder mit Clickable wie oben beschrieben ausführen. Da es GPS verwendet, können Sie nicht viel mit Ihrem desktop tun....
Zusammenfassung
Ich bin ein totaler Noob auf Ubuntu Touch App Entwicklung, das oben ist nur eine Zusammenfassung meiner Forschung für einen Tag. Du kannst Ubuntu Touch Apps mit Python erstellen und es ist nicht so schwierig. Wenn ich etwas Zeit finde, werde ich versuchen, eine Ubuntu Touch App zu bauen, ich hoffe, das wirst du auch.
Links / Impressum
[SOLVED]How to Import Python library to clickable?
https://forums.ubports.com/topic/1321/solved-how-to-import-python-library-to-clickable
ActivityTracker app for Ubuntu
https://github.com/ernesst/ActivityTracker
App development
http://docs.ubports.com/en/latest/appdev/
Asynchronous Python 3 Bindings for Qt 5
https://github.com/thp/pyotherside
Clickable
http://clickable.bhdouglass.com/en/latest/
Creating Ubuntu Phone Apps using Python and Qt
https://github.com/timsueberkrueb/ubports-gettogether/blob/master/timsueberkrueb/pyotherside/presentation.md
How do I get my QML program to utilize Unity7 notifications? Is there an API I can use?
https://askubuntu.com/questions/540352/how-do-i-get-my-qml-program-to-utilize-unity7-notifications-is-there-an-api-i-c
No valid kits found, although a kit exists
https://askubuntu.com/questions/696740/no-valid-kits-found-although-a-kit-exists
Qt 5 Hello World Tutorial using Qt Creator
https://prognotes.net/2016/11/qt-5-hello-world-tutorial-using-qt-creator/
Mehr erfahren
Ubuntu Touch
Neueste
- Ausblenden der Primärschlüssel der Datenbank UUID Ihrer Webanwendung
- Don't Repeat Yourself (DRY) mit Jinja2
- SQLAlchemy, PostgreSQL, maximale Anzahl von Zeilen pro user
- Anzeige der Werte in den dynamischen Filtern SQLAlchemy
- Sichere Datenübertragung mit Public Key Verschlüsselung und pyNaCl
- rqlite: eine hochverfügbare und distverteilte SQLite -Alternative
Meistgesehen
- Verwendung von Pythons pyOpenSSL zur Überprüfung von SSL-Zertifikaten, die von einem Host heruntergeladen wurden
- Verwendung von UUIDs anstelle von Integer Autoincrement Primary Keys mit SQLAlchemy und MariaDb
- PyInstaller und Cython verwenden, um eine ausführbare Python-Datei zu erstellen
- Verbindung zu einem Dienst auf einem Docker -Host von einem Docker -Container aus
- SQLAlchemy: Verwendung von Cascade Deletes zum Löschen verwandter Objekte
- Flask RESTful API Validierung von Anfrageparametern mit Marshmallow-Schemas