[исходный код проекта можно скачать здесь]
Для создания приложений для 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
Создадим новый проект в 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
Проект скомпилируется и запуститься на компьютере.
Чтобы запустить проект на телефоне, сперва нужно Активировать режим разработчика.
В телефоне переходим в Настройки системы ➜ О приложении ➜ Режим разработчика. И перемещаем ползунок в право.
Теперь, в терминале переходим в наш каталог с проектом example-hello и вводим команду:
clickable
Проект скомпилируется и запустится на нашем телефоне:
В этой статье мы научились создавать приложение для телефона с Ubuntu Touch, но это не так интересно, как писать программы на самом телефоне(У нас все же телефон с полноценным Linux🐧). И поможет нам в этом Seabass2, но об этом я расскажу в другой статье.