Google I/O 2019 for Android Developers

*You can read the article in English from here.

Daha çok son kullanıcıyı ilgilendiren Google I/O güncellemeleriyle ilgili paylaştığım yazıya linkten erişebilirsiniz. Bu yazıda yazılımcılara ilgilendiren başlıkları paylaşacağım.

2 yıl önce Google I/O’da Kotlin‘in artık 2. dil olarak destekleneceğinin açıklanmasının ardından Kotlin’den zaman geçtikçe daha da çok söz edilir oldu. Konferanslarda daha çok Kotlin spesifik konuşmalar görmeye, blog yazılarındaki kod örnekleri, internetde herhangi bir şeyi nasıl yapacağımızı aratırken önümüze ilk çıkan örneklerin Kotlin olması, Google’ın developer.android’deki örneklerinde ilk tabda Kotlin’in çıkması, Kotlin codelab’lerin sayısının artması, Udacity’deki free kurslar ve Kotlin için ayrı bir expert’lik kategorisinin olması gibi örnekleri rahatça sayabiliriz sanırım. Tüm bunları düşününce de bu sene Developer Keynote‘da ise artık Android’in yeni çıkacak Jetpack API’larında tanıtılacak ilk dil olacağının ve Android’in Kotlin – First ilerleyecek olmasının açıklanması en azından beni şaşırtmadı. Tabi şaşırtmamasının ardında açıklanması da bir bakıma iyi oldu. Hem bireysel olarak ilerleme-gelişim noktasında nereye daha fazla yönleneceğimizi görebilmemiz hem de her konferansta en az bir kere sorulan şirketimi Kotlin yazmaya nasıl ikna edebilirim soruları kesin bir şekilde cevap almış oldu. Bir de sanırım şunu söylemekte fayda var ki Kotlin aslında artık böyle olacak açıklaması yapılmadan önce de yazılıcıların sempatisini basitliği, boilerplate kodu kısaltması, kolay öğrenebilirliği, hızlı gelişimi, Java’yla %100 uyumu gibi özellikleriyle çoktan kazanmıştı.

Kotlin’le ilgili bir diğer duyuru ise Google ve Jetbrains tarafından ortak hazırlanan Kotlin everywhere etkinlik serisiydi. Bu etkinlik serisi temel olarak eğitici içerikteki codelab, konuşma, study jam vs’den oluşuyor olacak. Sitesinden yakınınızda var mı öğrenip katılabilir ya da organize edebilirsiniz.

Java ve C++ kullananlar için ise dil desteği devam edecekmiş. Yıllarca Android’in first development dili olarak deklare edilen Java’nın C++’la aynı kefeye konulduğunu görmek biraz üzücü açıkçası ama şu an için durum böyle 🙂

Yine geçen yıl Google I/O’da Jetpack duyurulmuştu. Jetpack aslında bence çok çok farklı bir şey sunmamakla beraber kaliteli Android uygulamaları geliştirebilmek için ihtiyacımız olan kütüphane, araç ve dökümantasyonu bi araya toplamıştı ki bu bile başlı başına büyük bir olaydı. Jetpack’deki önemli değişikliklerden biri ise androidx.* package’lı kütüphaneleri içeriyor olmasıydı ancak bunlar unbundled, backward compatibility(back to API 14) sağlayan ve sürekli güncellenen kütüphanelerdi. Bu sene açıklandığı üzereyse top 1000 uygulamadan %80’i Jetpack modüllerini kullanmaya başlamış.

Jetpack’de bu sene yeni nelerin geldiğinden bahsedecek olursak da yeni CameraX API‘yı, Architecture Components‘a gelen birkaç yenilik ve oldukça şaşırtıcı olan Compose‘du. Sanırım en çok blog post yayınıyla da en çok ilgiliyi CameraX çekti.

CameraX API‘yı Lolipop’a kadar destekliyor ve aynı zamanda piyasadaki cihazlarında %90’yla uyumlu. Tabi detaylı bilgi için ilgili sessionları izlemek ve postları incelemekte fayda var. Cihazın özelliklerine erişip, HDR, portrait, night mode gibi özellikleri kullanabilecek olmamız da hoş bir feature olmuş.

Architecture components‘la devam edecek olursak geçen sene duyurulan componentler(Work Manager, Navigation Controller) sonunda 1.0 versiyonuyla release oldular. Room‘a coroutine ve RxJava desteği geldi. Lifecycle ve Livedata modüllerine ise coroutine entegrasyonu geldi. ViewModel için SavedState ve uygulamanın performans testinin yapılmasını kolaylaştıran Benchmarking ise Architecture Components’a yeni katılan çalışmalar.

Ve Jetpack’in hepimizi şaşkına çeviren son duyurusu Compose, reactive, UI-programming library. Eğer flutter’ı biraz kurcaladıysanız mantık olarak tamamen aynı ve Anko‘yla benzer. Tamam belki de hepimizi çevirmemiş olabilir. Çok küçük bir ihtimal de olsa ola ki henüz Dört Podcast‘e hiç denk gelmediyseniz duymadıysanız ama bu yazıyı okuyorsanız dönüp podcast’lerini bir dinlemenizi tavsiye ediyorum 😀 Radyo programı edasında Android podcast’i yapıyor olmaları bir yana 5. podcast’lerini dinlerseniz aslında Compose’un onlar için çok da şaşırtıcı olmadığını görecekseniz. 🙂

Data Binding‘deki Live Class Generation‘ı da atlamayalım. Android Studio 3.5’la beraber mesela aşağıdaki örnekte TextView’e id verdiğimizde, projeyi compile etmeden de direk view’e erişebiliyoruz.

Ya da bu şekilde 😀

Data Binding iyi güzel fakat aşağıdaki tabloda tüm checkleri toplayan bir API olsaydı da tatlı olurdu.

Ki bu da View Binding adıyla Android Studio 3.6’de karşımıza çıkacakmış.

Android Studio’yla devam edersek, Project Marble‘la ilgili yazılara denk gelmiş, en azından Twitter’da gözünüze çarpmıştır. Android Studio takımı son 6 ayda yeni feature geliştirmeyi bırakıp Android Studio’nun mevcuttaki core fonksiyonlarının iyileştirilmesi için çalışmışlar ve 400+ bug’ın çözümüyle Android Studio 3.5 anons edildi. Aşağıdaki resimdeki Apply Changes aslında Instant Run. Sıfırdan tekrar yazılmış.

Geçen seneki büyük anonslardan bir diğeri de App Bundle‘dı. Ben de I/O sonrası detaylı bir yazı yazmıştım. App Bundle(bir publishing format) özet olarak uygulamanın abilanguage, density bazlı farklı olarak publishing formatın çeşitlenmesi, sadece ilgili kısmın download edilip download size’ın düşmesi olarak tanımlanabilir. Uygulamaya geçenlerde %30 a kadar uygulama boyutundan kazanç sağlanmış. Yine geçen sene anons edilen ve on-demand feature download sağlayan Dynamic Feature Modules ise uzun bir Beta sürecinden sonra I/O haftası 1.0 release’ini verdi. Tabi eğer henüz yapmadıysak App Bundle’ın avantajından yararlanmak için de Dynamic Feature’lardan faydalanmak için de uygulamada biraz değişiklik yapmak gerekiyor. Bu day 0’da uygulamamızı nasıl design ettiğimize göre ise artıp azalan bir iş yükü. Aslında bu özellikler uygulamanın size için önemliyken bir diğer yandan beraberinde getirdiği konu da distribution process’deki etkisiydi. Devamındaysa getirdiği ara ara söz edilen ve de developerlar tarafından çokça istenen in-app updates(part of Play Core library) oldu.

Asistan için anons content creator’lar ve app developer’lar için olmak üzere 2 kırılımda paylaşıldı. Markup’a basitçe How to Type eklenerek search sonuçları daha structured bir şekilde verilebilir ve aynı markup smart displayde de benzer şekilde görüntülenebilir. (3. imaj)

Geçen sene intentler aracılığıyla asistan üzerinden sesle uygulamalaya direk yönlenebileceğimiz App Actions anons edilmişti. Implement etmesi de çok basitdi. Ancak bu bir preview versiyondu ve tüm developerların geliştirimine açık değildi. Bu sene ise aşağıdaki imajdaki 4 kategoride sadece İngilizce için kullanılabilir durumda. Gerçekleştirmek için ise basitçe actions.xml dosyası hazırlamak yeterli.

Biraz da AI’ya girecek olursak, MLKit‘in 0n-device translation’ını kendi uygulamamızda kullanarak 59 dilde çeviri yapabiliriz. Google translate uygulamasını besleyenler aynı machine learning uygulamaları kullanılıyor.

Yine MLKit Object detection ve tracking API’yla uygulamamızın visual search deneyimini arttırabiliriz. Mesela IKEA, sadece kamerayı yönelterek ürünü arama özelliğini geliştirmiş.

Ve son olarak Flutter for the Web

PS: Eğer buraya kadar okuduysanız ve yazıyı beğendiyseniz, yıldızlayabilirsiniz ve paylaşabilirsiniz. 😀 Daha detaylı, ek yazılar da yolda…

Referans:

2 thoughts on “Google I/O 2019 for Android Developers

  1. Pingback: Google I/O 2019 for Android Developers | Elif Boncuk's Blog

Leave a Reply to Ahmet Cancel reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.