Vývoj pro Android – I

Mobilním zařízením, schopným pracovat s webem, určitě patří budoucnost – alespoň ta nejbližší. Do vývoje v této oblasti razantně vstoupil Google se svým OS Android: Počet zařízení, založených na tomto OS, narůstá, a lze jej použít nejen v mobilních telefonech, ale i v tabletech či netboocích. Pojďme se na Android podívat blíže.

Příběh Androidu pod taktovkou Googlu začal, podobně jako u spousty dalších produktů či projektů, akvizicí. Stalo se tak v roce 2005, a jednalo se koupi malého kalifornského startupu Android, Inc. Od té doby se začalo všemožně spekulovat o tom, že Google připravuje svůj vlastní “Google phone”. Skutečnost byla ale jiná, mnohem odvážnější. V listopadu 2007 Eric Schmidt oznámil, že Google spolu s dalšími velkými partnery v Open Handset Alliance pracuje na otevřené softwarové platformě pro mobilní telefony s názvem Android.

První část plánu byla tedy jasná: Google pracuje na platformě, postavené na Linuxu, která umožní výrobcům získat pro jejich telefony mobilní operační systém s mnohem nižšími náklady, vývojářům umožní pohodlný vývoj pro tyto telefony a zároveň všem stranám poskytne kanál pro distribuci nových aplikací. Aby Google motivoval pořádný rozjezd platformy, vyhlásil pro vývojáře rovnou na začátku, tedy deset měsíců před prvním Android zařízením, soutěž o nejlepší aplikace, Android Developers Challenge. Do soutěže vložil deset milionů dolarů pro vítězné aplikace, a k tomu dal k dispozici i betaverzi SDK (emulátor, knihovny, debugger), které spolu s pokročilým Eclipse pluginem dávalo jasně znát, že při vývoji pro Android půjde opravdu hlavně o programování, ne o zápas s IDE.

SDK od té doby ušlo velký kus cesty a jeho nejaktuálnější podobu můžeme stáhnout podle Quick Start Instrukcí. V kroku 4 nám pro účely vyzkoušení stačí stáhnout komponenty:

  • Android SDK Tools
  • SDK Platform Android 1.6, API 4
  • SDK Platform Android 2.1, API 7
  • Google APIs by Google Inc., Android API 4
  • Google APIs by Google Inc., Android API 7

Pokud tento jednoduchý postup dodržíme, získáme prostředí, jehož součástí je emulátor ARMového zařízení, připravené systémové obrazy odpovídající příslušným verzím Android frameworku a k tomu všemu ADT (Android Development Tools) plugin pro Eclipse, který nám umožní celé SDK pohodlně ovládat a ladit aplikace jak na emulovaném zařízení, tak na reálném telefonu. Emulovaných zařízení navíc můžeme vytvořit a obsluhovat hned několik, abychom i bez fyzických telefonů mohli vyladit své aplikace pro všemožné konfigurace rozlišení obrazovek, hardwarových či softwarových klávesnic, přítomné či nepřítomné ovládací trackbally a jiné variabilní vlastnosti telefonů s Androidem. Pokud potřebujeme pouze přistupovat k telefonu a analyzovat jeho stav, postačí nám DDMS – nástroj umístěný v adresáři SDK/tools, který se bez Eclipse obejde.

Co se výkonu týče, pro tvorbu aplikací postačí běžný vývojářský stroj, na kterém pod Windows, Linuxem či MacOS provozujeme Eclipse, plus je dobré počítat nějakých 512MB paměti pro chod emulátoru. Zkušenost z Windows XP praví, že 3GB paměti + Core2 Duo 2.2GHz stačí. Reálná Android zařízení, pro které vyvíjíme, pak začínají na cca 350MHz ARMv9 procesorech a v nejnovějších zařízeních pak tikají 1GHz procesory Snapdragon ARM.

Je to Java, není to Java

V Androidu píšeme primárně v Javě, což usnadňuje minimálně první kroky. Na druhou stranu pouhá znalost Javy nestačí – jsme totiž na mobilním zařízení, a pravidlo “Intel to za nás vyřeší” zde tak docela neplatí. Pokud pravidlo pro účel tohoto článku zjednodušíme a aktualizujeme, bude znít “příliš mnoho abstrakce dříve spolkne baterii”. Ke znalosti Javy tedy u Androida musíme ještě začít “mobilně” programovat. (K tématu optimalizovaného vývoje můžu jako přídavek po přečtení tohoto článku vřele doporučit záznam ze session Jeffrey Sharkeyho z loňského Google IO.)

Co z Javy jistě využijeme je znalost všemožných API. Android API odpovídá zčásti Java SE, zčásti pak již v základu obsahuje Apache knihovny užitečné při kódování aplikací v prostředí Internetu (např. org.apache.http.*). Tento základ je doplněn spoustou API šitých na míru pro Android (práce s grafikou, uživatelskými účty, bluetooth, SQLite DB, touch gestures a mnoho dalších). Konkrétní seznam packages (balíčků) nalezneme v referenční dokumentaci.

Zapsáním kódu v Javě jsme ale s Javou, jak ji známe, skončili, nastupuje Dalvik. Aplikace je při buildu přeložena proti .jar knihovnám Android frameworku, sestávajících z hromady stub tříd bez těla, a výsledné soubory .class jsou přeloženy do bytekódu pro běh na Dalvik Virtual Machine.

Dalvik VM je mozkem Android frameworku. Na rozdíl od Javy a jejího bytekódu se u Dalvika snažili v Google vytvořit VM optimalizovanou pro běh v mobilním prostředí. Instrukce Dalvik bytekódu jsou úspornější nejen v binárním zápisu, ale také při emulaci. Výsledný kompilát je pak kód aplikace, sbalený v jediném binárním .dex souboru. Just-In-Time compiler zatím není integrální součástí Android platformy, přestože již existují funkční implementace třetích stran.

Aby byl výčet úplný, nutno dodat, že u částí aplikace, kde vyžadujeme vysoký výkon, můžeme kód napsat také v C/C++ a kód je pak přeložen přímo do nativního kódu (více o Native Development Kitu). Podporované jsou v tento okamžik pouze ARM procesory a celý postup je dobré pořádně promyslet, protože např. samotné přepnutí z VM kontextu do binárního kódu není co do výkonu nijak levná záležitost.

V příštím pokračování se podíváme podrobněji na samotný Android a na jeho vnitřní uspořádání.

Autor vyvíjí pro Android ve společnosti Inmite, která se specializuje na vývoj pro smartphony (kromě Androidu i Blackberry či iPhone). O Androidu i přednáší.

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 13

Přehled komentářů

MD praxe
Pitrsonek Re: praxe
J.B. Re: praxe
Pavel Petrek Re: praxe
MD Re: praxe
Vojtech.Semecky Re: praxe
Pesi Pokracovani
Pavel Petrek Re: Pokracovani
nino Re: Pokracovani
Ansko Nějaký volný vývojář pro Android ?
Ansko Re: Nějaký volný vývojář pro Android ?
ReX Re: Nějaký volný vývojář pro Android ?
Johny Re: Vývoj pro Android - I
Zdroj: https://www.zdrojak.cz/?p=3230