Vývoj pro Maemo a iné platformy



Podobné dokumenty
Mobilní navigace v Linuxu. martin.kolman@gmail.com

modrana: flexibilní navigační systém Martin Kolman

Linux na mobilních telefonech

Obsah. O autorech 9 Earle Castledine 9 Myles Eftos 9 Max Wheeler 9 Odborný korektor 10. Předmluva 11 Komu je kniha určena 12 Co se v knize dočtete 12

Před instalací 25 Minimální požadavky na systém Linux a Windows na jednom disku Zrušení instalace Mandriva Linuxu...

Vývoj software pro Linuxové distribuce. Installfest Praha,

Obsah. Úvod 11 O autorovi 11 Koncept knihy 11 Zpětná vazba od čtenářů 12 Zdrojové kódy ke knize 12 Errata 12 ČÁST I VÝVOJ MOBILNÍ APLIKACE

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Minimální požadavky na systém Linux a Windows na jednom disku Zrušení instalace Mandriva Linuxu... 23

Obsah. O autorovi 11 Předmluva 13 Zpětná vazba od čtenářů 14 Errata 14

INSTALACE SW PROID+ V OS LINUX

Linux na mobilních zařízeních

NÁVOD KE SLUŽBĚ IPTV M.NET TV

Jaroslav Řezník Martin Šenkeřík

Jaroslav Řezník Martin Šenkeřík Jozef Mlích

První použití notebooku GIGABYTE

GPS lokátor s online sledováním Návod k obsluze

Point of View Android 2.3 Tablet - User s Manual ProTab 2XXL

První použití notebooku GIGABYTE

Úvod do OpenWRT. Ondřej Caletka. 1. března Uvedené dílo podléhá licenci Creative Commons Uveďte autora 3.0 Česko.

Vývoj aplikací v Qt pro mobilní zařízení

Konvertibilní Tablet STRUČNÁ PŘÍRUČKA 8085 LKB001X CJB1FH002ASA

Návod ke službě IPTV

TESTOVÁNÍ UŽIVATELSKÉHO ROZHRANÍ

IT ESS II. 1. Operating Systém Fundamentals

APS 400 ipanel. Online informační a ovládací panel pro systém APS 400. Uživatelská příručka

SONOFF TH10 / TH Stáhněte aplikaci "ewelink". Vyhledejte "ewelink" v aplikaci APP Store pro verzi ios nebo verzi Google Play pro Android.

Instalace a první spuštění Programu Job Abacus Pro

Návod ke službě IPTV

T-Mobile Internet. Manager. pro Mac OS X NÁVOD PRO UŽIVATELE

Návod ke službě IPTV HD internet.tv

FORTANNS. 22. února 2010

HLEDEJCENY.mobi. Obsah. Mobilní verze e-shopu. Důvody instalace

Sailfish X rok poté aneb co nového v posledním nezávislém mobilním OS. Martin Kolman

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11

Příručka pro aplikaci KSnapshot

ŘÍZENÍ AUTOMATICKÉ KOTELNY ESRAK 02.3

Elektronické učebnice popis systému, základních funkcí a jejich cena

NÁVOD K POUŽITÍ Kamera CEL-TEC S3000 Wifi IR

Nový design ESO9. E S O 9 i n t e r n a t i o n a l a. s. U M l ý n a , P r a h a. Strana 1 z 9

Uživatelská příručka

Návod k využívání interaktivních funkcí

NÁVOD KE SLUŽBĚ IPTV

Návrh stránek 4IZ228 tvorba webových stránek a aplikací

Ovládání TV platformy a funkce Chytrá TV. RETE tv

Citrix klient a OneTimePass moje.cpas.cz. Uživatelský návod pro interní uživatele České pojišťovny a.s.

Nejprve je třeba spustit správce serveru: V něm je třeba vybrat přidání rolí:

Skrytá kamera Lawmate v nabíječce telefonů iphone PV-CHG20i

Kapitola 1: Úvod. 1.1 Obsah balení. 1.2 Požadavky na systém. Česky

Instalace Debianu pomocí debootstrap

Web n walk Manager pro Apple Mac OS X. Návod pro uživatele

Kudyšel comfort. Manuál k programu

NÁVOD K POUŽITÍ. IP kamerový systém.

Asistivní technologie a dohledové systémy Dyslexie čtení pomocí okénka

Návod ke službě IPTV

Interaktivní funkce Selfnet TV

Tiskový manažer Printman (Tiskový manažer verze 1.58 a novější)

pouˇzití USB nebo SPI

[IM-WMC] Městská cyklonavigace D3

Uživatelská příručka

[IM-WMC] Městská cyklonavigace Deliverable D4

Internet Protokol TV televizní vysílání distribuované prostřednictvím protokolu TCP/IP

Návod k obsluze IP kamery Zoneway. IP kamery jsou určené pro odbornou montáž.

Xtreamer Wonder. Uživatelská příručka CZ

1 Správce licencí Správce licencí Správce licencí Start > Všechny programy > IDEA StatiCa > Správce licencí Soubor > Správce licencí Licence

ABRA Software a.s. ABRA on- line

Uživatelská příručka T UC-One pro windows

BlindShell uživatelský manuál

Základní informace. Operační systém (OS)

Linux na prapodivných deskách. LinuxDays 2017, Lenka Kosková Třísková Technická univerzita v Liberci

Obsah. Moje menu 4. Ovladač 6. Ovládání sledovaného pořadu 8. Zpětné zhlédnutí 10. Nahrávání 12. Můj seznam kanálů 13.

odolné tablety tablety s nejmodernější technologií a nekompromisní robustností

DINOX IP kamery řady: DDC-xxxx DDR-xxxx DDX-xxxx DDB-xxxx

Bezdrátový laserový prezentér s podporou funkce myši PR-05 6D

Externí baterie na iphone 4/4S/5/5S s HD kamerou

Tiskový manažer - Printman

1. Úvod. 2. CryptoPlus jak začít. 2.1 HW a SW předpoklady. 2.2 Licenční ujednání a omezení. 2.3 Jazyková podpora. Požadavky na HW.

Střední odborná škola a Střední odborné učiliště, Hořovice

Nastavení internetu. Jak to lze jednoduše, Android

VYUŽITÍ PYTHONU PRO REALTIMOVÉ ŘÍZENÍ PERIFERIÍ

Mini PC ITV26. Návod k použití

Obsah. Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10

Uživatelský manuál. XMEye aplikace pro zválený dohled. 1/14

Příručka pro aplikaci KSnapshot

Příručka aplikace KMix. Gaurav Chaturvedi Vývojář: Christian Esken Vývojář: Helio Chissini de Castro Vývojář: Brian Hanson

První seznámení s mobilní aplikací PATRIOT GPS

Testování operačního systému Windows Phone 8

HP-2000E UŽIVATELSKÝ MANUÁL

Multiplatformní GUI toolkity

Návod k obsluze satelitního lokalizátoru GUARDYS PGT5020

/ NVR-4008 / NVR-4016

Android za hranicemi Hello World

Ovládání ústředny Visonic přes mobilní telefon

Obsah. Úvod 11 Zpětná vazba od čtenářů 13 Errata 14 Poznámka ke kódům 14

NÁVOD KE SLUŽBĚ IPTV

PV Cam Viewer aplikace

TACHOTel manuál 2015 AURIS CZ

Zkontrolujte dodané příslušenství.

Obsah balení. Popis jednotky. 1 Čtečka E-Book (hl. jednotka) 2 Kožené pouzdro 3 Sluchátka 4 USB kabel 5 Průvodce rychlým startem 6 Záruční list

Nastavení provozního prostředí webového prohlížeče pro aplikaci

Transkript:

Vývoj pro Maemo a iné platformy http://www.modrana.org/om2011/workshop.pdf martin.kolman@gmail.com

Vývoj pro Maemo a jiné platformy platformy vývoj pro desktop vs vývoj pro mobilní zařízení Tipy & triky Komunita a uživatelé příklad vývojového cyklu mobilní aplikace

Platformy plnokrevné Linuxové jádro, X Server a userland Maemo, Meego OpenEmbedded a deriváty (SHR,AIOS,...) mobilní verze desktopových distribucí neplnokrevné jádro a nic moc víc Android, WebOS

Maemo v současnosti asi nejrozšířenější plnokrevná linuxová platforma jedná z mála použitelných i pro jiné věci než vývoj výhled do budoucna je však nejistý nejrelevantnější je asi Maemo 5 @ N900 Maemo <=4 bylo na starších NIT Maemo není plně opensource, což de facto znemožňuje jeho portování na jiné platformy

Maemo - nástroje default = GTK + Hildon + C++ nový default = Qt + QML k dispozici je SDK, včetně emulátoru a prostředí pro kompilaci ARM binárek (Scratchbox) široce používaný je také Python dostupná verze 2.5 prostřednictvím projektu PyMaemo k dispozici jsou bindingy pro GTK, Hildon, Qt i Clutter

Maemo - nástroje v repozitářích je toho opravdu hodně: Free Pascal, Mono + monodevelop (!), swi prolog texlive OpenJDK SDL Perl, Ruby PHP není tam Haskell :)

Maemo - repozitáře po zaregistrování je možné nahrávat vlastní balíky balíčkovací systém je převzatý z Debianu balíčky jdou nejdříve do Extras Devel vývojový, nebezpečný repozitář má jej zapnutý většina (?) uživatelů :) z Extras Devel je možné balíčky přez Extras Testing dostat do Extras bezpečného repozitáře uživatelé testeři hlasují pro balíky v Testing

Maemo - komunita středem komunity je maemo.org a zejména talk.maemo.org = TMO je dobrým zvykem každý nově vzniklý projekt ohlásit samostatným vláknem na TMO komunitu tvoří uživatelé z celého světa spolupráce mezi autory vetšina navigačních aplikací sdílí mapové podklady

Maemo kam s projektem garage.maemo.org poskytuje hostování pro Maemo projekty mnoho projektů je také na Gitorious (kde je např. také Qt), další jsou na Githubu do přílohy vlákna na TMO :)

Maemo - problémy Kernel zmrazený na 2.6.28 kvůli uzavřenému ovladači GPU Glib 2.20 tento ovladač také nemá vsync a občas zasekne X Server USB konektor na N900 má sklon k ulomení Nokia

MeeGo bouřlivý vývoj a poněkud nepřehledná situace kdo rozhoduje? skryté týmy papírově Maemo + Moblin v zásadě hlavně podvozek s jednotným API IVI, Handset, Tablet, Settopbox,... OBS pro buildování RPM pro balíky defaultně Qt + QML pro všechno

Open Embeaded, SHR a spol pomalu, ale jistě Open Embedded tvoří základ pro řadu distribucí SHR pro Neo, N900 a další Web OS na zařízeních Palm/HP AIOS pro Touch, Smart, Mini booky OS na Open Pandoře OPKG balíčky bitbake recepty

Middleware FSO, Ofono, QtMobility Telepathy Tracker zpřístupnění lowlevel HW jednotným API sensory, telefon, GPS zpravidla přez DBUS sjednocené IM + SMS indexuje multimediální data

Desktop vs mobil dotyková obrazovka nemá pravé tlačítko jak spustit kontextová menu? dotyková obrazovka nemá kurzor nelze použít kontextovou on mouse over nápovědu dotyková obrazovka ovládaná prsty je nepřesná dvojklik je radno používat s rozmyslem tah (drag) = kolečko/šipky tah vs výběr textu

Desktop vs mobil co je ještě kliknutí a co je už tah? obrazovka mobilních zařízení je zpravidla malá je dobré počítat s provozem v portrait i landscape 0 až N hardwarových tlačítek hardwarová tlačítka by měla být doplnkěm k dotykovému ovládání mobilní zařízení mají senzory, které běžné počítače nemají akcelerometry, gyroskopy, kompasy, kamery, detektory jasu, detektory blízkosti,...

Desktop vs mobil mobilní zařízení jedou na baterie program by měl dělat jen to co je potřeba nepoužívat busy waiting > reagovat na události je vhodné použít hardwarovou akceleraci použití GPU nebo DSP může ušetřit energii a zrychlit program vzhledem k problémům s uzavřenými ovladači však nemusí vždy fungovat, i když zařízení potřebný hardware fyzicky obsahuje není vhodné na akceleraci přímo záviset

T&T: Rsync! pro rychlé testování aplikace na mobilním zařízení dostupný pro většinu mobilních linuxových platforem přenáší jen změny použití s SSH přez (GPRS) internet s přepínačem delete pouštíme opravdu to stejné máme na vývojovém stroji

T&T: Python! není třeba kompilovat stačí, když někdo skompiluje Python pro platformu hezké a dobře čitelné vyjímky uživatelé vědí, že se něco stalo a že to mají reportovat dostatečně rychlý

T&T: Kinetické scrolování uživatel pustí obrazovku rozhodnout click/drag drag start KS spočítat rychlost kliknutí zastaví probíhající KS každý frame zjistit kolik času uběhlo od předchozího podle toho posunout lineárně brzdit když rychlost klesně pod treshold nebo dojde čas nebo posun narazí na oba kraje zastavit

T&T: Maemo autorotace modul z Gpodderu pro Python stačí zapojit callbacky při startu možno locknout v landscape/portrait

T&T: Maemo podsvícení v základu se obrazovka ztlumí a pak zhasne zhasnutí je možné odložit o 60 sekund přes DBUS připojit se na MCE zavolat req_display_blanking_pause

T&T: Maemo viditelnost je možné se připojit na MCE signál display_status_ind vypnutí zapnutí obrazovky jak poznat, že je aplikace na pozadí? is active signál na hlavním GTK okně is visible nefunguje (ani na Compizu) nevolejte na okno minimize, není to dobrý nápad :)

T&T: Tlačítka pro hlasitost jak používat tlačítka pro hlasitost na N900? viz. příklad nepěkný GTK hack :) hlásí se jako F7 a F8

T&T: Device modul různé platformy potřebují různé hacky je vhodné platformě specifický kód soustředit do device modulu jednotné API nová platforma stačí nový device modul

T&T: Profilování stačí i jednoduché časování přímo v kódu dobré pro porovnání výkonu PC vs zařízení na N900 jde použít cprofile s prof2dot dělá hezké grafy volání a stráveného času :)

Komunita a uživatelé programy nepíšeme do šuflíku, ale pro uživatele současná komunita kolem mobilních linuxových zařízení zahrnuje nadprůměrné množství pokročilých uživatelů často se jedná i přímo o vývojáře což ale nemusí platit navždy a neomlová to těžkopádný a neintuitivní návrh aplikací

Komunita a uživatelé přímá komunikace probíhá zpravidla jen s malou skupinou uživatelů většina uživatelů se nikdy neozve s nápady ani se stížnostmi je obtížné/nemožné odhadnou skutečný počet uživatelů statistiky stažení z repozitářů, pokud jsou, zahrnují jak instalace tak upgrady aktivní/neaktivní uživatelé?

Komunita a uživatelé uživatelé jsou cenným zdrojem nápadů uživatelé hlásí chyby, na které se nepřišlo během vývoje uživatelé mohou mít to, co nemáte vy jiná mobilní zařízení motorku, loď, auto, řidičák šílené nápady zpětná vazba od uživatelů poskytuje pocit zadostiučinění :)

Příklad vývojového cyklu jak může vypadat vývoj programu pro mobilní zařízení: nápad volba technických prostředků vývoj a testování balíčkování a vydání další vývoj na základě zpětné vazby od uživatelů

0. Důvod vzniku na Maemo neexistuje použitelný prohlížeč na mangu a comixy Comix je pomalý CBR Pager je neergonomický je potřeba otestovat PyClutter pro plánované použití v modraně Meego Coding Competition 2011

1. Nápad vytvořit plnohodnotnou čtečku mangy a comixů pro mobilní zařízení rychlost + kinetické scrollování ergonomie při používání podpora pro šireké spektrum formátů včetně obrázků v adresářích jednoduchý přechod na další kapitolu otevření naposledy otevřené strany při startu fullscreen tlačítko podpora hw tlačítek

2. volba technických prostředků Python kvůli snadné přenositelnost a praxi Clutter pro animaci stránek GTK + Hildon pro zbytek UI historie, konfigurace, upozornění všechny platformě specifické věci izolovat do samostatného modulu s jednotným API pro lepší přenositelnost GIT pro verzování psaní kódu na PC, testování na N900 (rsync&run)

3.1 Vývoj + příjemná překvapení: použití modulů magic a zipfile/rafile srazilo kód pro práci s archivy na pár řádků a díky selektivnímu načítání stránek otevření nové kapitoly probíhá velice rychle N900 dokáže za 250 ms vytáhnout z archivu obrázek, nahrát ho do Pixbufu a zobrazit na clutter.texture PyClutter je na N900 stabilní a nepadá portrait i kinetické scrollování (jakmile je dostatečně odlazeno) jsou velmi dobře použitelné aplikace při neaktivitě zbytečně nespotřebovává energii

3.2 Vývoj - nepříjemná překvapení: Pythoní GC bez problémů sešrotuje clutter.timeline nebo clutter.alpha pokud nejsou explicitně referencované GC naopak nestíhá uklízet clutter.texture s načtenými stránkami je nutné explicitně volat.unrealize() jinak při příliš rychlém listování dojde paměť :) Clutter dává maximálně asi 20 FPS ve fullscreen když má dialog focus, pozadí za ním se neobnovuje

3.2 Vývoj -- Clutter neumí načítat obrázky z pythoních file like objektů > je nutné je protáhnout přez Pixbuf PyClutter 1.0 který se mi na Maemo podařilo rozjet má rozbité animování průhlednosti, průhlednost je nutné animovat ručně hildon.pickerbutton neumožňuje vypnutí badge s aktuálně vybraným prvkem hildon.fileopen dialog se dlouho načítá a plive varování hildon.note nepodprouje Pango

3.3 Testování testování přímo na mobilním zařízení je velice důležité rozdílný výkon dotyková obrazovky vs myš velice důležité při ladění kinetického scrollování a filtru click/drag jednoduchý skript, který rsyncne změny na zařízení a spustí aplikaci, je super věc :) pro testování se hodí, když aplikace funguje alespoň částečně i na PC nejlépe je možné aplikaci otestovat delším používáním v reálných podmínkách

4. Balíčkování pomocí py2deb skriptu ve Scratchboxu je důležité vyplnit adresu bugtrackeru email nebo platná URL pozor na volbu kategorie (viz wiki) ikona PNG 64x64 do: /usr/share/icons/hicolor/48x48/ /usr/share/icons/hicolor/scalable kořenového adresáře s py2deb skriptem pull z GITu, spuštění py2deb skriptu a nahrání do autobuilderu pomocí webového rozhraní

5. Další vývoj podle zpětné vazby od uživatelů přímo v aplikaci jsou uvedeny kontaktní údaje emailová adresa projektu odkaz na projekt na Githubu odkaz na diskuzní vlákno na talk.maemo.org Mieru byla vydána před 12 dny, diskuzní vlákno již hlásí přez 1000 přečtení (vlákno modrany má po cca roce 75000+ přečtení) dosavadní reakce jsou pozitivní na základě zpětné vazby od uživatelů již byly objeveny & opraveny 2 celkem závažné bugy

5. Další vývoj podle zpětné vazby od uživatelů uživatelé se překvapivě dobře shodují na funkcionalitě, kterou by bylo vhodné doplnit (dotyková tlačítka pro listování, přednačítání stránek) od jednoho uživatele jsem se dozvěděl, že Mieru vlastně (částečně) podporuje epub :) počet uživatelů je klasicky složité odhadnout

Dotazy? :) Konec!