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

Ontwikkelen van Ubuntu Touch apps met Python met pyOtherSide.

Ubuntu Touch apps worden ontwikkeld met behulp van Qt5 en C++. Met behulp van pyOtherSide kunnen we Python gebruiken in plaats van C++.

18 november 2019
In Overige
post main image
https://unsplash.com/@wildlittlethingsphoto

Waarschijnlijk kennen velen van u slechts twee besturingssystemen voor mobiele telefoons, iOS op Apple 's en Google's Android 's op alle andere telefoons (ongeveer 80%). Maar er is ook Ubuntu Touch (UT), oorspronkelijk ontwikkeld door Canonical Ltd. en voortgezet door UBports. Ik schrijf hier een bericht over omdat ik UT gebruik op een Nexus 5 en me afvroeg hoe moeilijk het zou zijn om er apps voor te ontwikkelen. Toen ik ontdekte dat je Python kunt gebruiken in plaats van C++, dacht ik dat ik je misschien kon verleiden om in Ubuntu Touch te kijken en er een app voor te ontwikkelen.

Mijn geschiedenis met Ubuntu Touch

Ik heb de BQ Aquaris E4.5 Ubuntu Edition besteld in april 2015 voor mij en een vriend nadat Ubuntu Touch in 2014 was uitgebracht. Na zo'n zes maanden van updates werden de meeste problemen opgelost met Ubuntu en werd de telefoon mijn dagelijkse driver, prachtig OS. Ik verloor de telefoon tijdens een reis en schakelde over naar Lineageos zonder Gaps. Hoewel veiligheid een serieus onderwerp is in de Android custom ROM gemeenschappen, is privacy niet echt hot, wat betekent dat bijna alle custom ROM's 'telefoon naar huis' naar Google's 'telefoon naar huis', bij het openen van de telefoon, standaard contact zoeken op basis van Google , probeer dan te zoeken, probeer dan om je locatie te extraheren en te verzenden, enz, en dan heb ik het nog niet eens over alle kwetsbaarheden en slechte apps die we de hele tijd horen. Google doet er gewoon alles aan om uw gegevens te verkrijgen, ze krijgen een boete maar gaan verder. Ik denk dat je ze dieven kunt noemen. Ziek hiervan heb ik onlangs een oude Nexus 5 gekocht, UT erop geflitst en ik ben weer gelukkig.

Ubuntu Touch van vandaag

Het UBports team heeft het afgelopen jaar enorme vooruitgang geboekt, maar er is nog veel te doen. Om er een paar te noemen. Ga naar Ubuntu 20.04. Er is een Bluetooth probleem, dat voorkomt dat u uw carkit gebruikt (geen geluid tijdens het bellen). U kunt een telefoonnummer niet blokkeren. Het aantal applicaties is beperkt en een aantal apps wordt nog steeds gepolijst. FluffyChat, een Matrix client, ondersteunt geen end-to-end encryptie. Dekko 2, de mail client, wordt bijgewerkt. Dit is de prijs die u betaalt voor uw privacy.

Ubuntu Touch ontwikkeling van applicaties

UT toepassingen worden meestal ontwikkeld met behulp van Qt5 en C++. Gelukkig is pyOtherSide gemaakt waarmee we Python kunnen aanroepen vanuit QML. Om de ontwikkeling te starten moet u Clickable installeren, zie onderstaande links. Ik start Ubuntu 18.04 met Python 3.6, dus dit is eenvoudig. Eerst heb ik een Python virtual environment aangemaakt en geactiveerd. Voor de installatie van Clickable type:

pip3 install git+https://gitlab.com/clickable/clickable.git

Vervolgens kunt u uw eerste toepassing maken door te typen:

clickable create

Dit zal u enkele vragen stellen en genereert een UT applicatie. U kunt deze toepassing vervolgens op uw desktop uitvoeren door te typen:

clickable  desktop

Als je het op je UT telefoon wilt uitvoeren, zorg er dan eerst voor dat je de Developer mode op je telefoon hebt ingeschakeld:

System settings -> About -> Developer mode

Typ dan in:

clickable

en de applicatie in geladen en opgestart in de telefoon. Dit klinkt gemakkelijk en dat is het ook, maar het is slechts een beginpunt.

Gebruik van Python en pyOtherSide.

We kunnen C++ vervangen door Python door pyOtherSide. Om dit te laten werken, installeer je pyOtherSide:

sudo ap-get install pyotherside

De onderstaande toepassing toont een venster met de afmetingen 200x200, met de tekst 'Nothing here yet' en een knop. Wanneer u op de knop klikt, verandert de tekst in 'Hallo van Python'. De nieuwe tekst komt van een functie hello_world in applogic.py. We maken twee bestanden aan, in dezelfde map, de eerste is hallo.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;
            });
        }
    }
}

en de andere is applogic.py:

# applogic.py

def hello_world():
    print("printing ... Hello from  Python!")
    return "Hello from  Python!"

Nu kunnen we dit doen met qmlscene. Dit stelt ons in staat om het te runnen zonder compleet te zijn:

qmlscene hello.qml

Het zou een venster moeten tonen en afdrukken naar de console:

loadRulesFromFile: Loading "/home/peter/.config/QtProject/qtlogging.ini" ...
onCompleted: PyOtherSide version: 1.4.0
onCompleted:  Python  version: 3.6.2
onCompleted: after importModule

Na het klikken op de knop zou de console moeten zeggen:

onClicked: in onClicked
printing ... Hello from  Python!
: after call

en de tekst in de popup zou moeten veranderen in...: Hallo van Python! Als dat werkt, kijk dan ook eens naar de voorbeelden in de pyOtherSide repository.

Met behulp van QtCreator

We willen de schermen zeker niet zelf met de hand ontwerpen en dat is waar QtCreator een rol speelt. Als het nog niet geïnstalleerd is, kunt u het installeren met behulp van Ubuntu Software Center. Nu kun je hallo.qml openen, het scherm bewerken, opslaan en opnieuw uitvoeren.

Meer gevorderd

Ik stel voor dat je kijkt naar andere UT apps die zijn gemaakt met Python. Een voorbeeld is ActivityTracker, de code staat op Github. Deze app gebruikt ook SQLite als database. Je kunt het krijgen door te typen:

git clone https://github.com/ernesst/ActivityTracker.git

U kunt het uitvoeren op uw desktop of met Clickable zoals hierboven beschreven. Omdat het GPS gebruikt kan je niet veel doen op je desktop ....

Samenvatting

Ik ben een totale noob op Ubuntu Touch app ontwikkeling, het bovenstaande is slechts een samenvatting van mijn onderzoek voor een dag. Je kunt Ubuntu Touch apps bouwen met Python en het is niet zo moeilijk. Als ik tijd heb om een Ubuntu Touch app te bouwen, hoop ik dat jij dat ook doet.

Links / credits

[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/

Lees meer

Ubuntu Touch

Laat een reactie achter

Reageer anoniem of log in om commentaar te geven.

Opmerkingen

Laat een antwoord achter

Antwoord anoniem of log in om te antwoorden.