Geçtiğimiz yıl Google IO’da Instant App’ler tanıtılmıştı. Kendi adıma web ve native arasında yeni bir köprü inşa edilmesini sağladığı için çok heyecan verici bulmuştum. Geçtiğimiz yıl içerisinde de nasıl instant app’ler yapabileceğimizle ilgili birkaç konuşma yapmıştım.
Bu seneki Google IO’da ise aynı platform tüm oyun geliştiricilere açıldı ve platformun çatı adı Google Play Instant adını almış oldu.
Google Play Instant’la nasıl başarı yakalanabileceğine dair olan linkteki konuşmadan daha detaylı olarak da inceleyebilirsiniz. Video’daki rakamlardan alıntılıyorum, kullanıcılar mobilde geçirdikleri zamanlarının %87’sini aslında app’lerde geçiriyormuş. Ancak yine videodaki rakamlara göre bu kullanıcıların yarısı bir ay içerisinde hiç yeni uygulama da kurmuyorlarmış. Bu noktada ise uygulamamızın ne kadar erişilebilir, ulaşılabilir olduğu önem kazanıyor.
Eskiden deeplinkingle uygulamanın belli bir sayfasına kullanıcıyı direk olarak yönlendirebiliyorduk. Uygulamaya Google Play dışında bi yerden de yönlendirme yaptığımız için, görünürlüğünü yine arttırmıştık ama bunun için bir web sitesine de ihtiyacımız vardı, ayrıca kullanıcının gidip tüm uygulamayı indirmesi gerekiyordu. Instant app’de ise sadece ilgili modülü indirmesi yeterli oluyor. Doğru senaryoyla çok güzel değerlendirilebilecek bir özellik, beni de ilk çıktığında tüm uygulamayı indirmeden kullanabiliyor olmamız çok heyecanlandırmıştı. Bir diğer konu ise indexlemeyi Google Play üzerinden yaptığı için ekstra bir web sitesi ihtiyacı da olmamış oluyor. Tabi istenirse yine web sitesine de link eklenebilir. Instant app’i olan uygulamalar desteklenen cihazlarda Google Play’e girildiğinde “Install” butonunun yanında “Try Now” butonuyla beraber belirecekler. Bu şekilde biri bir uygulama önerdiğinde, install etmeden direk deneyerek beğenirsek indirebiliriz. Yine videoda alıntılanan rapora göre kullanıcılar install’a tıkladıklarında yaşadıkları bağlanma (commitment) geriliminden de kurtulmuş oluyormuş. İngilizce – Türkçe tam birebir örtüşmeyince biraz anlam kayması olabiliyor ama siz noktayı anladınız.
Üstteki imajda en sağda yer alan screenshot’da da görüleceği gibi, kullanıcılar instant app’inizi kullanırken basitçe install edebilmeleri için de install butonunu yerleştirebilirsiniz. Böylece tekrar markete gidip, download etme gereksiniminden kurtulunmuş olunuyor.
Instant app’ler için bu sene tanıtılan önemli özelliklerden biri ise hepimizin kullandığımız applerde aktif bir şekilde kullandığımız bildirimlerdi. g.co/instantapps/notification‘dan register olarak Beta programına dahil olabiliyoruz.
Daha önce Instant App’lerle ilgili yazdığım yazı daha çok ne olduğuyla ilgili bir tanım niteliğindeydi. Şimdi biraz daha teknik tarafa doğru ilerlemenin zamanı. Instant app geliştiren tüm uygulama sahiplerinin ortak ilettiği konu, instant app için uygulamayı refactor ederken genel olarak size’ının da küçüldüğü yönünde. Peki genel olarak bakacağımız noktalar neler olabilir dersek;
- Apk Analyzer: Apk Analyzer kullanarak detaylı olarak hangi resource’un size’ın ne olduğunu hangi folderların daha çok alan kapladığı gibi bilgilere ulaşabilir, gereksiz ya da çok büyük size’lı olanları hızlıca tespit edebiliriz.
- Configurations Splits: Basitçe build.gradle dosyası altında, splits altına bloklar ekleyerek abi, resource ve language için farklı apk’lar üretilmesini sağlamış ve böylece sadece ihtiyaç olunan apk’lar download edileceği için download size’ı düşürmüş oluyoruz. Device bağımsız tüm dex-code için bir base apk ve geri kalanlar için birer apk gibi düşünebiliriz. Configuration apk’lar aslında Multiple apk’ya benzerler. En büyük temel farksa, Multiple apk sadece installable app’ler içinken configuration apk’ler de sadece instant app’ler içindir. Yine Multiple apk’de her bir dil vs kombinasyonu için farklı bir apk üretilir. Yani 3 dil, 4 farklı çözünürlük destekleyen bir uygulama için 3*4=12 apk olacak, configurationda ise 1+ 3 + 4 = 8 apk oluşacak. Son olarak dil’i sadece configuration apk yani instant app için ayrıştırabiliyoruz.
- Proguard: Proguard kullanımı da gereksiz resource’ların silinmesinde faydalı olacaktır. Yalnız installable app’e göre instant app için proguard’da dikkat etmemiz gereken birkaç unsur var. Çapraz olarak modüllerin kullandığı class ve resource’ları keep etmeliyiz. Çünkü kullanılmadığı düşünülüp remove edilebilir. Ayrıca non-base feature modülleri obfuscate etmememiz gerekiyor. Çünkü farklı classların aynı isimle obfuscate edilme riski var.
- Check if you’re in the instant app: Api bize instant app’de mi installable app’de mi olduğumuz bilgisini veriyor. Bundan yararlanabiliriz.
- webP: webP bildiğiniz üzere eskiden sadece web uygulamalarında kullanılabiliyorken artık native uygulamalarda da kullanılabiliyor ve jpg’e göre size’ı daha küçük. Gerektiğinde webP’yi tercih etmek de avantajlı olacaktır.
- Google Play Core Library: 10 MB’a kadar olan on-demand feature’ları runtime’da Play Core Library’deki api’ları call ederek indirebiliyoruz.. Bu sayede ekstra yer kazanmış oluyoruz. Nasıl dynamic feature’lar yaratabileceğimizi linkten inceleyebilirsiniz. (in Beta)
Şimdiye kadar hep instant app’ler için 4 mb sınırından konuşuldu ancak, 10 MB’lık entry point için de bir BETA programı başlatılmış. İlgilenenler g.co/instantapps/10MB adresinden deneyebilirler.
Bu yazının ana gündemi olmamakla beraber yine IO’da duyurulan yeni publishing format(Android App Bundle) da benzer şekilde on-demand feature’ların runtime’da inmesini sağlıyor. Instant app ya da Installable app nereden geldiğimizden bağımsız olarak Google Play cover edebiliyor olacakmış.
Google Play tarafındaysa yukarıdaki iki imajda gördüğünüz gibi Instant App’in başarı/sızlığını da ölçümleyebiliyoruz.
Peki bir checklistimizin üzerinden geçip, şimdi development ortamımızın Instant App geliştirmeye uygun olup olmadığını kontrol edelim:
- JDK 1.8
- Android Studio 3.0+
- Android SDK 6.0+
- Android SDK Build Tools 26.x+
- Android SDK Platform Tools 25.x+
- Install Instant App Development SDK(latest)
- Android SDK Tools (latest)
- Devices Android 5.1+ / Emulator Android 8.1+
- Support Repository (latest)
- All dependencies of Support Repository (latest version for each)
Herşeyi download ettik ve hazırsak, ilk denememizi yapabiliriz.
Android studio’dan start a new project diyerek başlıyoruz. Şimdi 0’dan instant app’de içeren bir proje açacağız öncelikle. İlk ekranda görüldüğü gibi hiç bir farklılık yok.
Target Android Device seçtiğimiz step’de include Android Instant Support tickini de seçmemiz gerekli.
Instant app host bilgilerini girdiğimiz step’de ise ilgili host ve route url’lerinin girişini yapıyoruz.
Şimdi run diyerek uygun android sürümüne sahip emulator ya da cihazınızda instant/installable app’ini run edebilirsiniz.
Eğer ki instant app’in konfigürasyonunla editle girerseniz de url’i başlangıçta verdiğimiz için değerler aşağıdaki gibi olacak. Bu basit uygulamayla tüm app’i hem installable hem de instant app olarak açmış olduk. 🙂