angle-uparrow-clockwisearrow-counterclockwisearrow-down-uparrow-leftatcalendarcard-listchatcheckenvelopefolderhouseinfo-circlepencilpeoplepersonperson-fillperson-plusphoneplusquestion-circlesearchtagtrashx

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.

18 November 2019
post main image
https://unsplash.com/@wildlittlethingsphoto

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

Einen Kommentar hinterlassen

Kommentieren Sie anonym oder melden Sie sich zum Kommentieren an.

Kommentare

Eine Antwort hinterlassen

Antworten Sie anonym oder melden Sie sich an, um zu antworten.