Maemo 5 Představení vývojové platformy Jaroslav Řezník
Jaroslav Řezník2 Historie ● Za vývojem stojí společnost Nokia ● Založeno na Linuxové distribuci GNU/Debian ● První zařízení s Maemem ● Nokia N770 (2005) ● Verze systému ● Původně označované jako OS (Maemo 4 Diablo) – např. N810 ● Nyní Maemo 5 Fremantle ● Budoucí verze Maemo 6 Harmattan (MeeGo)
Jaroslav Řezník3 Open source ● Většina platformy open source ● Linux Kernel, glibc, v4l2, blueZ, Telepathy, Gstreamer, DBUs, apt, xorg, Qt, Gtk atd... ● Projekty v Garage ● Část bohužel pod nesvobodnou EULA
Jaroslav Řezník4 Architektura systému
Jaroslav Řezník5 Správa systému ● Běžný Linuxový terminál ● Možnost získání roota bez jailbreaku! ● Repozitář maemo-extras ● Balíček rootsh ● sudo gainroot (root) ● Root filesystém pouze 256 MB (viz. NAND) ● Pro aplikace 2 GB /opt oddíl ● Zbytek pro uživatelská data
Jaroslav Řezník6 Vývoj ● Maemo SDK ● Scratchbox ● Kompletní systém + Xephyr ● Pouze Linux, jiné systémy -> VMPlayer ● MADDE ● MAD Developer – mad pscreate, mad make, mad remote etc... – Aplikace na straně telefonu
Jaroslav Řezník7 Scratchbox - instalace ● SDK rozdělené na ● Scratchbox (/scratchbox pod rootem) ● A samotné SDK (pro uživatele – skupina sbox) ● EULA!!! ● Doinstalování closed source balíčků
Jaroslav Řezník8 Scratchbox - použití ● Xephyr ● Mimo Scratchbox! ● Přihlášení ● /scratchbox/login ● export DISPLAY=:X ● af-sb-init.sh start ● Přepínání cílů – sb-conf select FREMANTLE_ARMEL – FREMANTLE_X86
Jaroslav Řezník9 MAD Developer ● ● I pro Windows... ● mad vs mad-admin
Jaroslav Řezník10 Madde - použití ● Jednoduchý Qt příklad ● mad pscreate -t qt_simple qthello ● cd qthello && mad qmake ● mad make ● mad dpkg-buildpackage
Jaroslav Řezník11 Madde - example /* * Created: 05/25/09-15:51:27 * Author: username */ #include int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton hello("Hello world!"); hello.show(); return app.exec(); }
Jaroslav Řezník12 Top level architektura Červěně uzavřené části systému
Jaroslav Řezník13 Jádro platformy ● Nolo bootloader ● multiboot ● Linux Kernel ● ARM podpora přímo v kernelu ● Podpora HW ● ALSA, V4L2, kamera ioctls... ● OMAP 3 – Power management, sběrnice, karty, DSP bridge, LCD, TV out atd... ● WLAN, LEDS, bt, akcelerometry atd... ● Vše v jádře, GPLv2
Jaroslav Řezník14 Jádro platformy
Jaroslav Řezník15 Jádro platformy ● Klasická Gnu C library (glibc) ● X window systém ● XrandR (rotace, konfigurace výstupu), kompozitní rozšíření etc... ● OpenGL ES 2.0 ● Proprietární licence :( ● Nokia specifické ● Sysinfod (informace o HW) ● Softupd, Fiasco-flasher (flashování) ● Nesvobodné :(
Jaroslav Řezník16 DBus ● IPC mechanismus ● V Maemo 5 – 90% komunikace! ● Libosso ● Pouze pro Maemo ● Usnadňuje přístup k DBus interfacům ● + serializace ● HW status, ukončení atd...
Jaroslav Řezník17 Uživatelské rozhraní ● Gtk a jazyk C ● Hildon-desktop ● Kompozitní manažer (ala Compiz) ● Přechody mezi okny, rozostření dialogů atd... ● Spouštění/přepínání úloh ● Hildon-home ● Aplety na plochu (Gtk aplikace) – Nyní i Qt aplikace ● Notifikace (org.freedesktop.Notifications) ● Pozadí
Jaroslav Řezník18 Uživatelské rozhraní
Jaroslav Řezník19 Uživatelské rozhraní ● Hildon-status-menu ● Status menu a status bar ● Gtk aplety ● Je třeba dodat.desktop soubor!!! ● /usr/share/applications/hildon ● Konfigurace v /etc/hildon-desktop/ ● Většina věcí odpovídá Freedesktop.org standardům!
Jaroslav Řezník20 Uživatelské rozhraní ● Je doporučené dodržovat ● Hildon UI Guidelines – Pozor na dotykové ovládání prsty! ● Okna aplikace jako zasobník (na sobě)
Jaroslav Řezník21 Multimédia
Jaroslav Řezník22 Multimédia ● OpenMAX IL ● Akcelerace audia/videa ● Colorspace konverze, scaling, kompozice (DSS) ● GStreamer ● Multimediální framework ● Camera Daemon ● Ostření, vyvážení bílé, expozice ● ALSA a PulseAudio ● Sound server ● FMTX (FM rádio)
Jaroslav Řezník23 Real-time komunikace ● RTCom framework. Co zajišťuje? ● IM, VoIP, cellular... ● Prezence ● Telepathy! ● Connection managers – Ring, Skype, SIP ● Streaming engine (Farsight) ● Mission control ● Glib a Qt interfaces ● Mix GPL2 a Nokia licence
Jaroslav Řezník24 Distribuce aplikací ● Garage projekty ● Debian balíčky ● Repozitáře ● Repozitáře Maemo-extras, -testing a -devel ● Vlastní repozitář ● OVI Store ● /opt!!!!!!!!!!!!!!
Jaroslav Řezník25 Nokia Qt ● Původně Trolltech ● Trolové ● Aktuální verze Qt (bude 4.7 brzy) ● Rozdělené do částí: ● QtCore ● QtGUI ● QtXML ● QtMobility (novinka pro Maemo) ● QtMultimedia (novinka pro Maemo) ● A další...
Jaroslav Řezník26 Nokia Qt – objektový model ● Primárně C++ ● Bindingy, např. PyQt4 pro Python ● MOC (meta object compiler) ● Signály a sloty ● Q_OBJECT
Jaroslav Řezník27 Nokia Qt - UI ● QtGUI modul ● Bežné desktopové widgety ● Využití signálů a slotů ● QGraphicsView ● QML ● Základ budoucího Maemo 6/MeeGo! ● DUI
Jaroslav Řezník28 V čem teda psát? ● Gtk default ● Odladěné ● Ale půjde na druhou kolej ● Qt ● Bude default od PR 1.2 ● Mnoho problémů ● S Harmattanem stejně potřeba upravit UI!
Jaroslav Řezník29 Workshop ● Obsah workshopu ● Instalace a ukázka Scratchboxu ● MADDE ● Jednoduchá Gtk a Qt aplikace ● Widget na desktop ● Status applet
Jaroslav Řezník30 Bežící scratchbox ● pcmlich.fit.vutbr.cz ● User openmobility ● Pass openmobility
Jaroslav Řezník31 Odkazy ● ● ● ● ●