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

Desarrollo de aplicaciones Ubuntu Touch con Python con pyOtherSide

Las aplicaciones Ubuntu Touch se desarrollan utilizando Qt5 y C++. Utilizando pyOtherSide podemos utilizar Python en lugar de C++.

18 noviembre 2019
En Otros
post main image
https://unsplash.com/@wildlittlethingsphoto

Probablemente muchos de ustedes conocen sólo dos sistemas operativos de teléfonos móviles, iOS en Apple , y Googles Android en todos los demás teléfonos (alrededor del 80%). Pero también está Ubuntu Touch (UT) desarrollado originalmente por Canonical Ltd. y continuado por UBports. Escribo un post sobre esto porque estoy usando UT en un Nexus 5 y me preguntaba lo difícil que sería desarrollar aplicaciones para ello. Cuando descubrí que se puede usar Python en lugar de C++, pensé que tal vez podría tentarte a mirar en Ubuntu Touch y empezar a desarrollar una aplicación para ello.

Mi historia con Ubuntu Touch

Pedí el BQ Aquaris E4.5 Ubuntu Edition en abril de 2015 para mí y para un amigo después de que Ubuntu Touch fuera lanzado en 2014. Después de seis meses de actualizaciones la mayoría de los problemas fueron resueltos por Ubuntu y el teléfono se convirtió en mi controlador diario, el maravilloso OS. Perdí el teléfono durante un viaje y cambié a Lineageos sin Gaps. Aunque la seguridad es un tema serio en las comunidades Android custom ROM , la privacidad no es realmente caliente, lo que significa que casi todos los custom ROMs 'phone home' a Google, al abrir el teléfono, tienen habilitada la búsqueda de contactos por defecto por Google , intentan extraer y enviar su ubicación, etc, sin mencionar todas las vulnerabilidades y malas aplicaciones de las que oímos hablar todo el tiempo. Google está haciendo todo lo posible para obtener sus datos, son multados pero continúan. Creo que puedes llamarlos ladrones. Harto de esto, recientemente compré un viejo Nexus 5, flasheé UT en él y estoy feliz de nuevo.

P4_265_TNEMECALPER_4Q hoy

El equipo de UBports hizo grandes progresos el año pasado, pero aún queda mucho por hacer. Por mencionar algunos. Pase a Ubuntu 20.04. Existe un problema de Bluetooth , que le impide utilizar su kit de coche (no hay sonido durante la llamada). No puede bloquear un número de teléfono. El número de aplicaciones es limitado, y un número de aplicaciones todavía están siendo pulidas. FluffyChat, un cliente Matrix , no soporta encriptación end-to-end . Dekko 2, el cliente de correo, se está actualizando. Este es el precio que usted paga por la privacidad.

Ubuntu Touch desarrollo de aplicaciones

Las aplicaciones UT se desarrollan normalmente utilizando Qt5 y C++. Afortunadamente se creó pyOtherSide que nos permite llamar Python desde dentro de QML. Para iniciar el desarrollo debe instalar Clickable, vea los siguientes enlaces. Ejecuto Ubuntu 18.04 con Python 3.6, así que esto es fácil. Primero creé un Python virtual environment y lo activé. Para instalar Clickable tipo:

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

A continuación, puede crear su primera aplicación escribiendo:

clickable create

Esto le hará algunas preguntas y generará una aplicación UT . A continuación, puede ejecutar esta aplicación en su desktop escribiendo:

clickable  desktop

Si desea ejecutarlo en su teléfono UT , primero asegúrese de haber activado el modo Desarrollador en su teléfono:

System settings -> About -> Developer mode

A continuación, escriba a máquina:

clickable

y la aplicación está cargada e iniciada en el teléfono. Esto suena fácil y lo es, pero es sólo un punto de partida.

Utilizando Python y pyOtherSide

Podemos sustituir C++ por Python utilizando pyOtherSide. Para que las cosas funcionen, instale pyOtherSide:

sudo ap-get install pyotherside

La siguiente aplicación muestra una ventana, de dimensiones 200x200, con el texto'Nothing here yet' y un botón. Cuando haga clic en el botón, el texto debería cambiar a `Hola desde Python! El nuevo texto proviene de una función hello_world en applogic.py. Creamos dos archivos, en el mismo directorio, el primero es 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;
            });
        }
    }
}

y el otro es applogic.py:

# applogic.py

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

Ahora podemos hacer esto con qmlscene. Esto nos permite ejecutarlo sin estar completos:

qmlscene hello.qml

Debería mostrar una ventana e imprimir en la consola:

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

Después de hacer clic en el botón, la consola debería decir:

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

y el texto en la ventana emergente debería cambiar a: Hola de Python! Si eso está funcionando, entonces eche un vistazo a los ejemplos disponibles en el repositorio pyOtherSide .

Utilizando QtCreator

Definitivamente no queremos diseñar las pantallas nosotros mismos y ahí es donde entra en juego QtCreator . Si aún no está instalado, puede instalarlo utilizando Ubuntu Software Center. Ahora puede abrir hello.qml, editar la pantalla, guardarla y volver a ejecutarla.

Más avanzado

Te sugiero que veas otras aplicaciones de UT creadas usando Python. Un ejemplo es ActivityTracker, el código está en Github. Esta aplicación también utiliza SQLite como base de datos. Puedes conseguirlo escribiendo a máquina:

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

Puede ejecutarlo en su desktop o utilizando Clickable como se describe anteriormente. Debido a que utiliza GPS usted no puede hacer mucho en su desktop ....

Resumen

Soy un noob total en el desarrollo de aplicaciones Ubuntu Touch , lo anterior es sólo un resumen de mi investigación por un día. Puedes construir aplicaciones Ubuntu Touch con Python y no es tan difícil. Si encuentro tiempo intentaré construir una aplicación Ubuntu Touch , espero que tú también lo hagas.

Enlaces / créditos

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

Leer más

Ubuntu Touch

Deje un comentario

Comente de forma anónima o inicie sesión para comentar.

Comentarios

Deje una respuesta.

Responda de forma anónima o inicie sesión para responder.