Přejít k navigační liště

Zdroják » Mobilní vývoj » Vývoj pro Android – I

Vývoj pro Android – I

Články Mobilní vývoj

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í.

Komentáře

Subscribe
Upozornit na
guest
13 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
MD

A jak je to v praxi? Emulator emuluje? Instalace SDK bezproblemova?

Pitrsonek

V praxi je to naprosto OK vše funguje jak má.

J.B.

A co nějaké certifikáty pro podepsání aplikací. Četl jsem, že se s něma zápasí celkem douho…

Pavel Petrek

Prekvapive to v praxi opravdu funguje – setup prostredi je rychlovka. Obcas, kdyz clovek v prubehu vyvoje pripojuje a odpojuje k pocitaci telefon, tak se zblazni debugger bridge, ale restart debuggeru problem vyresi.

Jediny obvykly zasek pri naskoceni do vyvoje, ktery jsem zaznamenal naposledy pri workshopu na CVUT, je vytvoreni noveho projektu, kdyz vyvijis na Macu. Android framework ocekava jiny source-level projektu nez Eclipse defaultne nastavi.

A emulator opravdu emuluje :-)

MD

Tak to je chvalihodne. Moje zkusenosti s vyvojem pro Symbian jsou prave horsi, treba emulator uplne spravne neemuloval :-)

Vojtech.Semecky

To mě taky příjemně překvapilo. Co jsem odzkoušel v emulátoru, mi pak v telefonu napoprvé chodilo a skutečně to vypadalo stejně jako v tom emulátoru.

Pesi

Pekny clanek, bude nejake pokracovani s pokrocilejsi tematikou (ne jen hello world)

Pavel Petrek

Zatim je planovane jen jedno pokracovani – a to z ceho prakticky stavime aplikace. Jestli tam bude neco pokrocilejsiho uvidis sam, me se to tezko pusuzuje :-).

nino

no na skusenosti co mas s vyvojom android apps by si mohol dat viac dielov. Specificky vzdy k nejakej teme, napr. http connection, db, prenosy stavov cez screeny …

Ansko

Zdravím všechny. Sháním vývojáře pro Android a iOS. Pokud máte někdo zájem o spolupráci na zajímavých projektech tak se ozvěte.

Ahoj Tonda

Ansko

PS: nechtělo to mail, tak ho doplním sem kdyžtak pište na ansko@seznam.cz

ReX

Ahoj,
pokud vím tak např. Androworks nabízí také vývoj Android aplikací.

Johny

Dobry den, chtel bych se zeptat, jestli se v tomto prostredi da pracovat s gyroskopem, ktery maji lepsi modely s androidem. Jestli vlastne dokazu v tomto udelat aplikaci, ktera reaguje na gyroskop.

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.

Pocta C64

Za prvopočátek své programátorské kariéry vděčím počítači Commodore 64. Tehdy jsem genialitu návrhu nemohl docenit. Dnes dokážu lehce nahlédnout pod pokličku. Chtěl bych se o to s vámi podělit a vzdát mu hold.