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

Développement d'applications Ubuntu Touch avec Python avec pyOtherSide

Les applications Ubuntu Touch sont développées avec Qt5 et C++. En utilisant pyOtherSide on peut utiliser Python au lieu de C++.

18 novembre 2019 Mise à jour 19 novembre 2019
Dans Autre
post main image
https://unsplash.com/@wildlittlethingsphoto

Probablement beaucoup d'entre vous ne connaissent que deux systèmes d'exploitation de téléphonie mobile, iOS sur les téléphones Apple et Googles Android sur les autres téléphones (environ 80%). Mais il y a aussi Ubuntu Touch (UT) développé à l'origine par Canonical Ltd et poursuivi par UBports. J'écris un post à ce sujet parce que j'utilise UT sur un Nexus 5 et je me demande à quel point il serait difficile de développer des applications pour cela. Quand j'ai découvert que vous pouvez utiliser Python au lieu de C++, j'ai pensé pouvoir vous inciter à regarder dans Ubuntu Touch et à commencer à développer une application pour elle.

Mon historique avec Ubuntu Touch

J'ai commandé le BQ Aquaris E4.5 Ubuntu Edition en avril 2015 pour moi et un ami après que Ubuntu Touch soit sorti en 2014. Après environ six mois de mises à jour, la plupart des problèmes ont été résolus par Ubuntu et le téléphone est devenu mon pilote quotidien, OS merveilleux. J'ai perdu le téléphone pendant un voyage et je suis passé à Lineageos sans Gaps. Bien que la sécurité soit un sujet sérieux dans les communautés Android custom ROM , la confidentialité n'est pas vraiment chaud, ce qui signifie que presque tous les custom ROMs'phone home' à Google, lorsque le téléphone, ont par défaut recherche contact Google activé, essayer de extraire et envoyer votre localisation, etc sans parler des vulnérabilités et des mauvaises applications qu'on entend tout le temps. Google fait tout ce qu'il faut pour obtenir vos données. Je pense qu'on peut les traiter de voleurs. J'en ai eu marre de cela, j'ai récemment acheté un vieux Nexus 5, j'ai flashé UT dessus et je suis à nouveau heureux.

Ubuntu Touch aujourd'hui

L'équipe UBports a fait d'énormes progrès l'année dernière mais il reste encore beaucoup à faire. Pour n'en mentionner que quelques-uns. Passez à Ubuntu 20.04. Il y a un problème Bluetooth qui vous empêche d'utiliser votre carkit (aucun son pendant l'appel). Vous ne pouvez pas bloquer un numéro de téléphone. Le nombre d'applications est limité et un certain nombre d'applications sont encore en cours de développement. FluffyChat, un client Matrix , ne supporte pas le chiffrement end-to-end . Dekko 2, le client de messagerie, est mis à jour. C'est le prix à payer pour la vie privée.

Ubuntu Touch développement d'applications

Les applications UT sont généralement développées en utilisant Qt5 et C++. Heureusement pyOtherSide a été créé qui nous permet d'appeler Python depuis QML. Pour démarrer le développement, vous devez installer Clickable, voir les liens ci-dessous. J'exécute Ubuntu 18.04 avec Python 3.6, donc c'est facile. J'ai d'abord créé un Python virtual environment et l'ai activé. Pour installer Clickable , tapez :

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

Ensuite, vous pouvez créer votre première application en tapant :

clickable create

Cela vous posera quelques questions et générera une application UT . Vous pouvez ensuite exécuter cette application sur votre desktop en tapant :

clickable  desktop

Si vous voulez l'exécuter sur votre téléphone UT , assurez-vous d'abord que vous avez activé le mode Developer sur votre téléphone :

System settings -> About -> Developer mode

Ensuite, tapez :

clickable

et l'application est chargée et démarrée dans le téléphone. Cela semble facile et c'est le cas, mais ce n'est qu'un point de départ.

Utilisation de Python et pyOtherSide

On peut remplacer C++ par Python en utilisant pyOtherSide. Pour que les choses fonctionnent, installez pyOtherSide :

sudo ap-get install pyotherside

L'application ci-dessous affiche une fenêtre, dimensions 200x200, avec un texte'Nothing here yet' et un bouton. Lorsque vous cliquez sur le bouton, le texte devrait devenir'Hello from Python'. Le nouveau texte provient d'une fonction hello_world dans applogic.py. Nous créons deux fichiers, dans le même répertoire, le premier est 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;
            });
        }
    }
}

et l'autre est applogic.py :

# applogic.py

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

Maintenant, nous pouvons exécuter ceci avec qmlscene. Cela nous permet de l'exécuter sans être complet :

qmlscene hello.qml

Il devrait montrer une fenêtre et imprimer sur la console :

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

Après avoir cliqué sur le bouton, la console devrait dire :

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

et le texte dans le popup devrait devenir : Bonjour de Python ! Si cela fonctionne alors jetez aussi un oeil aux exemples disponibles dans le référentiel pyOtherSide .

Utilisation de QtCreator

Nous ne voulons absolument pas concevoir nous-mêmes les écrans à la main et c'est là qu'intervient QtCreator . S'il n'est pas encore installé, vous pouvez l'installer en utilisant Ubuntu Software Center. Vous pouvez maintenant ouvrir hello.qml, éditer l'écran, l'enregistrer et le relancer.

Plus avancés

Je vous suggère de regarder les autres applications UT créées avec Python. Un exemple est ActivityTracker, le code est sur Github. Cette application utilise également SQLite comme base de données. Vous pouvez l'obtenir en tapant :

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

Vous pouvez l'exécuter sur votre desktop ou utiliser Clickable comme décrit ci-dessus. Parce qu'il utilise GPS vous ne pouvez pas faire grand chose sur votre desktop ...

Résumé

Je suis un noob total sur le développement de l'application Ubuntu Touch , ce qui précède n'est qu'un résumé de mes recherches pour une journée. Vous pouvez construire des applications Ubuntu Touch avec Python et ce n'est pas si difficile. Si je trouve du temps, je vais essayer de construire une application Ubuntu Touch , j'espère que vous aussi.

Liens / crédits

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

En savoir plus...

Ubuntu Touch

Laissez un commentaire

Commentez anonymement ou connectez-vous pour commenter.

Commentaires

Laissez une réponse

Répondez de manière anonyme ou connectez-vous pour répondre.