Top Banner
41

Przybornik Pragmatycznego Programisty Androida

Jan 11, 2017

Download

Documents

VuHanh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Przybornik Pragmatycznego Programisty Androida
Page 2: Przybornik Pragmatycznego Programisty Androida

Przybornik Pragmatycznego ProgramistyAndroidaWydanie Pierwsze, data kompilacji 08-02-2015

Sylwester Madej

This book is for sale at http://leanpub.com/przybornik

This version was published on 2015-02-08

This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishingprocess. Lean Publishing is the act of publishing an in-progress ebook using lightweight toolsand many iterations to get reader feedback, pivot until you have the right book and buildtraction once you do.

This work is licensed under a Creative Commons Attribution 3.0 Unported License

Page 3: Przybornik Pragmatycznego Programisty Androida

Książka rozpowszechniana na zasadach Open Source. Źródło dostępne pod adresem:

https://github.com/smdremedy/przybornik_pragmatycznego_programisty

Wszelkie uwagi i poprawki proszę zgłaszać na email: [email protected].

Dziękuję za pomoc i poprawki:

Patrycja Kokosińska

Paweł Byszewski

Michał Gellert

Sławomir Sowiński

Marek Defeciński

Page 4: Przybornik Pragmatycznego Programisty Androida

Spis treści

1. Wstęp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

2. Narzędzia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.1 Android Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.2 Gradle (New Build System) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.3 ProGuard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.4 Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.5 Mirror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.6 Genymotion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.7 Calabash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.8 Jenkins CI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.9 Sketch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.10 Postman – Rest client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.11 DB Browser for SQLite (dawniej SQLite Browser) . . . . . . . . . . . . . . . . . 132.12 Charles Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3. Usługi i narzędzia Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.1 Gradle, Please . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.2 Android Assets Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.3 Android Pixel Calculator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.4 Material Palette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.5 Bitbucket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.6 Parse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.7 Crashlitycs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.8 StackOverflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.9 Github . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.10 TestDroid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.11 FluidUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4. Biblioteki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.1 ButterKnife . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.2 Otto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.3 Retrofit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.4 Dagger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.5 Picasso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.6 RxAndroid, RxJava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

5. Kody źródłowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

Page 5: Przybornik Pragmatycznego Programisty Androida

SPIS TREŚCI

5.1 Google IO App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305.2 Android Bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305.3 u2020 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305.4 Libraries for Developers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

6. Źródła wiedzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326.1 Strony . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326.2 Kanały YouTube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336.3 Książki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

7. Warto śledzić . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347.1 Jake Wharton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347.2 Romain Guy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347.3 Chris Banes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347.4 Nick Butcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357.5 Mark Murphy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

8. Reklama :) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368.1 Zasubskrybuj Soldiers of Mobile na YouTube . . . . . . . . . . . . . . . . . . . . 368.2 Śledź Sylwester Madej na Twitter . . . . . . . . . . . . . . . . . . . . . . . . . . 368.3 A przede wszystkim czytaj bloga . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Page 6: Przybornik Pragmatycznego Programisty Androida

1. WstępCelem niniejszego ebooka jest przedstawienie zestawu narzędzi i zasobów, których używaniewpływa na jakość i wydajność pracy programisty. Każde z nich przetestowałem na własnejskórze, podczas tworzenia wielu aplikacji. Wybór ten potwierdziło wielu programistów, zktórymi rozmawiałem na imprezach branżowych, takich jak Mobile Warsaw, Droidcon czyMobilization.

Postarałem się wybrać po jednym elemencie, z każdej kategorii. W przypadku gdy znaminne, podobne rozwiązania, podaje je jako alternatywy. Ułatwia to proces wyboru osobompoczątkującym, choć sam wychodzę z założenia, że nie ma narzędzi idealnych do wszystkiego.Dlatego też sam co jakiś czas szukam nowych, lepszych rozwiązań.

Duża część wskazanych przeze mnie narzędzi jest bezpłatna. W przypadku rozwiązań płatnychpodaję minimalną cenę, jaką musisz zapłacić jako niezależny programista, za najprostszą, alefunkcjonalną wersję produktu.

Mam nadzieję, że programiści zaczynający swoją przygodę z profesjonalnym tworzeniemaplikacji znajdą tumasę wskazówek, które pomogą im od samego początku pracować “zgodnie zesztuką”. W przypadku osób bardziej doświadczonych, liczę na to, że znajdziecie tutaj co najmniej2-3 interesujące narzędzia, które przydadzą się w Wam w pracy.

Lubię książki, które podają konkretne kroki i od samego początku przynoszą wartość. Dlategoteż mam prośbę: wybierz 1 narzędzie i zacznij z niego korzystać. Gwarantuję, że już po tygodniuzauważysz zmianę na plus!

Page 7: Przybornik Pragmatycznego Programisty Androida

2. NarzędziaZacznę od crème de la crème spośród narzędzi do tworzenia aplikacji mobilnych, czyli produk-tów dostępnych jako aplikacje desktop-owe lub wtyczki do takich aplikacji. Są to elementy, zktórymi programista spędza najwięcej czasu. Starałem się, aby wybrane narzędzia dobrze sięuzupełniały i stanowiły ekosystem, w którym praca staje się prostsza.

2.1 Android Studio

Strona http://developer.android.com/sdk/index.htmlCena FREEAlternatywy ADT/Eclipse, IntelliJ IDEA (€207)

Android Studio (AS) powstało jako rozwinięcie wsparcia dla Androida, dostępnego w edytorzeIntelliJ IDEA Community Edition. Na Google IO 2013 zostało ogłoszone przez Google jako noweoficjalne środowisko programistyczne (IntegratedDevelopment Environment, IDE) do tworzeniaaplikacji na platformę Android. Dzięki połączeniu doskonałego IDE (latami dopracowywanegoprzez firmę JetBrains) z oficjalnym wsparciem zespołu Google, jest ono zdecydowanie lepsze odADT (IDE opartego o Eclipse).

Page 8: Przybornik Pragmatycznego Programisty Androida

Narzędzia 3

Android Studio w trybie edycji layoutów z podglądem.

W celu maksymalizacji wydajności korzystania z AS, warto poświęcić trochę czasu i nauczyć sięskrótów klawiszowych oraz poznać np. mechanizm szablonów generujący kod, który często siępowtarza. Każda minuta poświęcona na naukę sztuczek w AS, to inwestycja w przyszłość. Istnie-je wiele czynności, które da się przyśpieszyć np.: generowanie par getter/setter, refaktoryzacjakodu, czy chociażby obsługa systemów kontroli wersji z poziomu IDE.

2.2 Gradle (New Build System)

Strona http://tools.android.com/tech-docs/new-build-system/Cena FREEAlternatywy Maven, ANT

Gradle został wybrany przez Google jako podstawa New Build System, który używany jestm.in. w Android Studio. „Dzięki mechanizmowi zarządzania zależnościami wykorzystującymiistniejące repozytoria, używane dotychczas przez Maven, możliwe jest korzystanie z setekbibliotek. Wystarczy dodać do pliku build.gradle, po jednej linii tekstu, opisującej każdą zwymaganych zależności. Zastosowanie Gradle pozwoliło ujednolicić konfigurację projektu,dzięki czemu w chwili obecnej budowanie z linii poleceń oraz IDE wygląda tak samo i korzystaz tej samej konfiguracji.

Page 9: Przybornik Pragmatycznego Programisty Androida

Narzędzia 4

Warto poświęcić kilka godzin, aby poznać bardziej zaawansowane możliwości systemu np.Flavors (smaki projektu), możliwość pisania fragmentów skryptu w języku Groovy czy choćbyopcje dostępne w Android Plugin dla Gradle.

Prosty plik build.gradle dla aplikacji Android

1 apply plugin: 'com.android.application'

2 android {

3 compileSdkVersion 21

4 buildToolsVersion "21.1.2"

5 defaultConfig { //podstawowa konfiguracja aplikacji

6 applicationId "com.soldiersofmobile.myapplication"

7 minSdkVersion 15

8 targetSdkVersion 21

9 versionCode 1

10 versionName "1.0"

11 }

12 buildTypes {

13 release { //włącz ProGuard przy budowaniu release

14 minifyEnabled true

15 proguardFiles getDefaultProguardFile('proguard-android.txt'),

16 'proguard-rules.pro'

17 }

18 }

19 }

20 dependencies { //zależności, czyli zewnętrzne biblioteki

21 compile fileTree(dir: 'libs', include: ['*.jar'])

22 compile 'com.android.support:appcompat-v7:21.0.3'

23 }

2.3 ProGuard

Strona http://proguard.sourceforge.net/Cena FREEAlternatywy DexGuard (€480) - rozszerzenie ProGuard o m.in. szyfrowanie

napisów, dużo lepsze zaciemnianie kodu

ProGuard powstał jako darmowe narzędzie do optymalizacji, zmniejszania i zaciemnianiaplików klas, powstałych w wyniku kompilacji kodu źródłowego w języku Java.

Został przystosowany przez zespół z Google, do współpracy z Androidem i od samego początkustanowi podstawowe narzędzie do zmniejszania objętości klas w pliku APK.

Warto nauczyć się z niego korzystać, przede wszystkim dla jego trzech unikalnych funkcji:

• usuwania niepotrzebnych klas, które zapomnieliśmy skasować z projektu lub zostałydodane w pliku JAR jakiejś biblioteki,

Page 10: Przybornik Pragmatycznego Programisty Androida

Narzędzia 5

• zaciemniania kodu (zmiana nazw metod i klas oraz pakietów), które utrudnia ciekawskimpoznanie, jak nasza aplikacja działa,

• usuwania niepotrzebnych fragmentów kodu z klas (np. nieużywanych metod, albo miejscw których logowaliśmy coś do Logcat), co okazuje się niezwykle przydatne ze względu nalimit 64 tysięcy metod w aplikacji.

Najczęściej ProGuard uruchamiany jest podczas budowania APK w wersji Release, czyli takiegojakie potrzebne jest do umieszczenia w Google Play. W przypadku budowania w AndroidStudio/Gradle, konieczne jest ustawienie flagi minifyEnabled=true, aby aktywować ProGuardjako jeden z kroków tworzenia pliku APK.

Proces działania ProGuard jest sterowany przez plik konfiguracyjny proguard-rules.pro lubpodobny. Ważne jest, aby pamiętać, że ProGuard potencjalnie może usunąć zbyt dużo kodu -może to spowodować, że aplikacja przestanie działać poprawnie. Zwykle wynika to z faktu, żeaplikacja (lub jedna z użytych bibliotek) korzysta z mechanizmu Refleksji czyli opiera swojedziałanie o nazwy metod, które ulegają zmianie podczas zaciemniania.

W takim wypadku trzeba, do pliku konfiguracyjnego dodać zestaw wyjątków, które informująprogram, że danych metod lub klas nie należy zmieniać. Często biblioteki posiadają w swojejdokumentacji gotowe fragmenty konfiguracji, które trzeba wkleić, aby poprawnie działały poużyciu ProGuarda.

Fragment pliku proguard-rules.pro

1 -keep class com.soldiersofmobile.app.events.** {*;}

2

3 # REMOVE LOGS IN RELEASE BUILDS

4 -assumenosideeffects class android.util.Log {

5 public static *** d(...);

6 }

7

8 # GENERAL

9 -keepnames class * implements android.os.Parcelable {

10 public static final ** CREATOR;

11 }

12 -keepattributes Signature,*Annotation*,EnclosingMethod,SourceFile,LineNumberT\

13 able

14

15 # KEEP FACEBOOK SDK CLASSES

16 -keep class com.facebook.** { *; }

Page 11: Przybornik Pragmatycznego Programisty Androida

Narzędzia 6

2.4 Git

Strona http://git-scm.com/Cena FREEAlternatywy Mercurial, SVN, Baazar

Git to rozproszony system kontroli wersji, który powstał aby zarządzać kodem jądra systemuLinux. Jest podstawowym narzędziem, które każdy programista powinien sobie przyswoić,ponieważ pozwala współdzielić kod w zespole, podmieniać wersje, zapisuje również każdamodyfikację pliku.

Git w chwili obecnej jest de facto standardem w projektach informatycznych i każdego dniarośnie ilość narzędzi i usług, które powstały z myślą o nim. W przypadku starszych projektów,nadal można spotkać się jeszcze z narzędziem SVN, które jest rozwiązaniem słabszym, zewzględu na konieczność korzystania z centralnego serwera.

Idea pracy z Git opiera się na zapisywaniu kolejnych wersji interesujących nas plików, wlokalnym repozytorium, które znajduje się w katalogu projektu. Dzięki temu możemy śledzićzmiany bez połączenia z siecią i synchronizować się z innymi członkami zespołu, tylko kiedytego potrzebujemy.

Przenoszenie zmian pomiędzy lokalizacjami lokalnymi i zdalnymi.Źródło: http://pl.wikibooks.org/wiki/Git/Podstawy

Dużą wartością Git jest bardzo łatwy i lekki sposób pracy z gałęziami (branches), które pozwalająnp. pisać nowe elementy aplikacji, jednocześnie mając dostęp do wersji stabilnej.

Page 12: Przybornik Pragmatycznego Programisty Androida

Narzędzia 7

2.5 Mirror

Strona http://jimulabs.com/Cena $79Alternatywy -

Mirror jest nowością, która szybko się rozwija. Z mojego doświadczenia wynika, że wprowadzazupełnie nowy sposób pracy nad interfejsem użytkownika aplikacji Android.

W dużym skrócie. Zadaniem Mirror-a jest wyeliminowanie konieczności przebudowywania iwgrywania aplikacji po wykonaniu zmiany w plikach z zasobami.

Mirror opiera się na własnych plikach XML, w których opisuje się, jakie layouty mają byćwyświetlone na ekranie oraz jakimi danymi mają zostać wypełnione. Daje to szansę podejrzeniabardzo przybliżonego podglądu aplikacji, bez konieczności pisania kodu Java i przetestowaniatego, na wielu urządzeniach jednocześnie.

Więcej informacji w mojej prezentacji z Mobilization¹.

Wypełnianie podglądu danymi działa dużo lepiej niż w AS.Źródło: http://jimulabs.com/if-studio-why-mirror/

¹http://soldiersofmobile.com/mobilization-2014-wideo-z-mojej-prezentacji/

Page 13: Przybornik Pragmatycznego Programisty Androida

Narzędzia 8

2.6 Genymotion

Strona https://www.genymotion.comCena FREE - dla zastosowań osobistychAlternatywy Emulator x86 z włączoną obsługą wirtualizacji

Genymotion to fenomen. Projekt zaczął funkcjonować jako próba uruchomienia emulacjiAndroida, w wersji na procesory x86, z wykorzystaniem VirtualBox. Obecnie rozrósł się dopełnoprawnego produktu, z którego korzysta ponad 2.5M programistów. Duża część z nichkorzysta z płatnej wersji, co gwarantuje ciągły rozwój projektu oraz coraz to nowsze opcje.

Narzędzie to ma dwie podstawowe zalety nad emulatorami dostarczanymi przez Google:

1. Jest dużo szybsze (znane są przypadki uruchamiania topowych gier 3D z Androida).2. Ma możliwość korzystania z Google Apps (Google Play, Gmail, Mapy i wszystko co

wymaga Google Play Services), tak jakby to był telefon.

Obsługa Google Apps jest co prawda nieoficjalna (ze względów licencyjnych obrazy emulatorównie mogą zawierać tych aplikacji), ale działa bardzo dobrze. Wystarczy pobrać plik zawierającyGoogle Apps (zwykle gapps-wersjasystemu.zip) i przeciągnąć na ekran emulatora. Genymotionpoprosi o potwierdzenie chęci wgrania oprogramowania, a następnie wykona restart systemu.Od tego momentu można zalogować się poprzez konto Google i np. pobierać aplikacje z GooglePlay, albo korzystać z Google Plus.

Page 14: Przybornik Pragmatycznego Programisty Androida

Narzędzia 9

Genymotion pozwala tworzyć urządzenia o różnych parametrach np. rozdzielczość, wielkość, wersja syste-mu. Twórcy przygotowali nawet kilka najpopularniejszych urządzeń.

W przypadku, gdy z jakiś powodów zdecydujesz, że Genymotion nie jest dla Ciebie, to wartoskorzystać z emulatorów x86, które są dużo szybsze od ARM, zwłaszcza jeśli mamy w systemieobsługę wirtualizacji (HAXM w Windows i OS X, KVM w Linux). Ta kombinacja powoduje, żewszystkie operacje z emulatora uruchamiane są bezpośrednio na procesorze naszego komputerai nie wymagają tłumaczenia, jak w przypadku ARM.

2.7 Calabash

Strona http://calaba.sh/Cena FREEAlternatywy Robotium, Espresso, Appium

Calabash jest narzędziem służącym do testów funkcjonalnych (klikanie po UI) aplikacji stwo-rzonych na platformy Android i iOS.

Główna idea wywodzi się z narzędzia Cucumber, które jest popularne wśród programistówRuby. Chodzi o to, aby scenariusze testów były pisane w pseudojęzyku, który z założenia maprzypominać mocno sformalizowany język angielski. Zadaniem Calabasha jest przetłumaczenietych sformułowań na zdarzenia wykonywane na aplikacji.

Page 15: Przybornik Pragmatycznego Programisty Androida

Narzędzia 10

Dużą zaletą jest brak konieczności dotykania kodu aplikacji, więc pozwala też na testowanieaplikacji, do których nie ma się dostępu (BlackBox testing).

Przykładowy scenariusz:

1 Scenario: As a invalid user I cannot log into my app

2 Given I am on "LoginActivity"

3 When I press view with id "login_button"

4 Then I take a screenshot

5 Then I see the text "Pole wymagane"

Wynik testów w Calabash może być zapisany jako plik HTML, zawierający wykonane krokioraz informację o wyniku oraz screenshoty z procesu testowania. W przypadku, gdy chcemywykorzystać Calabash w systemie Continous Integration, możliwe jest wygenerowanie raportuw postaci pliku JSON. Format ten jest identyczny z formatem używanym przez programCucumber, z którego Calabash się wywodzi i może być importowany przez wiele systemówm.in. plugin do Jenkins CI.

2.8 Jenkins CI

Strona http://jenkins-ci.org/Cena FREEAlternatywy Travis CI, Bamboo, TeamCity

Continous Integration (CI), to technika, w której serwer co pewien czas pobiera kod źródłowy isprawdza czy uda się go skompilować, uruchomić i przetestować. Dzięki temu już w kilka minutpo umieszczeniu zmian w systemie kontroli wersji, możemy się dowiedzieć czy coś zepsuliśmynp. poprzez mail rozsyłany do osób zainteresowanych.

Jenkins, to jedna z lepszych implementacji CI, a do tego darmowa. Dużą dodatkową zaletąjest możliwość skorzystania z dziesiątek pluginów, które potrafią obsługiwać różne narzędzia,systemy kontroli wersji lub po prostu wyświetlać czytelne raporty. Pluginem, który na pewnowarto używać dla testowania aplikacji jest Android Emulator Plugin, który odpowiada zatworzenie emulatorów, uruchamianie ich i zarządzanie aktualnie uruchomionymi.

Przykładowy cykl, który może realizować Jenkins CI:

1. Pobranie kodu z Git, SVN, Mercurial.2. Zbudowanie paczki z użyciem Gradle.

Page 16: Przybornik Pragmatycznego Programisty Androida

Narzędzia 11

3. Instalacja paczki na odpalonym na początku emulatorze, który działa na serwerze) luburządzeniu.

4. Uruchomienie testów z wykorzystaniem np. Calabash lub Espresso.5. Po udanym zbudowaniu i przetestowaniu, wysłanie do kanału Alpha w Google Play lub

na jakąś usługę do dystrybucji paczek np. Crashlytics.

Prognoza jest dobra - buildy się udały. Źródło: https://www.morlunk.com/jenkins/

2.9 Sketch

Strona http://bohemiancoding.com/sketch/Cena $99Alternatywy Photoshop CC (E12.29/mc w CreativeCloud)

Sketch staje się w środowisku designerów następcą Photoshopa. Jego główne zalety to: dostoso-wanie do pracy z koncepcją ekranów, niska cena, prostota obsługi. Natomiast podstawowawada,to konieczność korzystania z OS X.

Warto posiadać Sketch jeśli często otrzymujemy projekty graficzne wykonane w tym narzędziu inie chcemy polegać na kimś, kto może akurat nie mieć czasu. Korzystanie z programu jest proste- można nawet używać go jako narzędzia do tworzenia Mockup’ów aplikacji.

Page 17: Przybornik Pragmatycznego Programisty Androida

Narzędzia 12

Główne okno Sketch.

Jest to produkt otwarty na rozwój, z dobrym community, co przekłada się na dużą ilość wtyczek,pozwalających m.in.: na szybki eksport grafik do różnych rozdzielczości. Widziałem nawetwersje, umożliwiające generowanie kodu layoutów prosto z projektu w Sketch.

2.10 Postman – Rest client

Strona http://www.getpostman.com/Cena FREEAlternatywy RESTClient dla Firefox

Bardzo przydatny plugin do przeglądarki Chrome, pozwalający na testowanie API REST, bezkonieczności pisania kodu. Przyjemy interfejs użytkownika pozwala na zarządzanie wielomazapytaniami jednocześnie i testowanie API, z którym będzie się komunikowała nasza aplikacja.

Do głównych zalet Postman’a należy zaliczyć:

• łatwość tworzenia wszelkiego rodzaju zapytań HTTP,

Page 18: Przybornik Pragmatycznego Programisty Androida

Narzędzia 13

• obsługa metod uwierzytelnienia używanych w HTTP, w tym OAuth,• formatowanie wyniku zapytania jako JSON albo XML,• historia zapytań.

Narzędzie to warto wykorzystać, aby sprawdzić API zanim jeszcze zaczniemy implementowaćdane zapytanie po stronie aplikacji. Ponadto jest to idealne rozwiązanie dla programistówtworzących API, którzy chcą przetestować jak będzie się ono zachowywało dla prawdziwychdanych.

Przykładowe zapytanie do API Tumblr w Postman.

2.11 DB Browser for SQLite (dawniej SQLite Browser)

Strona http://sqlitebrowser.org/Cena FREEAlternatywy SQLite Manager - plugin dla Firefox

Kolejne proste narzędzie, które pomoże zaoszczędzić godziny przy tworzeniu aplikacji mobil-nych. DB Browser, jak sama nazwa wskazuje, służy do przeglądania zawartości bazy SQLite.Poza przeglądaniem daje także możliwości edycji oraz wykonywania zapytań SQL i podgląduwyników. Jest to doskonała alternatywa dla konsolowego klienta sqlite3, który jest dostarczany zSDK Androida. Jedyną wadą jest konieczność pobrania pliku z urządzenia do lokalnego systemuplików np. poleceniem adb pull. Gdy to już zrobimy mamy gotowy plik, na którym możemywykonywać dowolne operacje. Jeśli dokonamy jakichkolwiek zmian, to ten zmieniony plikmusimy ponownie umieścić na urządzeniu za pomocą polecenia: adb push.

Page 19: Przybornik Pragmatycznego Programisty Androida

Narzędzia 14

DB Browser pozwala m.in. podejrzeć strukturę bazy danych.

2.12 Charles Proxy

Strona http://www.charlesproxy.com/Cena $50Alternatywy Wireshark

Charles Proxy pozwala na debugowanie komunikacji HTTP pomiędzy aplikacją mobilną, a ser-werem. Do działania wykorzystuje mechanizm proxy, czyli urządzenia, przez które przechodzicały ruch sieciowy. Wystarczy wystartować program i ustawić na urządzeniu nasz komputer,jako serwer proxy, aby móc podejrzeć każdy bajt informacji przesyłany po HTTP, nawet wprzypadku szyfrowania SSL.

Właśnie wsparcie dla SSL oraz prostota obsługi sprawiają, że narzędzie to może oszczędzićgodziny. Dodatkowo, warto czasem przeanalizować co wysyłają na serwer inne aplikacje lubnp. usługi Google.

Page 20: Przybornik Pragmatycznego Programisty Androida

Narzędzia 15

Dużą zaletą Charles jest prostota nawigacji pomiędzy zapytaniami. Źródło: http://www.charlesproxy.com/

Page 21: Przybornik Pragmatycznego Programisty Androida

3. Usługi i narzędzia Web3.1 Gradle, Please

Strona http://gradleplease.appspot.com/Cena FREEAlternatywy -

Wprowadzenie New Build System, korzystającego z Gradle, znacząco uprościło zarządzaniezależnościami projektu. Wystarczy dodać jedną linię w pliku build.gradle i już biblioteka stajesię dostępna w całym projekcie. Pozostało tylko jeno pytanie: jaką linię?

Tutaj do akcji wkracza Gralde, Please, który po wpisaniu nazwy biblioteki, wyświetla liniędo skopiowania. W celu dodatkowego uproszczenia życia programistom, najpopularniejszezależności są wyświetlone na stałe.

Gradle, Please w akcji.

Page 22: Przybornik Pragmatycznego Programisty Androida

Usługi i narzędzia Web 17

3.2 Android Assets Studio

Strona https://romannurik.github.io/AndroidAssetStudio/Cena FREEAlternatywy -

Zestaw przydatnych mini-narzędzi, które pozwalają generować zasoby, pomocne zwłaszcza napoczątku projektu.

Za ich pomocą możemy wygenerować:

• ikony aplikacji np. z tekstu, clipartów, obrazku we wszystkich potrzebnych gęstościach,• styl ActionBar,• 9-patch,• osadzić screenshoty w ramce telefonów Nexus.

Część z tych narzędzi została już wbudowana w Android Studio, ale warto zapoznać się z ichmożliwościami.

3.3 Android Pixel Calculator

Strona http://angrytools.com/android/pixelcalc/Cena FREEAlternatywy -

Wymiary obiektów na ekranie Androida można podawać w wielu jednostkach. Pixel Calculatorpozwala sprawnie poruszać się pomiędzy tymi jednostkami. Dzięki temu można szybko przeli-czyć wielkość w dp lub sp, niezależnie od tego dla jakiej gęstości został przygotowany projektgraficzny.

Page 23: Przybornik Pragmatycznego Programisty Androida

Usługi i narzędzia Web 18

W trybie prostym wystarczy podać wartość w jednej jednostce i gęstość, aby otrzymać pozostałe.

3.4 Material Palette

Strona http://www.materialpalette.com/Cena FREEAlternatywy -

Szybki generator palety kolorów, do wykorzystania w aplikacjach zgodnych z Material Design.

Page 24: Przybornik Pragmatycznego Programisty Androida

Usługi i narzędzia Web 19

Wystarczy dwa kolory główne i paleta gotowa

3.5 Bitbucket

Strona https://bitbucket.org/Cena FREEAlternatywy Github, Gitlab

Bitbucket to produkt firmy Atlasian, znanego twórcy narzędzi dla zespołów programistycznych(m.in. Jira, Confulence, Bamboo). Pozwala na darmowe przechowywanie nieograniczonej ilościprywatnych repozytoriów, z ograniczeniem do 5 użytkowników. Usługa ta sprawdza się tobardzo dobrze nawet dla niewielkich zespołów/projektów i pozwala zacząć pracę z Gitem, bezkonieczności konfigurowania własnego serwera.

Dodatkowo, Bitbucket posiada dobrze rozwiniętą opcje korzystania z mechanizmu Pull Request,który umożliwia innym członkom naszego zespołu na sprawdzenie naszego kodu (Code Review).

Page 25: Przybornik Pragmatycznego Programisty Androida

Usługi i narzędzia Web 20

Widok pozwalający na komentowanie kodu w ramach Pull Request.

3.6 Parse

Strona https://parse.comCena FREE do 30 req/sAlternatywy Firebase, Google AppEngine, Azure Mobile Services

Parse to rozwiązanie typu Mobile Backend as a Service, czyli część serwerowa dla naszejaplikacji, bez konieczności pisania kodu. Twórcy tej usługi postawili sobie za cel uproszczeniedo maksimum czynności, które do tej pory trzeba było implementować w API. Mamy więc me-chanizm operowania na danych w tabelach, wysyłanie wiadomości PUSH, analitykę, logowanieFB i Twitter, a nawet pisanie logiki po stronie serwera w JS.

Przykładowo: utworzenie backendu dla aplikacji typu Tinder nie wymaga od nas pisania kodu,ponieważ możemy skorzystać z:

• logowania FB i automatycznego tworzenia kont w Parse,• zapisywania profilów, wiadomości, położenia użytkownika w odpowiednich tabelach,• wyszukiwania użytkowników w określonej odległości dzięki geoquery,• powiadamiania użytkownika o nowych aktywnościach na profilu, poprzez wiadomościPUSH.

Page 26: Przybornik Pragmatycznego Programisty Androida

Usługi i narzędzia Web 21

Do momentu gdy nasza aplikacja nie zacznie uzyskiwać znaczącego ruchu, wszystko to mamyza darmo.

Widok danych pozwala zarządzać bazą w prosty sposób.

3.7 Crashlitycs

Strona https://crashlytics.comCena FREEAlternatywy Applause, Splunk MINT, Google Play

Każda aplikacja umieszczona na sklepie wcześniej lub później będzie miała crashe. Nie da się tegouniknąć, bo nie da się też przetestować aplikacji na każdym z dziesiątek tysięcy urządzeń. Dlategowarto wyposażyć naszą aplikację w mechanizm automatycznego zgłaszania błędów, który wprzypadku wystąpienia błędu wyśle krótką wiadomość na nasz serwer. Crashlytics sprawdzasię w tej roli świetnie, a dodatkowo posiada piękny interfejs web, na którym można przeglądaćinformację o zaistniałych błędach łącznie z informacjami, na jakim modelu, wersji systemu isprzęcie wystąpiły.

W przypadku, gdy korzystaliśmy z mechanizmu obfuskacji w ProGuard, będziemy potrzebowalipliku z mapowaniem, ponieważ nazwy metod w których wystąpił błąd będą już zmienione.

Page 27: Przybornik Pragmatycznego Programisty Androida

Usługi i narzędzia Web 22

Crashlytics wyświetla błędy w postaci czytelnej tablicy.

3.8 StackOverflow

Strona https://crashlytics.comCena FREEAlternatywy -

StackOverflow jest najczęściej na pierwszymmiejscu jeśli zadasz w Google pytanie, o konkretnyproblem. Baza licząca ponad pół miliona pytań dotyczących samego Androida, pozwala częstouniknąć godzin siedzenia w poszukiwaniu rozwiązania problemu. Warto jednak wiedzieć,dlaczego to cowklejamy działa, tak aby nie zostawićw swoim kodziemagicznej czarnej skrzynki,której każdy boi się dotknąć.

StackOverflow to jednak dużo więcej niż zbiór pytań i odpowiedzi. To społeczność programi-stów, którzy chętnie dzielą się wiedzą. Wszystko wspomagane systemem punktowym, którypozwala wyróżnić się aktywnym użytkownikom. Dobra reputacja (punkty są nazywane właśniereputacją) na StackOverflow, to obok konta Github, ważny element wyróżniający CV.

Page 28: Przybornik Pragmatycznego Programisty Androida

Usługi i narzędzia Web 23

Wśród 624 tysięcy pytań o Androida, może znajdziesz odpowiedź na swoje.

3.9 Github

Strona https://crashlytics.comCena FREE dla projektów Open SourceAlternatywy -

Z punktu widzenia produktu, Github jest konkurentem Bitbucket. Jest to miejsce, gdzie możnaprzechowywać kod źródłowy własnych projektów.

Różnica wynika z modelu biznesowego i sposobu pozycjonowania produktu. Github udostępniaswoje usługi bez limitu dla repozytoriów publicznych (kod widoczny dla wszystkich), a każepłacić za przechowywanie projektów prywatnych. Dzięki takiemu podejściu, dużo projektówOpen Source przeniosło swoje kody źródłowe na Github. Ponadto serwis stał się swoistą sieciąspołecznościową dla programistów, a konto na Github stało się nowoczesną alternatywą dla CV.Często na rozmowach rekrutacyjnych konta Github uważane są za bardziej wartościowe niżsuche wpisy o projektach w CV, ponieważ pozwalają zobaczyć jakość tworzonego kodu orazsposób pracy nad projektem.

Dlatego też polecam założenie konta na Github każdemu programiście i tworzenie własnychprojektów publicznych lub też udział w istniejących już przedsięwzięciach, poprzez zgłaszanie

Page 29: Przybornik Pragmatycznego Programisty Androida

Usługi i narzędzia Web 24

poprawek w postaci tzw. Pull Request.

Na Github można znaleźć kod wielu popularnych bibliotek OpenSource.

3.10 TestDroid

Strona http://testdroid.com/Cena FREEAlternatywy Appthwack, Saucelabs

Testdroid jest jedną z wielu, bardzo podobnych usług do testowania aplikacji mobilnych. Wodpowiedzi na zwiększającą się fragmentację urządzeń korzystających z systemu Android,pojawiły się problemy z przetestowaniem aplikacji na dużej liczbie różnych urządzeń. Pojawiłsię więc pomysł, aby stworzyć miejsca, gdzie można uzyskać dostęp do dużej liczby fizycznychurządzeń, w zamian za niewielką opłatę.

Tak jak wspomniałem, serwisów takich jest wiele. Różnią się liczbą dostępnych urządzeń,ceną oraz rodzajami testów jakie da się na nich uruchomić. Rzeczą, która wyróżnia Testdroidjest możliwość założenia darmowego konta i dostęp do kilku darmowych urządzeń (dziękiwspółpracy z firmą Intel, są to głównie urządzenia z procesorami Intel Atom). To pozwala nazapoznanie się z zasadami funkcjonowania serwisu oraz na przeprowadznie testów na kilkudodatkowych urządzeniach.

Dodatkową cechą wyróżniającą, jest możliwość użycia narzędzia Testdroid Recorder, którepozwala nagrywać testy manualne i powtarzać je, na wielu urządzeniach jednocześnie.

Page 30: Przybornik Pragmatycznego Programisty Androida

Usługi i narzędzia Web 25

Widok wyników testu na urządzeniu Acer Iconia Tab 8.

3.11 FluidUI

Strona https://www.fluidui.com/Cena FREEAlternatywy Proto.io, Balsamiq Mockups

Klikalne prototypy stanowią jedną z najlepszych form dokumentacji w komunikacji programista<->klient. Pozwalają przedstawić potrzebne ekrany, sposoby nawigacji pomiędzy nimi oraz prze-testować aplikację na żywym organizmie, bez konieczności uruchamiania IDE. Bardzo częstozmniejszają ryzyko niedomówień lub ujawniają braki w projekcie.

Warto zacząć tworzenie prototypu już na etapie tworzenia lub czytania specyfikacji. Najlepiejjeśli jest to mockup typu Lo-Fi (niskiej szczegółowości, bez graficznych ozdób), tak aby klientnie przywiązywał się do jego wyglądu, tylko skupiał na nawigacji i kompletności danych.

Fluid UI jest przykładem rozwiązania, które pozwala zaprojektować ekrany, dodać prosteakcje (np. przejścia pomiędzy ekranami po naciśnięciu przycisku) i zaprezentować wynik wprzeglądarce na telefonie klienta. Wystarczy przesłać link do wygenerowanego prototypu, który

Page 31: Przybornik Pragmatycznego Programisty Androida

Usługi i narzędzia Web 26

potencjalny użytkownik, może sobie przetestować na urządzeniu.

FluidUI pozwala przygotować widoki ekranów, oraz przejścia pomiędzy nimi.

Page 32: Przybornik Pragmatycznego Programisty Androida

4. BibliotekiKażdy programista dochodzi do takiego momentu, gdy stwierdza, że coraz więcej kodu, którypisze się powtarza. Dlatego właśnie tak ważne jest w projektach korzystanie z bibliotek,zwłaszcza z tych, które są sprawdzone i uznawane za standard. Dzięki temu, ktoś kto będzieprzeglądał nasz projekt od razu będzie czuł się jak w domu.

W chwili obecnej dużą popularnością cieszą się biblioteki stworzone przez firmę Square. Więcejinformacji możesz znaleźć w mojej prezentacji z Warsjawa¹, wraz z przykładami zastosowaniaopisanych bibliotek.

4.1 ButterKnife

Strona http://jakewharton.github.io/butterknife/Cena FREEAlternatywy RoboGuice, AndroidAnnotations

Bardzo prosta bibliteka, która generuje kod związany z dostępem do UI na podstawie anotacji.Pozwala:

• zamienić findViewById + rzutowanie na @InjectView• zamienić listenery na @OnClick, @OnItemClick• operować na wielu widokach jednocześnie z użyciem tablic widoków.

Bardzo dobrze sprawdza się w połączeniu z pluginem do Android Studio o nazwie android-butterknife-zelezny. Dzięki tej parze generowanie kodu wyciągającego widoki z layoutu spro-wadza się do wywołania jednej opcji z menu.

4.2 Otto

Strona http://square.github.io/otto/Cena FREEAlternatywy EventBus

Otto to szyna danych, która działa podobnie do LocalBroadcast. W pewnym miejscu aplikacjiwysyłamy zdarzenie, które następnie odbierane jest w innych miejscach - zapisanych do odbioruinformacji o tym zdarzeniu (mechanizm Post/Subscribe). Główną przewagą nad androidowymibroadcastami jest fakt, że przesyłamy obiekty POJO, a nie instancje klasy Bundle, co zmniejsza

¹http://soldiersofmobile.com/prezentacja-kod-przykladami-uzycia-bibliotek-square-warsjawa/

Page 33: Przybornik Pragmatycznego Programisty Androida

Biblioteki 28

szanse na pomyłkę i jest dużo szybsze w implementacji.

Wykorzystanie szyny do komunikacji pomiędzy komponentami zmniejsza ilość zależnościpomiędzy nimi, a zwłaszcza konieczność implementowania dużej ilości interfejsów. Niestety,w przypadku dużych projektów wymaga dużej dyscypliny, aby zapanować nad ilością zdarzeńktóre są przesyłane. W takim przypadku niezwykle przydatny okazuje się plugin otto-intellij-plugin, który pozwala w łatwy sposób nawigować pomiędzy miejscami, w których zarzenie jestemitowane i odbierane.

4.3 Retrofit

Strona https://github.com/square/retrofitCena FREEAlternatywy Spring Rest Template, AQuery, Volley

Retrofit to najprzyjemniejszy sposób korzystania z API REST z poziomu Androida. Naszymzadaniem jest napisanie interfejsu zawierającego wszystkie metody, które będziemy chcieliwywołać na API, oraz dorzucenie anotacji, które opisują pod jakie URL-e mają te zapytaniauderzać, jakie parametry wysyłać i co odbierać.

Resztę generuje za nas Retrofit. Otrzymujemy konkretną klasę, na której możemy wywoływać temetody. Wbudowana obsługa GSON, zapewnia nam automatyczne mapowanie obiektów POJOna JSON i odwrotnie. Łatwiej się nie da.

4.4 Dagger

Strona http://square.github.io/dagger/Cena FREEAlternatywy RoboGuice, Dagger2

Dagger to implementacja wzorca Dependency Injection, czyli wstrzykiwania zależności. Celemtego podejścia jest minimalizacja ilości miejsc, w których tworzymy obiekty poprzez new

NazwaKlasy() i stworzenie centralnego repozytorium obiektów, które możemy wstrzyknąć wdowolnym miejscu aplikacji. W przypadku Androida jest to szczególnie przydatne, ponieważczęsto potrzebujemy w różnych Activity albo Fragmentach dostępu do np. SharedPreferences.Polecam przeczytanie dokumentacji i rozpoczęcie od wstrzykiwania prostych obiektów np.swoich Managerów.

4.5 Picasso

Strona http://square.github.io/picasso/Cena FREEAlternatywy AQuery, Volley, Universal Image Loader

Page 34: Przybornik Pragmatycznego Programisty Androida

Biblioteki 29

Picasso to biblioteka służąca do wyświetlania obrazków z internetu. Kropka. Posiada proste API iautomatyzuje pobieranie plików graficznych, zmianę ich rozmiaru, wyświetlanie w ImageView,cache w pamięci ram i flash. Dzięki temu możemy skupić się na tym, co ma być wyświetlone, anie jak.

4.6 RxAndroid, RxJava

Strona https://github.com/ReactiveX/RxAndroidCena FREEAlternatywy -

Biblioteka RxJava oraz jej rozszerzenie RxAndroid, pozwalają wprowadzić do Javy nowy para-dygmat - programowanie reaktywne (Reactive Programming). Jest to podejście upraszczającew znaczny sposób kod, którego zadaniem jest zarządzanie wieloma zadaniami asynchronicz-nymi, zwłaszcza takimi, które operują na danych. Dobrym przykładem jest fragment aplikacjiwymagający np. jednoczesnego wywołania wielu zapytań HTTP i połączenia ich wyników.

RxJava nie jest biblioteką, którą mogę polecić początkującym programistom. Jeśli jednak Twojeaplikacje stają się coraz większe i rośnie liczba zdarzeń lub zapytań HTTP, które wysyłasz topolecam przestudiowanie dokumentacji https://github.com/ReactiveX/RxJava/wiki. Warto takżeprzyjrzeć się dodatkowo bibliotece Retrolambda², która znacząco zmniejszy liczbę anonimowychklas, które trzeba napisać.

²https://github.com/orfjackal/retrolambda

Page 35: Przybornik Pragmatycznego Programisty Androida

5. Kody źródłowe5.1 Google IO App

https://github.com/google/iosched

Każdego roku Google IO jest najważniejszą konferencją, na której ekipa z Mountain Viewprezentuje nowości w SDK Androida. Niedługo po tym wydarzeniu udostępniany jest kodźródłowy oficjalnej aplikacji, powstałej na to wydarzenie, która jednocześnie prezentuje jaknajwięcej z nowości w SDK.

Warto przejrzeć, choć z doświadczenia wiem, że kod nie jest idealny i trudny w czytaniu, alezdecydowanie prezentuje dużo nowości.

5.2 Android Bootstrap

http://www.androidbootstrap.com/

Android Bootstrap pełni dwie role. Z jednej strony, jest to generator szkieletu projektu, a z drugiejsam szkielet jest dobrym przykładem przemyślanego projektu ze sporą ilością współpracującychbibliotek.

5.3 u2020

https://github.com/JakeWharton/u2020

Mały projekt prezentujący, jak połączyć ze sobą wiele z opisanych wcześniej bibliotek Square.

5.4 Libraries for Developers

https://play.google.com/store/apps/details?id=com.desarrollodroide.repos

Aplikacja prezentująca przykłady bibliotek, bez konieczności kompilowania ich. Wystarczypobrać z Google Play i zobaczyć, czy wybrana biblioteka spełnia nasze oczekiwania zanim jązaczniemy integrować z naszą aplikacją.

Page 36: Przybornik Pragmatycznego Programisty Androida

Kody źródłowe 31

Wszystkie biblioteki są podzielone na kategorie i dostępne z poziomu menu.

Page 37: Przybornik Pragmatycznego Programisty Androida

6. Źródła wiedzy6.1 Strony

Vogella Android Tutorials

http://www.vogella.com/tutorials/android.html

Znane źródło bardzo dopracowanych tutoriali opisujących popularne zagadnienia z zakresuprogramowania na Androida i nie tylko.

Soldiers of Mobile - Blog

http://soldiersofmobile.com

Blog, który tworzę wwolnym czasie pomiędzy projektami i szkoleniami. Staram się przekazywaćspostrzeżenia dotyczące tworzenia aplikacji, zwłaszcza od strony warsztatu programisty.

Android Weekly

http://androidweekly.net/

Cotygodniowa porcja przydatnych zasobów dotyczących programowania na Androida, przebra-nych i zebranych w jednym miejscu. Nowe biblioteki, posty na blogach i filmy wideo. Istniejemożliwość przeglądania na stronie internetowej, lub zamówienie subskrybcji wprost do skrzynkiemail.

MaterialUp

http://www.materialup.com/

Ładny katalog ładnych aplikacji. Celem MaterialUp jest prezentowanie dobrych przykładówimpementacji stylu Material Design w aplikacjach. Są tu nie tylko aplikacje Android, ale takżeiOS, a nawet aplikacje Web. Dobre źródło inspiracji i benchmarków. Zawsze polecam swoimklientom, aby zobaczyli co mogą zyskać idąc w kierunku Material Design.

Android Arsenal

https://android-arsenal.com/

Największy katalog bibliotek, narzędzi i przykładów na Androida. Z możliwością przeszu-kiwania wg. różnych kryteriów m.in. cena, rodzaj, zastosowanie. Można potraktować jakorozbudowanąwersję tego ebooka. Niestety liczba dostępnych elementów powoduje, że pomiędzyperełkami jest dużo słabych bibliotek.

Alternatywy: https://www.android-libs.com

Page 38: Przybornik Pragmatycznego Programisty Androida

Źródła wiedzy 33

6.2 Kanały YouTube

Dla tych, którzy wolą oglądać wideo, zamiast czytać istnieje kilka kanałów, które warto dodaćdo swoich subskrybcji na YouTube, aby na bieżąco dostawać powiadomienia.

Soldiers of Mobile - YouTube

https://www.youtube.com/channel/UCQUuM6One5W6odx8dDJ8Vsw

I znów kryptoreklama. Początkowo umieszczałem kursy, chwilowo lądują tam głównie zapisy zmoich prezentacji na różnych wydarzeniach. Szczerze zachęcam do subskrybcji.

Android Developers

https://www.youtube.com/channel/UCVHFbqXqoYvEWM1Ddxl0QDg

Ważny kanał dla tych, którzy chcą wiedzieć co nowego Google tym razem dodał do Androida.Oficjalny kanał, na którym zespół programistów z Google informuje o zmianach, a takżepokazuje najlepsze praktyki. Aktywny najbardziej po Google IO, gdy następują ogłoszenianowych API i narzędzi.

Google Developers

https://www.youtube.com/channel/UC_x5XG1OV2P6uZZ5FSM9Ttw

Drugi oficjalny kanał. Związany nie tylko z samym Androidem, ale także otaczającym goekosystemem usług Google.

NewCircle Training

https://www.youtube.com/channel/UCkQX1tChV7Z7l1LFF4L9j_g

Świetne źródło doskonałych prezentacji z zakresu różnych zagadnień. Warto obejrzeć zwłaszczaserię Android Bootcamp. Jest już nieco czasowa, ale większość poruszonych tam tematów nadaljest aktualna i bardzo dobrze wytłumaczona.

6.3 Książki

The Busy Coder’s Guide to Android Development

http://commonsware.com/Android/

Nietypowa książka autorstwa Mark’a Murphy’ego. Dostępna jedynie w postaci 12-miesięcznejsubskrypcji, w trakcie której otrzymujemy dostęp do aktualizacji książki - zwykle jest kilkarocznie. Jedyny tytuł, który mogę polecić z czystym sumieniem, ponieważ w każdym momenciejest aktualna. No i ta objętość: prawie 3000 stron (tak, trzy tysiące)!

Page 39: Przybornik Pragmatycznego Programisty Androida

7. Warto śledzić7.1 Jake Wharton

Strona http://jakewharton.com/Twitter https://twitter.com/JakeWhartonG+ https://plus.google.com/+JakeWharton/

Człowiek instytucja. Twórca wielu z przytoczonych bibliotek. Autorytet w kwestiiupraszczania kodu, korzystania z anotacji oraz SDK.

7.2 Romain Guy

Strona http://www.curious-creature.com/Twitter https://twitter.com/romainguyG+ https://plus.google.com/+RomainGuy/

Googler pracujący nadAndroidem. Często prezentuje nowości związane z UI.

7.3 Chris Banes

Strona https://chris.banes.me/Twitter https://twitter.com/chrisbanesG+ https://plus.google.com/+ChrisBanes/

Googler odpowiedzialny za relacje z developerami. Twórca wielu elementówbiblioteki zgodności m.in. AppCompat.

Często dzieli się na swoich profilach fragmentami kodów, realizujących konkretnezadania np. znikający Toolbar.

Page 40: Przybornik Pragmatycznego Programisty Androida

Warto śledzić 35

7.4 Nick Butcher

Strona http://www.curious-creature.com/Twitter https://twitter.com/craftyG+ https://plus.google.com/+NickButcher/

Googler odpowiedzialny za relacje na styku design/development. Umieszcza bar-dzo fajne prezentacje i przykłady. Dużo udziela się na kanale YouTube AndroidDevelopers.

7.5 Mark Murphy

Strona https://commonsware.com/mmurphyTwitter https://twitter.com/commonsguyG+ -

Twórca CommonsWare i autor ksiązki “The Busy Coder’s Guide to Android De-velopment”. Znajduje się w Top 10 najbardziej aktywnych osób na StackOverflow.Jeśli szukasz odpowiedzi na pytanie o Androida, duża szansa, że to on odpowie.Twórca dużej ilości bibliotek i częsty speaker na popularnych konferencjachmobilnych.

Page 41: Przybornik Pragmatycznego Programisty Androida

8. Reklama :)8.1 Zasubskrybuj Soldiers of Mobile na YouTube

https://www.youtube.com/channel/UCQUuM6One5W6odx8dDJ8Vsw?sub_confirmation=1

8.2 Śledź Sylwester Madej na Twitter

https://twitter.com/smdremedy

8.3 A przede wszystkim czytaj bloga

http://soldiersofmobile.com