dr. ekler péter: a mobilszoftver két értéke – legjobb gyakorlatok és újdonságok az android...
TRANSCRIPT
A mobilszoftver két értéke az Android platform szemszögéből
A szoftver két értéke
• Másodlagos érték: a szoftver viselkedése - a szoftver azt csinálja hibamentesen, amit a felhasználó elvár
• Elsődleges érték: Tolerálja és egyszerűen alkalmazkodik a folyamatos változásokhoz, tehát könnyű módosítani (software is soft)
Android eszközök
Mi a szoftvermérnök feladata?
Kihívások
• Volt már valaha dolgunk rossz kóddal?
• „Olvasni a kódot több idő, mint írni”
• Volt már olyan eset, hogy nem volt idő egy feladat „szakszerű” megoldására, a kód tisztítására, a rövid határidő miatt?
„Ahogy nő a kód mennyisége, úgy csökken a fejlesztők produktivitása.”
Kódolási elvek, megfontolások
Reference: https://cleancoders.com/
• Új szoftver rendszerek fő jellemzői:> Folyamatosan változó követelmények
• Agilis fejlesztés
• Csapatmunka
• Kódminőség
• Szoftver életciklus
Mi a Clean Code? Miért van rá szükség?
• Mi a szoftver igazi értéke?> Karbantarthatóság
> Folyamatos továbbfejleszthetőség és szállítás
• Elnevezés> Small scope: long, descriptive name> Big scope: short name
• Kis osztályok
• Egy függvény csak egy dologért felelős
• Rövid metódusok> Maximum ~4 sor!
• Kevés argumentum> Maximum 3
• Nincs boolean argumentum
• Nincs „kimeneti” argumentum
Alap Clean Code elvek
Android fejlesztés• Hibamentes, hatékony működés• Megfelelő library-k és eszközök ismerete, illetve használata• Fejlesztőkörnyezet kialakítása
> Verziókezelés
> Continous Integration (Jenkins, CircleCI, …)
> Tesztelés
– Unit tesztek
– Integrációs tesztek
– Teszt környezet
• Clean code
> Kódminőség
> Kód újrafelhasználhatóság
> SOLID tervezési elvek
> Refaktor
• Optimalizálás> Memória, CPU használat és energiafogyasztás
• Test Driven Development
Cserkész szabály
• Nem elég jól megírni a kódot, hanem tisztán is kell tartani
• „Hagyd a tábort tisztábban, mint ahogy kaptad!”
Android Studió újdonságok
Navigation Editor
Theme Editor
• Több méret egyidejű nyomonkövetése
• Témák áttekintése
• Android verzió alapú renderelés
• Drag&Drop
• Komponens fa
Live layout (preview all screen size)
Lint• Android
> Spell checking
> Android XML fájlok vizsgálata
> Régebbi verziókon nem elérhető attribútumok
> Hardcode text
> Lokalizáció használatára figyelmeztet– pl. SimpleDateFormat
> Layout felfújás parent megadás nélkül
> Padding margin symmetry
> Nem használt erőforrások
> Láthatóságok– pl. hol lehet szigorúbb
• Cody style
• Control flow
• Data flow
• Declaration redundancy
• Import
• Lehetséges bugok> itt pár érdekes példa
• XML
• Live template: CTRL + J> Live template készítés: Tools-> „Save as live template”
• Jobbegér-> „Compare with clipboard”
• Jobbegér-> „Create Gist”
• Osztálynév kijelölés -> Alt+Enter -> „Create Test”
• Jobbegér-> „Search with Google”
• XML Validator
• Tools -> New scratch file
• …
További érdekességek
• „Import Android Code Sample”
• Gazdag projekt készlet> Leírás
> Preview !
• API képességek felderítése
• API-k megfelelő használatának megismerése
• Ötletek
Példa projektek – API explorer
Android Support Library-k
Support Library típusok• Support V4
> Pl. NestedScrollView
• Media Router> android.support.v7.media
• RecyclerView> Dinamikus tartalmak, listák
• AppCompat> Általános widgetek
• Design Support Library> Material design elemek
• Custom Tabs Support Library
• Leanback> Android TV design
• Palette> Színek kiválasztása képekből
• …és…?:
• Percent Support Library
• További util libek, például Maps Util Lib:> https://developers.google.com/maps/documentation/android-api/utility/
Percent Support Library• Százalék alapú méret megadás
• Függőség:> com.android.support:percent:23.0.0
• Példa:
<android.support.percent.PercentRelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent">
<Viewandroid:id="@+id/top_left"android:layout_width="0dp"android:layout_height="0dp"android:layout_alignParentTop="true"android:background="#ff44aacc"app:layout_heightPercent="20%"app:layout_widthPercent="70%" />
</android.support.percent.PercentRelativeLayout>
Android külső osztálykönyvtárak és eszközök
Külső könyvtárak• Dagger: http://square.github.io/dagger
• ButterKnife: http://jakewharton.github.io/butterknife
• Retrofit: http://square.github.io/retrofit
• OkHttp: http://square.github.io/okhttp
• Glide? https://github.com/bumptech/glide
• LeakCanary: http://github.com/square/leakcanary
• RetroLambda: https://github.com/orfjackal/retrolambda
• RxJava: https://github.com/ReactiveX/RxJava
• RxAndroid: https://github.com/ReactiveX/RxAndroid
Clean Architektúra• Viper (View, Interactor, Presenter, Entity, Routing):
> http://mutualmobile.github.io/blog/2013/12/04/viper-introduction/
• Clean Architecture:> https://github.com/android10/Android-
CleanArchitecture> http://fernandocejas.com/2014/09/03/architecting-
android-the-clean-way/> http://fernandocejas.com/2015/07/18/architecting-
android-the-evolution/
• Facebook flux architecture:> https://facebook.github.io/flux/docs/overview.html#cont
ent
Stetho
• Fő funkciók:> Adatbázisok vizsgálata
> Hálózati kommunikáció
> View hierarchy
• Használat:> Saját Application osztály
–Stetho.initializeWithDefaults(this);
> chrome://inspect/#devices
További eszközök
• Genymobile:> Custom firmware készítés
> Teszt környezet
> http://www.genymobile.com/
• Samsung Remote Test lab:> http://developer.samsung.com/remotetestlab/rtlDev
iceList.action
• Material icon pack-ok:> Hivatalos: https://www.google.com/design/icons/
> 3rd party, bővített: https://materialdesignicons.com/
Esettanulmány: SocialDriving
VehicleICT architektúra - SensorHUB
Monitoring Interface
Business Intelligence and
Reporting
Automated Data Analysis
Push Notification
Service
Vehicle Data Query Interface
RAW Data
Hadoop
Analytic. DB 1
AnalyticDB 2
AnalyticDB n
OBD2
CAN Bus
Adat gyűjtés, helyi szolgáltatások, megjelenítés
BI Reports and Dashboards
Monitoring Data
Alkalmazások és szolgáltatások
Személyre szabott visszajelzés,
közösségi integráció,PUSH értesítések
SocialDriving koncepció
• Közösségi vezetés, „gamification” elemek
• Háttérben futó vezetési stílus felügyelet
• Fogyasztás és káros anyag kibocsátás összehasonlítás
> Hasonló autók és motortípusok> Hasonló időben utazók> Hasonló vezetési stílusú sofőrök
• OBD eszköz nélkül is kipróbálható
• Hely alapú értesítések, flotta és szerviz szolgáltatások
Fogyasztás, káros anyag kibocsátás
Élő térkép, hely függő értesítések
Együttműködés meglévő navigációs szoftverekkel (lebegő ablak)
Android Wear – jövő a jelenben
SocialDriving – okosóra megoldás