2017. május 31.

Androidos újdonságok a Google I/O 2017-en

10 perc olvasási idő

Androidos újdonságok a Google I/O 2017-en

Újra eljött az idő, amikor a Google megbombáz minket elég sok bejelentéssel és prezentációval egy konferencia keretében. Nagyjából 54 darab, összesen 30 órányi Androidos prezentációt tudsz megnézni. Kigyűjtöttem a szerintem lényegesebb, érdekesebb infókat és prezentációkat:

Újdonságok

Kotlin

Mostantól a Google is támogatja ennek a nyelvnek a használatát Androidhoz. Ha valakit visszatartott a támogatás hiánya, most már ez az akadály is eltűnt.

Az IntelliJ-t fejlesztő JetBrains hozta létre a nyelvet még 2011-ben. Az elmúlt 1-2 évben kapott szárnyra, lett népszerű.

Kotlin sorok száma githubon 2016-ra 2 millót elérte

A nyelv előnye többek között, hogy tömör, nullpointer hibákat teljesen ki lehet szedni a kódból és az Android Studio is teljes mértékben támogatja.

Hátránya a fiatalsága, ezért stílusok és fejlesztési irányelvek nincsenek, ezeket le kell fektetni. Bár az úttörő munka egyeseket csábíthat.

Ha többet szeretnél megtudni a nyelvről és jövőéről nézd meg, ahogy a JetBrains bemutatja és ahogy más fejlesztők beszélnek róla.

Instant Apps

Telepítés nélküli appok. Tavaly jelentették be őket, amikor egy zárt tesztelés indult, ezúttal pedig minden fejlesztő számára elérhető lett.

Implementálásához fel kell osztani a kódot modulokra. Ezek a modulok URL alapján lesznek elérhetőek és önállóak. Egyenként 4MB-ot nyomhatnak maximum a modulok. Az Instant Appok 23-as API-tól érhetőek el és limitált hozzáféréssel a rendszerhez. Mielőtt ráharapnál jól nézd meg tudod-e használni.

Két prezentációt is tartottak erről. Egyik leginkább a használatáról szól, a másikban pedig a készítésére adnak példát.

Architektúra

Ez az egyik talán leghasznosabb bejelentés. Sokan panaszkodnak a Fragmentek életciklusára és arra, hogy Androidon nincs ajánlott architektúra. Most tettek egy jó lépést ennek megoldására.

4 darab komponenst jelentettek be:

  • Room
  • LiveData
  • LifeCycleOwners – LifeCycleObservers
  • ViewModel
Room

AZ SQLite adatbázisodat kötheted össze Java pojo osztályokkal egyszerűen. Nagyon hasonló a Retrofithez, ha már haszáltad, ha nem akkor annotációkat kell használni ahova SQL-t kell írni. SQL fordítási időben ellenőrizve van. RxJava-val kompatibilis.

LifeCycleOwners and LifeCycleObservers

Egyes app komponenseknek életciklusuk van, ezért gyakran az onStop és onStart metódosokban kötnek ki. Ilyen például egy LocationListener osztály. Ezeket a fentiek segítségével külön osztályokba tudod átrakni, így függetleníteni az adott Activity-től vagy Fragmenttől.

LiveData

Egy olyan osztály, ami adatot tartalmaz. Ennek az adatnak a változásaira feliratkozhatsz, azaz megfigyelheted. Például a Room-mal tudsz LiveData adatot visszaadni, így figyelni az adatbázis változásait.

ViewModel

Az adataidat függetleníteni tudod a Fragmentek és Activity-k életciklusától.
Például létrehozol egy ViewModel osztály, amint létrejön az Activity. Ha elforgatod a képernyőt ugyanazt a ViewModel-t fogod visszakapni. Csak akkor fog elpusztulni, amikor elhagyod ezt a képernyőt. Így megtarthatod az adataid, hálózati hívásaid konfiguráció váltások között is.

Ez így nyilvánvalóan elég bonyolult első olvasásra, ezért nézz meg egy összefoglaló prezentációt róluk. Megnézheted még a részletesebb prezentációt is a Room-ról. Van már dokumentáció is az Android developer portálon.

Fejlesztői környezet

Az eddigi 2.4-es Android Studio-t átnevezik 3.0-ra, mivel annyi új funkció van benne. Ilyenek:

  • Kotlin
  • Java 8
  • Play Store az emulátoron
  • Fájl böngésző az emulátorhoz
  • APK analyzer fejlesztése, Proguard szabály támogatással, APK-k összehasonlítással
  • Adaptive icon generátor
  • Támogatás Instant App-hoz
  • Layout editor fejlesztések
  • Databinding támogatás RecyclerView previewhoz
  • Új memória, CPU, hálózat profiler
  • 2016.3 és 2017.1-es IntelliJ integrálva van benne

Gradle fejlesztések között van végre, hogy Debug és Release módban is lehet futtatni a könyvtárakat. Az incremental compiler is gyorsabb lett.

Összességében elég sok minden van, két videót érdemes megnézned ezzel kapcsolatban:

Support lib

Jön a 26-os support lib. Rögtön fel is emelik a minimum SDK-t 14-re, de ez nem ér valószínűleg senkit sem meglepetésként.
Fontosabb, hogy maven repóként elérhető, így nem kell SDK managerből letölteni:


repositories {
    maven {
        url 'https://maven.google.com'
    }
}

Betűtípus kezelés terén is fejlődnek. Android O újítása a font resource mappa, ami elérhető lesz a support könyvtárban is.
Mivel a fontok nagyban növelhetik az appok méretét, ezért előálltak a letölthető fontokkal. Így nem kell a betűtípusokat az APK-ba berakni, hanem első indításkor lehúzza a rendszer. A Google 800 ingyenes fontja ilyen formában elérhető.

Az EmojiTextView segítségével az új emojikat is használatba veheted. Ezek eddig az Android OS-ben voltak, így a régi api szinteken nem volt elérhető minden emoji. Ennek használatához külön függőséget szükséges majd behúznim mert külön View osztályokban érhetőek el.
AutoSize TextView a következő újdonság, ahol a szöveg mérete változik a konténerrel együtt. Ezt a meglévő TextViewCompat osztályba integrálták és a app:autoSizeTextType XML taggel érhető majd el.

Az animációknál is vannak újdonságok. Jönnek a fizikán alapuló animációk. A Rúgózás egy jó példa erre.

A prezentáció tartalmaz még TV-s és vektoros újításokat is, ezért érdemes megtekinteni.

Play Console

Ha mostanában használtad a Play Console-t, akkor látni lehetett hogy teljesen átalakult. Itt nagyon sok újdonság van:

Android vitals

Statisztika az app teljesítményéről és lehetséges problémákról. A Crash-ek és ANR-ek száma most már megemelkedik, mivel alapból gyűjti mindenkinél, aki az Android első indításnál beleegyezett az adatgyűjtésbe.
Nem csak hibák, hanem lassú és helytelen működés is látszani fog itt.

Google Play App Signing

Amikor elveszíted az APK-t aláíró kulcsodat, azt nem tudod pótolni, új appot kell létrehoznod. Ennek kivédésére elhelyezheted a kulcsodat a Google-nél. Egy feltöltési kulccsal kell aláírni majd az APK-dat, amit pótolni lehet, ha elveszíted. Ez lehetőséget ad arra is, hogy optimalizálják az appodat kiadás előtt. Egyenlőre nem kötelező részt venni benne, de talán ez lesz, majd a megoldás a lejáró kulcsokra.

Készülék katalógus

Lecserélték a régi katalógust. A készülékekről van már több információ, szűrés, keresés.

Jobb statisztika

Itt eléggé nagy változtatás történt. Egyes statisztikák már élőben jönnek. A kiadásokat és más statisztikákat össze lehet hasonlítani egymással, hogy megtudhassuk hogyan teljesít az új verzió vagy milyen összefüggések vannak.

Ezekről van pár prezentáció:

O

Tovább folyik a háború a háttérben folyó számítások ellen az akkumulátoridő megmentésére. Ha arra vagy kíváncsi pontosan miért is csinálják ezt, elmondták.
Sajnos egyes infók szerint nem csak az O-t megcélzó alkalmazásokra fognak vonatkozni a korlátozások. Az O-t futtató telefonok bármely API-t megcélzó alkamazás háttérbeni folyamatait korlátozhatják.

Designerek számára fontos újdonság a színprofilok támogatása.

Értesítéseket is teljesen átdolgozták. Ha O-t célzod meg, akkor kötelező ezzel foglalkoznod. Bevezették a csatornákat és sorba rendezték az értesítéseket is prioritás szerint. Egy UX prezentációban és egy áttekintőben megtudhatod a részleteket.

Egy dolog, amit jó volt hallani az az ART-hoz tartozó optimalizációk voltak. Gyorsítottak a objektumok lefoglalásán, ciklusokon és kevesebb memóriát fog használni a rendszer. Ajánlom a prezentációt, ahol még többet megtudhatsz.

Ajánlott prezentációk

Teljesítmény

Most, hogy Play Console-on megjelent a Vitals menüpont, voltak a teljesítménnyel kapcsolatos előadások is. Egy áttekintő prezentáció különböző eszközökről. Egy prezentáció gfx infó és systrace használatról.

Flutter

Cross-platform programozási nyelv a Flutter. iOS, Android és Fuchsia rendszerekre lehet fordítani. Dart nyelven kell programozni hasonlóan a React-hoz. Még alfa állapotban van, de lehet próbálgatni. Erről tartottak előadást.

Egyéb

Vaszil Ádám

Már sok-sok éve szeretne programozó lenni, de mivel ennyi nyelvet nehéz megtanulni, ezért inkább csak a Javara koncentrál.

Vaszil Ádám

Hozzászólások