404

Как писать Python программы для Ubuntu Touch

[исходный код проекта можно скачать здесь]

Для создания приложений для Ubuntu Touch нам понадобиться Сlickable(clickable-ut.dev)

Сперва установим все необходимое(docker, adb, git, python3 и pip3):

sudo apt install docker.io adb git python3 python3-pip

Теперь перейдем к установке Сlickable:

pip3 install --user --upgrade clickable-ut

Сделаем Clickable исполняемым для bash:

echo 'export PATH="$PATH:~/.local/bin"' >> ~/.bashrc and

Если у вас видеокарта от Nvidia, возможно понадобится nvidia toolkit:

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu20.04/nvidia-docker.list > /etc/apt/sources.list.d/nvidia-docker.list
apt update
apt -y install nvidia-container-toolkit

Теперь перезапустим систему. А после закончим установку Сlickable

clickable setup

Первый проект для Ubuntu Touch - Hello, world!

Создадим новый проект в Clickable, в терминале вводим команду:

clickable create

Выбираем проект Python(3 вариант)

Select Template: 3
App Title: Hello, world!
Description: none
App Name [appname]: example-hello
Namespace [yourname]: none
Maintainer Name [Your FullName]: none
Maintainer Email [email@domain.org]: none
Select License: 1
Copyright Year [2020]: 2070
Git Tag Versioning [n]: n
Save as Default [n]: n

Теперь будет создана папка с нашим проектом example-hello, переходим в нее.
Проекты в Ubuntu Touch являются кроссплатформенными и поэтому, для их программирования выбираются соответствующие языки.
Наш проект не исключение - это QML Pyotherside проект, его можно запустить как на компьютере, так и на телефоне.

Вначале создадим интерфейс нашего приложения.
В папке проекта находим каталог qml и изменим Main.qml:

import QtQuick 2.7
import Ubuntu.Components 1.3
import QtQuick.Layouts 1.3
import Qt.labs.settings 1.0
import io.thp.pyotherside 1.3

MainView {
    id: root
    objectName: 'mainView'
    applicationName: 'example-hello.none'
    automaticOrientation: true
    width: units.gu(45)
    height: units.gu(75)

    Page {
        id:main
        anchors.fill: parent

        header: PageHeader {
        id: header
        title: i18n.tr('Hello, world!')
        }
        //создаем Label
        Label {
            id: label1
            anchors {
                top: header.bottom
                left: parent.left
                right: parent.right
                bottom: parent.bottom
            }
            text: 'Click me'
            verticalAlignment: Label.AlignVCenter
            horizontalAlignment: Label.AlignHCenter

            //создаем область для обработки событий мыши
            MouseArea {
            anchors.fill: parent
            hoverEnabled: true

            onPressed: {
                //подключаемся и выполняем функцию speak
                python.call('example.speak', ['Hello World!'], function ( result ) {
                label1.text=result;
                });
            }
            }
        }
    }

//объявляем переменную для импорта Python модуля
    Python {
        id: python
        //подключаем скрипт example.py
        Component.onCompleted: {
            addImportPath(Qt.resolvedUrl('../src/'));
            importModule_sync("example")
        } 
        //на случай ошибок
        onError: {
            console.log('python error: ' + traceback);
        }          
    }
}

В папке проекта находим каталог src и изменим example.py.

a=0
def speak(text):
    global a
    a+=1
    return text+"\n "+str(a)+" click"

Готово. В терминале переходим в наш каталог с проектом example-hello и вводим команду:

clickable desktop

Проект скомпилируется и запуститься на компьютере.

Чтобы запустить проект на телефоне, сперва нужно Активировать режим разработчика.
В телефоне переходим в Настройки системы ➜ О приложении ➜ Режим разработчика. И перемещаем ползунок в право.

ubuntu_toch_python1.jpg

Теперь, в терминале переходим в наш каталог с проектом example-hello и вводим команду:

clickable

Проект скомпилируется и запустится на нашем телефоне:

ubuntu_toch_python2.jpg

В этой статье мы научились создавать приложение для телефона с Ubuntu Touch, но это не так интересно, как писать программы на самом телефоне(У нас все же телефон с полноценным Linux🐧). И поможет нам в этом Seabass2, но об этом я расскажу в другой статье.