SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
Tomáš Kypta & Tomáš Vondráček
Užitečné Android
knihovny pro vývoj a
testování
mDevCamp 2013
Představení
•Tomáš Vondráček & Tomáš Kypta
•Android vývojáři ve společnosti
Inmite
•“perform one task and perform it
well”
•open source
Agenda
•rychlý základ
•knihovny pro vývoj
•UI, Networking, Image loaders, DI
a další
•testování
•Inmite knihovny
Rychlý základ
•ActionBarSherlock
•NineOldAndroids
•Support library
•Google Play Services
UI
•Drawer (side menu)
•Page indikátory
•Number pickers
UI - Drawer
•SlidingMenu
•android-menudrawer
•DrawerLayout
SlidingMenu
•dobře konfigurovatelné
•levé i pravé side menu
•demo aplikace v Google Play
•není podle nových guidelines
android-
menudrawer
•levé i pravé menu
•umí také bottom a top menu
•z nových guidelines umí pouze
ikonu navigation draweru
DrawerLayout
•support library v4, revize 13
•přesně podle guidelines
•s ActionBarSherlockem nefunguje
navigation drawer icon
UI - Page indikátory
•ViewPagerIndicator
•časem prověřená
•PagerSlidingTabStrip
•Google Play Tabs
•Support library
•title strip & tab strip
UI - Number
pickery
•android-betterpickers
•android-numberpicker
Networking na
Androidu
•Android má dva vestavěné HTTP
clienty
•Apache HttpClient
•lepší volba na Androidu < 2.3
•HttpUrlConnection
•lepší volba na Androidu >= 2.3
Networking
•OkHttp
•Volley
•Protocol Buffers, Protoparser
•REST - Retrofit
OkHttp
•založený na HttpUrlConnection
•Android >= 2.2
•SPDY
•gzip
•response caching
•zotaveni z chyb, connection pooling
OkHttp
•lze použít bez přepsání stávajícího
kódu
•implementuje HttpUrlConnection
API
•volitelný balík implementuje část
Apache HttpClient API
•lze použít i jako transport vrstvu
OkHttp
OkHttpClient client = new OkHttpClient();
String post(URL url, byte[] body) throws IOException {
HttpURLConnection connection = client.open(url);
OutputStream out = null;
try {
connection.setRequestMethod("POST");
out = connection.getOutputStream();
out.write(body);
if (connection.getResponseCode() ==
HttpURLConnection.HTTP_OK) {
return "OK";
}
} finally { if (out != null) out.close(); }
}
Retrofit
•REST client pro Anroid a Javu
•jednoduchá deklarace RESTového
API
•podporuje GET, POST, PUT, DELETE,
HEAD
•podporuje form encoded i multipart
data
Retrofit
•EXAMPLE
JSON (de)serializace
•GSON - jednodušší
•Jackson - rychlejší
Protocol Buffers
•definice zprávy v samostatném
souboru (.proto)
•kompiler vytvoří třídy ve zvoleném
jazyce, které reprezentují obsah
zprávy
•sdílené mezi serverem a klientem
Protocol Buffers
message User {
required sint64 objectId = 1;
optional string firstName = 2;
optional string lastName = 3;
required string email = 4;
}
Image loadery
•Android-Universal-Image-Loader
•Picasso
•Volley
Android-Universal-Image-
Loader
•výborně konfigurovatelný
•memory a disk cache
•podpora pro HttpUrlConnection i
HttpClient
•nijak explicitně nepracuje s
HttpResponseCache
Picasso
•velice snadno se používá
•využívá memory a disk cache
(HttpResponseCache)
•umí placeholdery, error drawably
•transformace obrázků
•využívá OkHttp nebo
HttpUrlConnection
Picasso
Picasso.with(context)
.load(url)
.into(view);
Dependency
injection
•univerzální pattern, v zásadě netřeba
knihoven
•testování
•JSR 330
•RoboGuice & Dagger
DI - RoboGuice (google-
guice)
•reflexe
•graf objektů se vytváří při startu
•řádově stovky ms pro hello world
•musí naloadovat všechny classy
DI - RoboGuice
•kromě DI přináší spoustu android
specific featur
•např. @InjectView,
@InjectResource
•activty a fragmenty musí dědit od
Robo tříd
DI - Dagger
•využívá anotační procesor ke
generování kódu
•compile-time validace
•zanedbatelný overhead
DI - Dagger
•EXAMPLE
Obecné
•Butterknife
•Guava
•Otto Event Bus
Butterknife
•knihovna pro View injection
•odstraňuje boilerplate při práci s
views
•využívá generovaný kód
•v IDE zapnout anotační procesor
Butterknife
@InjectView(R.id.btn) Button vBtn;
@InjectView(R.id.txt_content) TextView vContent;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Views.inject(this);
...
}
Guava
•Google's core Java libraries
•široké spektrum funkcionalit
•kolekce, caching, strings, IO, ...
Otto Event Bus
• umožňuje komunikace mezi moduly, které mohou
zůstat odděleny
mBus.post(new
LogOutEvent(LogOutEvent.TIMEOUT));
...
@Subscribe
public void didLogOut(LogOutEvent event) {
Toast.makeText(this, R.string.logout,
Toast.LENGTH_SHORT).show();
}
Testování
•unit testy
•UI testování
Unit testy
java.lang.RuntimeException:
Stub!
Unit testy - Android
SDK
•Android JUnit extension + Mock
objekty
•přinejmenším nepohodlné
•dlouhé buildění a nahrávání do
zařízení
•omezený testovací framework
Unit testy - Robolectric
2.0
•testování androidí aplikace bez
zařízení/emulátoru
•standardní JUnit 4 testy v JVM na
počítači
•android třídy jsou zastíněny vlastní
FEST Android
•přinaší asserty specifické pro Android
assertThat(listAdapter)
.isNotNull()
.hasCount(10)
.hasViewTypeCount(2);
Robolectric+FEST Android =
WIN
•zcela nový level unit testů na
androidu
•snadno se píší a rychle spouští
Robolectric+FEST Android =
WIN
•EXAMPLE
Inmite knihovny
•android-styled-dialogs
•https://github.com/inmite/
android-styled-dialogs
android-styled
dialogs
Díky
•Otázky?
Odkazy
• http://actionbarsherlock.com/
• http://nineoldandroids.com/
• https://github.com/jfeinstein10/SlidingMenu
• https://github.com/SimonVT/android-menudrawer
• http://developer.android.com/training/implementing-
navigation/nav-drawer.html
• http://viewpagerindicator.com/
• https://github.com/astuetz/PagerSlidingTabStrip
• https://github.com/derekbrameyer/android-betterpickers
• https://github.com/SimonVT/android-numberpicker
Odkazy
• http://square.github.io
• https://gist.github.com/JakeWharton/
5616899
• https://github.com/nostra13/Android-
Universal-Image-Loader
• http://jakewharton.github.io/butterknife/
• https://code.google.com/p/guava-libraries/
• http://robolectric.org/

Contenu connexe

Similaire à Užitečné Android knihovny pro vývoj a testování

Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]Tomáš Kukol
 
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]Kuba Břečka
 
PhoneGap Školení #1
PhoneGap Školení #1PhoneGap Školení #1
PhoneGap Školení #1Martin Kaše
 
Použití Next.js a Reactí UI khinihovny v aplikaci
Použití Next.js a Reactí UI khinihovny v aplikaciPoužití Next.js a Reactí UI khinihovny v aplikaci
Použití Next.js a Reactí UI khinihovny v aplikaciMartin Krištof
 
vSphere automation workshop python
vSphere automation workshop pythonvSphere automation workshop python
vSphere automation workshop pythonVladan Laxa
 
WordPress REST API + React + TypeScript
WordPress REST API + React + TypeScriptWordPress REST API + React + TypeScript
WordPress REST API + React + TypeScriptBorek Bernard
 
Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Pavel Růžička
 
VersionPress – proč, jak a za kolik (#wcbratislava 2016)
VersionPress – proč, jak a za kolik (#wcbratislava 2016)VersionPress – proč, jak a za kolik (#wcbratislava 2016)
VersionPress – proč, jak a za kolik (#wcbratislava 2016)Borek Bernard
 
Výběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí clouduVýběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí clouduJan Kodera
 
Oxygen Builder - Kyslík pro WordPress
Oxygen Builder - Kyslík pro WordPressOxygen Builder - Kyslík pro WordPress
Oxygen Builder - Kyslík pro WordPressAleš Sýkora
 
Content Management Framework Drupal aneb 80% webu za pár hodin. Hodí se i pro...
Content Management Framework Drupal aneb 80% webu za pár hodin. Hodí se i pro...Content Management Framework Drupal aneb 80% webu za pár hodin. Hodí se i pro...
Content Management Framework Drupal aneb 80% webu za pár hodin. Hodí se i pro...Vojtěch Kusý
 
Webová prezentace - case study - Ibis interiér
Webová prezentace - case study - Ibis interiérWebová prezentace - case study - Ibis interiér
Webová prezentace - case study - Ibis interiérSun Marketing
 
Vývoj Windows Store aplikací pomocí HTML, CSS a Javascriptu
Vývoj Windows Store aplikací pomocí HTML, CSS a JavascriptuVývoj Windows Store aplikací pomocí HTML, CSS a Javascriptu
Vývoj Windows Store aplikací pomocí HTML, CSS a JavascriptuJindra Parus
 
First class
First classFirst class
First classITea4you
 
First class
First classFirst class
First classITea4you
 
Webová prezentace - case study - Squaris Consultants
Webová prezentace - case study - Squaris ConsultantsWebová prezentace - case study - Squaris Consultants
Webová prezentace - case study - Squaris ConsultantsSun Marketing
 
Trendy a nové možnosti test automation
Trendy a nové možnosti test automationTrendy a nové možnosti test automation
Trendy a nové možnosti test automationOndřej Machulda
 

Similaire à Užitečné Android knihovny pro vývoj a testování (20)

TNPW2-2013-03
TNPW2-2013-03TNPW2-2013-03
TNPW2-2013-03
 
Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]
 
TNPW2-2014-03
TNPW2-2014-03TNPW2-2014-03
TNPW2-2014-03
 
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
 
PhoneGap Školení #1
PhoneGap Školení #1PhoneGap Školení #1
PhoneGap Školení #1
 
Použití Next.js a Reactí UI khinihovny v aplikaci
Použití Next.js a Reactí UI khinihovny v aplikaciPoužití Next.js a Reactí UI khinihovny v aplikaci
Použití Next.js a Reactí UI khinihovny v aplikaci
 
vSphere automation workshop python
vSphere automation workshop pythonvSphere automation workshop python
vSphere automation workshop python
 
WordPress REST API + React + TypeScript
WordPress REST API + React + TypeScriptWordPress REST API + React + TypeScript
WordPress REST API + React + TypeScript
 
Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)
 
VersionPress – proč, jak a za kolik (#wcbratislava 2016)
VersionPress – proč, jak a za kolik (#wcbratislava 2016)VersionPress – proč, jak a za kolik (#wcbratislava 2016)
VersionPress – proč, jak a za kolik (#wcbratislava 2016)
 
Výběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí clouduVýběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí cloudu
 
Oxygen Builder - Kyslík pro WordPress
Oxygen Builder - Kyslík pro WordPressOxygen Builder - Kyslík pro WordPress
Oxygen Builder - Kyslík pro WordPress
 
Content Management Framework Drupal aneb 80% webu za pár hodin. Hodí se i pro...
Content Management Framework Drupal aneb 80% webu za pár hodin. Hodí se i pro...Content Management Framework Drupal aneb 80% webu za pár hodin. Hodí se i pro...
Content Management Framework Drupal aneb 80% webu za pár hodin. Hodí se i pro...
 
Webová prezentace - case study - Ibis interiér
Webová prezentace - case study - Ibis interiérWebová prezentace - case study - Ibis interiér
Webová prezentace - case study - Ibis interiér
 
Vývoj Windows Store aplikací pomocí HTML, CSS a Javascriptu
Vývoj Windows Store aplikací pomocí HTML, CSS a JavascriptuVývoj Windows Store aplikací pomocí HTML, CSS a Javascriptu
Vývoj Windows Store aplikací pomocí HTML, CSS a Javascriptu
 
First class
First classFirst class
First class
 
First class
First classFirst class
First class
 
Rwd obhajoba
Rwd obhajobaRwd obhajoba
Rwd obhajoba
 
Webová prezentace - case study - Squaris Consultants
Webová prezentace - case study - Squaris ConsultantsWebová prezentace - case study - Squaris Consultants
Webová prezentace - case study - Squaris Consultants
 
Trendy a nové možnosti test automation
Trendy a nové možnosti test automationTrendy a nové možnosti test automation
Trendy a nové možnosti test automation
 

Plus de Tomáš Kypta

Modern Android app library stack
Modern Android app library stackModern Android app library stack
Modern Android app library stackTomáš Kypta
 
Guide to the jungle of testing frameworks
Guide to the jungle of testing frameworksGuide to the jungle of testing frameworks
Guide to the jungle of testing frameworksTomáš Kypta
 
Guide to the jungle of testing frameworks
Guide to the jungle of testing frameworksGuide to the jungle of testing frameworks
Guide to the jungle of testing frameworksTomáš Kypta
 
Practical RxJava for Android
Practical RxJava for AndroidPractical RxJava for Android
Practical RxJava for AndroidTomáš Kypta
 
Practical RxJava for Android
Practical RxJava for AndroidPractical RxJava for Android
Practical RxJava for AndroidTomáš Kypta
 
Reactive programming on Android
Reactive programming on AndroidReactive programming on Android
Reactive programming on AndroidTomáš Kypta
 
Writing testable Android apps
Writing testable Android appsWriting testable Android apps
Writing testable Android appsTomáš Kypta
 
Android Develpment vol. 2, MFF UK, 2015
Android Develpment vol. 2, MFF UK, 2015Android Develpment vol. 2, MFF UK, 2015
Android Develpment vol. 2, MFF UK, 2015Tomáš Kypta
 
Unit testing and Android
Unit testing and AndroidUnit testing and Android
Unit testing and AndroidTomáš Kypta
 
Android Development for Phone and Tablet
Android Development for Phone and TabletAndroid Development for Phone and Tablet
Android Development for Phone and TabletTomáš Kypta
 
Reactive programming on Android
Reactive programming on AndroidReactive programming on Android
Reactive programming on AndroidTomáš Kypta
 
Android development - the basics, MFF UK, 2014
Android development - the basics, MFF UK, 2014Android development - the basics, MFF UK, 2014
Android development - the basics, MFF UK, 2014Tomáš Kypta
 
Android Development 201
Android Development 201Android Development 201
Android Development 201Tomáš Kypta
 
Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013Tomáš Kypta
 
Programování pro Android - úvod, FI MUNI, 2013
Programování pro Android - úvod, FI MUNI, 2013Programování pro Android - úvod, FI MUNI, 2013
Programování pro Android - úvod, FI MUNI, 2013Tomáš Kypta
 
Android development - the basics, MFF UK, 2012
Android development - the basics, MFF UK, 2012Android development - the basics, MFF UK, 2012
Android development - the basics, MFF UK, 2012Tomáš Kypta
 
Android development - the basics, FI MUNI, 2012
Android development - the basics, FI MUNI, 2012Android development - the basics, FI MUNI, 2012
Android development - the basics, FI MUNI, 2012Tomáš Kypta
 

Plus de Tomáš Kypta (18)

Modern Android app library stack
Modern Android app library stackModern Android app library stack
Modern Android app library stack
 
Guide to the jungle of testing frameworks
Guide to the jungle of testing frameworksGuide to the jungle of testing frameworks
Guide to the jungle of testing frameworks
 
Guide to the jungle of testing frameworks
Guide to the jungle of testing frameworksGuide to the jungle of testing frameworks
Guide to the jungle of testing frameworks
 
Practical RxJava for Android
Practical RxJava for AndroidPractical RxJava for Android
Practical RxJava for Android
 
Practical RxJava for Android
Practical RxJava for AndroidPractical RxJava for Android
Practical RxJava for Android
 
Reactive programming on Android
Reactive programming on AndroidReactive programming on Android
Reactive programming on Android
 
Writing testable Android apps
Writing testable Android appsWriting testable Android apps
Writing testable Android apps
 
Android Develpment vol. 2, MFF UK, 2015
Android Develpment vol. 2, MFF UK, 2015Android Develpment vol. 2, MFF UK, 2015
Android Develpment vol. 2, MFF UK, 2015
 
ProGuard
ProGuardProGuard
ProGuard
 
Unit testing and Android
Unit testing and AndroidUnit testing and Android
Unit testing and Android
 
Android Development for Phone and Tablet
Android Development for Phone and TabletAndroid Development for Phone and Tablet
Android Development for Phone and Tablet
 
Reactive programming on Android
Reactive programming on AndroidReactive programming on Android
Reactive programming on Android
 
Android development - the basics, MFF UK, 2014
Android development - the basics, MFF UK, 2014Android development - the basics, MFF UK, 2014
Android development - the basics, MFF UK, 2014
 
Android Development 201
Android Development 201Android Development 201
Android Development 201
 
Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013
 
Programování pro Android - úvod, FI MUNI, 2013
Programování pro Android - úvod, FI MUNI, 2013Programování pro Android - úvod, FI MUNI, 2013
Programování pro Android - úvod, FI MUNI, 2013
 
Android development - the basics, MFF UK, 2012
Android development - the basics, MFF UK, 2012Android development - the basics, MFF UK, 2012
Android development - the basics, MFF UK, 2012
 
Android development - the basics, FI MUNI, 2012
Android development - the basics, FI MUNI, 2012Android development - the basics, FI MUNI, 2012
Android development - the basics, FI MUNI, 2012
 

Užitečné Android knihovny pro vývoj a testování