Vývoj aplikací pro Maemo v Pythonu

Nokia N900 perex

Mobilní telefon Nokia N900 je prvním telefonem (smartfonem), který používá linuxový OS (Maemo). A jako pro každý správný Linux lze i pro Maemo psát aplikace nejen nativní v C/C++, ale i skriptované – například v Pythonu. Ukážeme si základní věci, které vám pomohou začít vyvíjet aplikace v Pythonu.

Pokud to s vývojem aplikací pro Nokii N900 a další Maemo-powered stroje myslíte vážně, brzy zjistíte, že potřebujete vývojové prostředí, které vám umožní komfortnější vývoj. Pokud jste si jako jazyk pro vývoj zvolili Python, máme pro vás dobrou zprávu: IDE existuje a je velmi komfortní!

Jak jistě víte, aplikace lze pro Maemo vyvíjet nejen v nativním C/C++ a překládat je pomocí gcc, ale můžete použít i Python. Před časem byla uvolněna finální verze komfortního IDE, nazvaného PluThon.

O vývoji pro Maemo v Pythonu poví víc slideshow PyQt Application Development on Maemo.

PluThon je postaven na známém IDE Eclipse. Bude fungovat tedy (teoreticky) na všech OS, kde funguje Java. (Já jsem jej úspěšně vyzkoušel na Windows 7 x64 – pozn.aut.)

Instalace je poměrně přímočará, ale důrazně doporučuji provést operace přesně v tom pořadí, v jakém jsou popsané – při první instalaci jsem si odložil stažení nějakých doplňkových knihoven „na někdy“, a v důsledku řetězce událostí, kdy instalátor nezahlásil, že chybí knihovny, ale tiše nenainstaloval podporu, jsem skončil s nefunkčním IDE. Jak tedy na to? Postup platí pro Windows, na vašem systému se může lišit, doporučuji zkonzultovat návod k instalaci.

Předpokladem je funkční Java – tu potřebuje pro svůj běh jádro Eclipse.

Eclipse

První krok: Stáhněte si instalační balíky pro svůj systém – vždy jsou tvořeny velkým společným balíkem (common) a menším balíkem specifickým pro danou platformu. Já použil Windows Final Common a Win Support. Balíky stáhněte a rozbalte do vhodného adresáře (v textu budeme předpokládat, že instalujeme do adresáře d:pluthon). NIC NESPOUŠTĚJTE! Při prvním spuštění se vytváří konfigurace, a protože ještě nemáme připojené cílové zařízení, nevytvořila by se žádná / vytvořila by se špatná.

Python

Druhý krok: Nainstalovat a rozchodit Python. Zde je na místě zvolit stejnou verzi, jaká je v přístroji, tedy (v tuto chvíli) Python 2.5. (Nutné to není, ale může to ušetřit problémy).

PC Connectivity

Třetí krok: Rozchodit balík PC Connectivity. Tento balík vám umožní vzdálenou práci s Maemo zařízením přes USB, Bluetooth nebo WLAN.

Nejprve nainstalujeme sw na zařízení (telefon). To lze udělat pomocí správce aplikací přímo v telefonu – pokud máme povolený repository devel-extras (viz poznámka níže), objeví se PC Connectivity suite v nabídce aplikací ke stažení. Stáhněte a nainstalujte (postup). Instalátor po vás bude chtít, abyste si zvolili hesla pro uživatelský a rootovský přístup k přístroji. Tato hesla budou platit pouze pro vzdálený přístup!

Povolení repozitáře devel-extras je prosté. Ve správci aplikací zvolte Katalogy aplikací, zadejte Nový, a vyplňte:

Na PC s Windows je instalace o něco složitější – nejprve je třeba nainstalovat CygWin a při instalaci povolit tyto balíky:

  • Admin/cygrunsrv
  • Net/nfs-server
  • Net/openssh
  • Net/rsync
  • X11/xinit
  • X11/xdpyinfo

Až instalace skončí, stáhněte si aktuální verzi balíku maemo-pc-connectivity. Nainstalujte jej a postupujte podle instrukcí instalačního programu (postup).

Teď je třeba vytvořit v telefonu konfiguraci („environment“) pro ladění aplikací. Nastavení najdete v „Nastavení – Připojení – PC Connectivity Manager“. Opět můžete postupovat podle návodu. Vytvořte si konfiguraci „Home“ a nastavte ji třeba takto:

Python Maemo

Tedy že připojení přes USB bude emulovat síť, že bude fungovat jako DHCP server a že bude mít IP adresu 192.168.2.15 – samosebou pokud používáte jiné IP adresy a tento rozsah máte obsazený, zvolte si odpovídající.

Můžete si vytvořit víc konfigurací, mezi nimi lze pohodlně přepínat z „pohotovostního“ menu pomocí „connectivity manageru“.

Jakmile je konfigurace vytvořena, zvolte ji jako aktivní a připojte USB kabel. Windows by měly správně detekovat nové zařízení a najít ovladače (měly by být součástí výše nainstalovaného balíku maemo-pc-connectivity). Podrobně je postup opět popsán v návodu.

Pozor! Některé kroky ve výše odkazovaném návodu jsou určeny pro starší verzi Maema s názvem Diablo. Pro N900 nejsou potřeba (N900 používá verzi Maemo 5 s označením Fremantle). I když na to návod upozorňuje, snadno se lze překouknout a splést.

Pokud vše proběhlo tak jak proběhnout mělo, můžete nyní PINGnout na svůj telefon, a měli byste být schopni se připojit pomocí ssh user@192.168.2.15. Ano? Sláva, ta těžší část je za námi!

PluThon

Čtvrtý krok: Opustíme PC Connectivity, ačkoli umí ještě mnoho a mnoho šikovných věcí (třeba remote desktop), a vrátíme se k PluThonu.

Spustíme Pluthon.exe, určíme umístění workspace (klasická instalace Eclipse IDE) a proklikáme se průvodcem nastavení. PluThon si vytvoří patřičné konfigurace a spustí prostředí.

V menu vybereme New – Project – PyGtk project a zkusíme jej vytvořit. Pluthon nejprve zkontroluje, zda jsou v telefonu k dispozici potřebné knihovny (pokud ne, stáhne je a doinstaluje) – a pak otevře main.py, což je jednoduchá aplikace typu „Hello, world“.

Můžete si zkusit vytvořit jednoduchou aplikaci, a poté ji spustit. Klikněte na Run, vyberte „SSH“ (aplikace se nebude instalovat, pouze je přenesena a spuštěna) a volbu potvrďte. Pokud jste neudělali při instalaci chybu, aplikace se rozběhne na vašem telefonu.

Instalace Qt4 pro Python

Pokud nejste s PyGtk kamarádi a raději byste použili Qt, není to problém. Nokia plánuje přechod na Qt, ale v současné době je hlavním prostředím Gtk a Qt je nutné doinstalovat. Nejprve si přidejte devel-extras repository n(viz výše) a povolte root shell (ze správce aplikací přidat aplikaci rootsh).

V Terminálu spusťte:

sudo gainroot
apt-cache search python2.5-qt4 

Python Maemo

Dostanete seznam dostupných balíků. Z nich si vyberte a nainstalujte klasicky pomocí apt-get install potřebné. Tedy například:

apt-get install python2.5-qt4-core python2.5-qt4-gui 

Originální návod

Hello, world!

Jednoduchá aplikace „Hello world“ v Pythonu není problém. Uložit něco jako print "hello world" do souboru hello.py a z terminálu zavolat python hello.py dokáže každý. My si ukážeme, jak využít grafické rozhraní.

Maemo používá, jak jsme si už řekli, Gtk+, první příklad tedy bude pro tuto knihovnu. Do souboru hello.py napíšeme:

import gtk
import hildon

def hello(widget, data):
    print "Hello World!"

def main():
    program = hildon.Program.get_instance()
    window = hildon.Window()
    program.add_window(window)
    window.connect("delete_event", gtk.main_quit, None)
    button = hildon.Button(gtk.HILDON_SIZE_AUTO, hildon.BUTTON_ARRANGEMENT_VERTICAL, "Hello world!")
    button.connect("clicked", hello, None)
    window.add(button)
    window.show_all()
    gtk.main()

if __name__ == "__main__":
    main()

(Zdroj)

Program spustíme v terminálu příkazem python hello.py.

Výsledek bude vypadat nějak takto:
Python Maemo

N900 však umí použít i Qt. Pokud máte nainstalované patřičné knihovny (viz výše), můžete zkusit následující program (qthello.py):

import sys
from PyQt4 import QtGui, QtCore

class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)

        self.setWindowTitle('Ahoj svete!')
        label = QtGui.QLabel('Tady jsem, svete', self)
        label.setGeometry(50, 50, 250, 20)

        self.resize(400,200)

app = QtGui.QApplication(sys.argv)
qb = MainWindow()
qb.show()
sys.exit(app.exec_())

(Zdroj)

Výsledek asi není překvapivý:

Python Maemo

A co dál…?

Další experimentování je už na vás. Můžete začít např. na Rootu – seriály Vytváříme aplikace s PyGTK a Vytváříme aplikace s PyQt4 mohou být dobrým odrazovým můstkem. Zkusil jsem vzít ukázkový příklad – kalkulačku z článku PyGTK – Kalkulačka a prohlížeč. Fungovala bez jakýchkoli úprav na první zapnutí (s ručním spuštěním z konzole):

PyGTK kalkulačka

Začal programovat v roce 1984 s programovatelnou kalkulačkou. Pokračoval k BASICu, assembleru Z80, Forthu, Pascalu, Céčku, dalším assemblerům, před časem v PHP a teď je rád, že neprogramuje…

Čtení na léto

Jaké knihy z oboru plánujete přečíst během léta? Pochlubte se ostatním ve čtenářské skupině Zdrojak.cz na Goodreads.com.

Komentáře: 2

Přehled komentářů

Frantisek S. super
binary_runner prvni (smart)phone s linuxem ...
Zdroj: http://www.zdrojak.cz/?p=3200