~~NOCACHE~~
======== Android Development Series ========
{{template>~infobox|
name=Android Development|
image=http://ondrejcermak.info/wp-content/uploads/2010/11/Android_logo.svg_.png|
organizer=[[user:da3m0n22]]|
datetime=weekly since 4.2.2013, 19h|
place=brmlab|
stream=[[stream]] }}
Každý týden přibližně hodinová přednáška na téma vývoj aplikací pro Android, a následně workshop v rámci kterého realizujeme example aplikaci na probranou teorii. Workshop se dle zkušeností může protáhnout i na 3 hodiny. Přednášky a záznamy z přednášek budou vystaveny zde na wiki.
Konkrétní den stanovíme do konce ledna 2013, přednášky budou probíhat od prvního týdne v únoru.
======== Workshopy ========
Workshopy jsou specifikovány, ale kvůli nedostatku zájmu se nebudou realizovat, pokud bude zájem o vytvoření workshopu, kontaktovat [[user:da3m0n22]]
======== Bugfixing Workshop ========
Po skonceni zakladniho kurzu se pokusime v brmlabu zorganizovat workshop, ktery se zameri na fixovani problemu existujicich open-source Android aplikaci. Identifikujeme vhodne aplikace, ktere kazdy z nas vyuziva, a na strance jednotlivych aplikaci projedeme seznam hlasenych chyb. Nektere z nich se pokusime (ci uz spolecne nebo samostatne) opravit a poslat opravy zpatky autorum. O workshopu budeme vcas informovat.
======== Further-development Workshop ========
[[https://github.com/smarek/Simple-Dilbert]]
Workshop zaměřený na vývoj a přidávání funkčností do existujícího projektu. Pro účely praxe v týmovém vývoji, přebírání exisutjícího kódu, používání Github (Issues, Pull Request, Wiki), vytváření dokumentace (Javadoc) a kontroly kvality kódu.
Pro účely workshopu se práce rozdělí podle schopností a problematiky do více prací a ty budou rozděleny jednotlivcům nebo týmům.
Example aplikace je zároveň zveřejněná v Google Play (Android Market), takže se budeme zabývat praxí správy aplikace v Google Play, podpory, nahrávání a vytváření nových verzí...
======== Plán přednášek ========
  * (1) Nastavení vývojového prostředí, úvod do struktury aplikace, podpora různých HW a SW konfigurací
    * example: Hello World
    * {{:event:helloworld.zip|Projekt Eclipse ke stažení}}
    * {{:event:android_1.pdf|Prezentace PDF}}
    * [[http://nat.brmlab.cz/talks/android/2013-02-06-android.mkv|Záznam přednášky]]
  * (2) Struktura aplikace, MVC pattern, Activity life-cycle, způsoby uložení dat
    * {{:event:helloworld2.zip|Projekt Eclipse ke stažení}}
    * {{:event:android_2.pdf|Prezentace PDF}}
    * [[http://nat.brmlab.cz/talks/android/2013-02-13-android.mkv|Záznam přednášky]]
    * example: CRUD nad SharedPreferences, Files, Cache, SQL
  * (3) Vlákna, responzivita aplikace, AsyncTask, Práce se sítí
    * example: Načítání dat z webového zdroje, persistence, zobrazení
    * {{:event:android3.zip|Projekt Eclipse ke stažení}}
    * {{:event:android3_update.zip|Projekt Eclipse po workshopu}}
    * {{:event:android_3.pdf|Prezentace PDF}}
    * [[http://nat.brmlab.cz/talks/android/2013-02-27-android.mkv|Záznam přednášky]]
  * (4) Pokročilé UI (UI pro API > v11, Action Bar), 9patch, Seznamy, Fragmenty, Zpětná kompatibilita (Support v4, v13)
    * example: Seznam načtených dat, onItemClickedListener, využití fragmentu Google Maps API
    * {{:event:android_4.pdf|Přednáška v PDF}}
    * {{:event:android4.zip|Projekt Eclipse pro Workshop}}
    * [[http://nat.brmlab.cz/talks/android/2013-03-06-android.mkv|Záznam přednášky]]
  * (5) ActionBar (ABS, Split), Options Menu, Context Menu, Dialogs, Intents
    * example: Využití ActionBarSherlock, Support v4/v11 library, options a context menu
    * {{:event:android_5.pdf|Prezentace PDF}}
    * {{:event:android5.zip|Projekt Eclipse pro Workshop}}
    * [[http://nat.brmlab.cz/talks/android/2013-03-13-android.mkv|Záznam přednášky]]
  * (6) Layout variants, Maven
    * {{:event:android6.zip|Projekt Eclipse pro Workshop a Přednášku}}
    * {{:event:android_6.pdf|Prezentace PDF}}
    * [[http://nat.brmlab.cz/talks/android/2013-03-27-android.mkv|Záznam přednášky]]
  * (7) Pokročilá témata:NDK, Bezpečnost, GC, Memory Leaks, Čistota kódu
    * {{:event:android_7.pdf|Prezentace PDF}}
    * [[http://nat.brmlab.cz/talks/android/2013-04-03-android.mkv|Záznam přednášky]]
  * (8) Pokročilá témata: 2D/3D Grafika, Ochrana kódu (ProGuard), Code Quality (FindBugs, CodePro, PMD)
Pokud nejsou aktuální záznamy přednášek nalinkovány sem, jsou k nalezení na adrese: http://nat.brmlab.cz/talks/android/
======== Použité technologie ========
  * Java
  * XML
  * SQL
  * JSON
  * SVN/GIT
======== Podporované vývojové nástroje ========
  * Eclipse 
  * Eclipse ADT
  * FindBugs (statická analýza java kódu)
  * Testování na fyzickém zařízení (použití AVD na vlastní nebezpečí, nepodporovaná metoda)
  * draw9patch - pro úpravu grafických assetů pro 9patch resizing
======== Příprava vývojového prostředí ========
Sežeňte si pro vývoj fyzické android zařízení s Android verze 4 (API 14 a výše)
  * Nainstalovat JDK a JRE prostředí
  * Stáhnout Eclipse poslední verzi pro Java vývoj (verze 3.8 by neměla dělat problémy) ([[http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/junosr1|Eclipse Juno]])
  * Nainstalovat Android SDK ([[http://developer.android.com/sdk/index.html|Stažení a instalační instrukce]])
  * Stáhnout aktualizace pro SDK a nainstalovat SDK API 17 (Sources, Javadoc, Google API) ([[http://developer.android.com/sdk/installing/adding-packages.html|Návod]]
  * Nainstalovat z [[http://marketplace.eclipse.org/|Marketplace]] ADT plugin ([[http://developer.android.com/sdk/installing/installing-adt.html|Dokumentace ADT a Návod na instalaci]])
  * Nastavit proměnnou prostředí PATH tak aby obsahovala cestu ke složce {android_sdk/platform-tools}
======== Knowledge Base (EN) ========
Informace, které asi nebudete potřebovat všechny, ale rozhodně stojí za zmínku, pokud to myslíte vážně
  * Robotium testing: http://www.vogella.com/articles/AndroidTesting/article.html
  * Supporting multiple screen resolutions: http://developer.android.com/guide/practices/screens_support.html
  * ORM:
    * http://ormlite.com/
    * https://www.activeandroid.com/
  * Permissions explained
    * http://developer.android.com/reference/android/Manifest.permission.html
    * http://www.android-permissions.org/permissionmap.html
  * Supporting multiple API levels:
    * http://developer.android.com/guide/topics/manifest/uses-sdk-element.html
    * http://stackoverflow.com/a/4994039/492624
  * ActionBar for backsupport API lower than 11
    * http://actionbarsherlock.com/
  * Fastest JSON Serialize/Deserialize library
    * http://jackson.codehaus.org/
  * Java Static Code Analysis
    * http://www.jutils.com/eclipse/index.html
    * LINT (ADT since API 16 built-in) http://tools.android.com/tips/lint
    * http://findbugs.sourceforge.net/
  * Avoiding Memory Leaks (Context Memory leaks)
    * http://android-developers.blogspot.cz/2009/01/avoiding-memory-leaks.html
  * ACRA - collecting crash logs from devices (many useful info for debugging in deploy stage)
    * http://acra.ch/
  * AVD (Android Virtual Device) - Emulator enhancement
    * http://www.developer.com/ws/android/development-tools/supercharge-your-android-emulator-speed-with-intel-emulation-technologies.html
  * Java pass-by-reference / pass-by-value explanation
    * http://javadude.com/articles/passbyvalue.htm
  * Android introduction, setting up dev environment
    * http://www.youtube.com/watch?v=1fT32Gs1fBs
======== Knowledge Base (CZ) ========
  * Seriál o vývoji na Zdrojak.cz
    * http://www.zdrojak.cz/clanky/vyvijime-pro-android-zaciname/
{{tag>video}}