Android 11 Developer Preview – Dikkatimi Çekenler

Android 11’in 1. Preview versiyonu Şubat ayının sonunda, 2.Preview’i ise 18 Mart’ta geliştiricilerin test etmesi için yayınlandı. Aşağıdaki zaman grafiğinde da görüldüğü üzere Preview-Beta-Final şeklinde release’ler planlanmış durumda.

Android 11’in odağında altyapı, yazılım yenilikleri ve donanım trendleri var gibi görünüyor. Bu da 5G, katlanabilir cihazlar ve makine öğrenimi odaklı yeniliklerin üzerinde durulduğu anlamına geliyor. Android 10’da olduğu gibi gizlilik ve güvenlik ile ilgili eklentilerde dahil.

Preview sürümünün kurulabileceği cihazlar, Pixel 2, 3, 3a, ve 4. Ancak Android SDK Manager üzerinden Android R paketi indirilerek bu cihazların emülatör’leri üzerinden de test edilebilir.

Yayınlanan preview ile uygulamalarımızı test edip gerekli önlemleri almamız gerektiğini de buradaki docs’ta bir kaç kere belirtiyorlar. Çünkü bazı özellikler tamamen kullanılmaz olacakken bazıları da ciddi değişikliğe uğrayacak.  Bu versiyondaki benim ilgimi çeken değişiklikleri şöyle bir listelersem:

  1. 5G
  2. Gizlilik
    1. Scope Storage
    2. One Time Permission
    3. Konum
    4. Veri Erişimi Denetimi
  3. Yeni Eklenen Özellikler ve API’lar
    1. MedyaStore API
    2. Hızlı cevaplara zengin media desteği
    3. Büyük veri kümelerini güvenli paylaşabilme
    4. Uygulamadan çıkışların raporlanması
    5. Dinamik kaynak yükleme
    6. Neural Network API 1.3
    7. Biometric API güncellemesi
    8. Aktif kamera kullanımında sesi ve titreşimi kapatabilme
    9. WIFI Suggestion API’si
    10. Sohbet Baloncukları

5G

Android 11’de 5G’nin hızı ile uyumlu olabilmesi için uygulamalarda bağlantı kontrolü yaparken sık sık kullandığımız ConnectivityManager kütüphanesinde buna uygun güncellemeler yapıldı.

  • Dinamik ölçüm API’si — Bağlantının ölçülüp ölçülmediğini kontrol edebilir ve bu durumda daha yüksek çözünürlük sunulabilir. Bu API hücresel ağları da içeriyor ki bu da kullanıcı, operatörünün 5G ağına bağlıyken de eklenen özellikler kullanılabilir anlamına geliyor.
  • Bant genişliği tahmin API’si — 5G için güncellendi. Bu sayede veri akışının bant genişliği, ağı yoklamadan da elde edilebilir.

GİZLİLİK

Scope Storage

Bu özellik Android 10 ile eklenip, 11’de geliştirmeler yapıldı. Android 11’i hedefleyen uygulamaların dikkat etmesi gereken özellikler var.

Aslında Storage konsepti Android’in 4.4 sürümünden bu yana geliştiriliyor ve üzerinde duruluyor.

4.4 => Değişiklik ve kısıtlamalar

5.1 => Storage access framework u eklendi. Android API’si ile dosyalara erişim

10 => Scoped Storage isteğe bağlı olarak eklendi

11 => Scoped Storage zorunlu oldu. İşlemler daha kısıtlı ama daha kolay oldu

Scope Storage’ın en büyük amacı READ_EXTERNAL_STORAGE izninin kötü amaçlı kullanımının önüne geçmek ve silinen uygulamaların arkalarında bıraktığı artıkları temizleyebilmek.

Android 10’da requestLegacyExternalStorage attribute’ü ile farklı dizinlere veya farklı türdeki medya dosyalarına izin vermek gibi değişikliklere ilişkin scoped storage kısıtlamalarını devre dışı bırakmak için kullanılabiliyordu ancak eğer uygulama Android 11’i hedefliyorsa bu attribute artık geçerli sayılmayacak ve scope storage isteğe bağlı devre dışı bırakılamayacak.

Uygulamalar kendi özel sandbox klasörlerini kullanabilecekleri gibi artık yeni klasör oluşturma yeteneği de sahip olacaklar. Uygulama, kendi içinde oluşturulan dosyaları kaydedilebileceği klasörler oluşturulabilecek ve bu klasörlere erişmek için herhangi bir yazma ya da okuma iznine gerek duymayacak. Ama kendisine ait olmayan herhangi bir klasöre erişim için yine izin istemesi gerekiyor.

Özetlemek gerekirse, Scope Storage yalnızca uygulamaların kendi özel sandbox klasörlerinde veri okumalarına ve yazmalarına izin verir ve onlara özel paylaşılan klasörlerde müzik, video, fotoğraf ve ses gibi verilere erişmelerini sağlar.

Android 4.4’ten beri önerilen bu yaklaşım Android 11’de artık isteğe bağlı değil de zorunlu hale getirildiği için geliştiricilerin, dosyaların var olup olmadığını anlamak ve cihazdaki konumunu öğrenmek için Storage Access Framework API’si ile sorgulama yapması ve daha sonra gerekliyse kullanıcıdan izin istemesi gerekmektedir.

Special App Access için ise Google Play’de form doldurarak uygulamanızın bu izinleri kötüye kullanmayacağını ve gerçekten ihtiyacı olduğunu belirtmeniz gerekiyor. Ancak Google Play Protect tarafından onaylanarak beyaz listeye alınırsanız ve kullanıcı izin verirse MediaStorage’a erişiminiz olur.

One Time Permission

Android 10’da, kullanıcılara konum izinleri üzerinde daha detaylı denetim sağlamak ve arka plan konum erişimini sınırlamak için “Uygulama kullanımdayken” seçeneği eklenmişti. Sonrasında Android takımı kullanıcıların yarısından fazlasının bu seçeneği seçtiğini gözlemlemiş ve izinleri daha da detaylandırmaya karar vermişler.

Bu yeni eklenen izin ise şöyle; uygulamada konum, kamera veya mikrofon gibi hassas ayarların kullanımı talep edildiğinde, kullanıcıdan aşağıdaki gibi bir uyarı ile izin istenecek.

Dialog overlays the app content

“Only this time” seçeneği seçilirse, uygulama foreground’da çalıştığı sürece talep edilen izne erişimi olacak ancak uygulama kapatılırsa, tekrar başlatıldığında tekrar erişim için yeniden izin istemesi gerekecek. Burada şöyle bir nokta var, eğer uygulamanın yaşam döngüsü boyunca kullanıcı 2 kere izin vermeyi reddederse bu “Bir daha sorma” anlamına gelecek ve izin için kullanıcaya bir uyarı gösterilmeyecek. Erişilmek istenen izin ancak ayarlardan manuel olarak verilirse kullanılabilecek.

Veri Erişimi Denetimi

Uygulamalarımızda kullandığımız 3.parti SDK ya da kütüphanelerin veri erişimini denetlemek için eklenmiş bir API’dir. Veri erişiminin istediği thread’de çalışarak bu çağrıyı AppsCollector’un incelemesini izin verir. Buradan da istek uygulamadan mı yoksa SDK’dan mı geliyor ayırt edilir.

Konum

Uygulamaların artık arka plandaki konum erişimleri için de kullanıcıdan izin istemeleri gerekecek ve izin dialoğundaki “Her zaman” seçeneği de kaldırılmış durumda.

Bu değişikliğin versiyon bazlı etkisi şu şekilde:

Uygulamanız Android 11’i hedefliyor ise, arka plan konumuna her zaman doğrudan erişim isteyemezsiniz. Ayarlardan bu izni verdirebilir ve bunun için izlenmesi gereken yolu detayları ile buradan bulabilirsiniz. Ancak unutmayın ki izin verdikten sonra bile kullanıcı ayarlardan tekrar bu izinleri değiştirebilir.

Uygulamanız Android 10 veya altını hedefliyorsa, kullanıcı konum izni vermeden ya da vermiş bile olsa uygulamada çıkan dialog’da ayarlar sayfasına ait yönlendirme linki bulunur.

In
  both versions of the dialog, the link for 'Allow in settings' appears before
  the other location permission options

YENİ EKLENEN & GÜNCELLENEN API’LAR

MediaStore API

Uygulama içi medya işlemleri

MediaStore API’sine yeni eklenen metodlar sayesinde dosyalarda uygulama içinde değişiklik yapılabilecek.

createWriteRequest()

createFavoriteRequest()

createTrashRequest()

createDeleteRequest()

Ham dosya yollarını kullanarak medya dosyalarına erişebilme

READ_EXTERNAL_STORAGE iznine sahip tüm uygulamalar, dosyaların ham yolları kullanarak cihazın medya dosyalarına erişim sağlayabilirler. Ancak bu yaklaşım performans kaybına yol açabilir. Bu nedenle mümkün oldukça MediaStore API ile erişim sağlamak daha iyi olacaktır.

Dosya erişimi

Bazı uygulamalar, dosya yönetimi, yedekleme ve geri yükleme işlemleri gibi geniş dosya erişimi istyene işlemler gerektirebilirler ve All Files Access iznini alarak bu işlemlerini gerçekleştirebilirler. Bu da MANAGE_EXTERNAL_STORAGE izni ile ayarlanır.

Bu izinle aşağıdakiler sağlanmış olur:

  • Shared Storage’daki tüm dosyalara yazma ve okuma izni verilir.
  • MediaStore.File’daki tüm içeriklere erişim sağlanır.

Uygulamalar, bu dosyalara MediaStoreAPI kullanarak ya da ham dosya yolları ile erişebilirler.

Hızlı cevaplara zengin medya desteği

Android 11’de istenirse hızlı cevaplara zengin medya ekleme kapasitesi entegre edilebilecek. Bu özelliği kullanmak için uygulamada RemoteInput tipi ayarlanmalıdır ki hangi MIME tipini handle edeceği belirtilsin.

Büyük veri kümelerini güvenli paylaşabilme

Makine öğrenmesi, media playback içeren uygulamalarda aynı veri setini kullanmak gerekebilir. Android 11 ile artık uygulamalar arasında BlobStorageManager yardımıyla data blob(büyük veri kümeleri) paylaşılabilir. Hem ağ üzerindeki hem de diskteki veri artığını azaltmak için bu büyük veri kümelerinin, paylaşımlı data blob’ları kullanılarak cihazda önbelleğe alınmasına izin verilir.

Bu özelliğin en çok kullanılacağı yer, birçok uygulama arasında aynı kullanıcının ML modelini paylaştığı durumlar olacaktır.

Uygulamadan çıkışların raporlanması

getHistoricalProcessExitReasons() metodu ile uygulamadaki ANR, hafıza sorunları ya da başka bir nedenden dolayı oluşan crash’lerin raporları alınabilecek.

Resource Loader

ResourcesLoader ve ResourcesProvider adlı yeni API sınıfları ile uygulamalarda kaynakların aranma ve yüklenmesi dinamik hale geliyor. Bunlar sayesinde yeni kaynak ve asset yüklenebilmesiyle beraber var olanlar da düzenlenebilecek.

Bu API’nin en etkili kullanımı ise custom asset’leri çalışma esnasında yüklemek olacaktır.

Neural Network API 1.3

Neural Network API 1.3 ile üç yeni özellik eklendi. Bunlar, 

  1. Hizmet Kalitesi API’leri: Model çalıştırırken öncelik ve timeout desteği verir.
  2. Bellek Alan Adı API’leri: Model çalıştırırken hafızadaki kopyalama ve dönüştürme işlemlerini optimize eder.
  3. Genişletilmiş niceleme desteği: Float değişkeni yerine signed integer kullanılmasını sağlayarak daha küçük ve hızlı modelleri mümkün kılar.

Biometric API güncellemesi

Biometrik API’nin deteklediği cihaz listesi genişletildi.

Yeni eklenen BiometricManager.Authenticators arayüzü sayesinde cihaz üreticileri aşağıdaki güç seviyelerini kullanarak biyometrik donanımların olası güçlerini tanımlayabilirler.

BIOMETRIC_STRONG
BIOMETRIC_WEAK
DEVICE CREDENTIAL

Yeni eklenen CanAuthenticate() ve setAllowedAuthenticators() yöntemlerinin her ikisi de bir PIN, desen veya parola kullanarak kimlik doğrulamasına izin veren Authenticators.DEVICE_CREDENTIAL değişkenini alabilir. Ayrıca setDeviceCredentialAllowed() metodu ise Android 11’den itibaren kullanımdan kalkacak.

ACTION_BIOMETRIC_ENROLL intent’i sistem ayarlarını çağırır ve kullanıcının bir biyometrik element seçmesini ister. Bu intent’e ekstra olarak güç seviyesi verilebilir.

Aktif kamera kullanımında sesi ve titreşimi kapatabilme

public void setCameraAudioRestriction (int mode)

metodu ile uygulamada aktif olarak CameraDevice kullanılıyorsa ses kısıtlaması yapılabilir. Yapılabilecek ayarlamalar ise şöyle:

WIFI Önerme API’si

Bu kütüphanedeki geliştirmeler sayesinde  uygulamaların ağ yönetimi genişletilebilir. Bunlar;

  • Uygulamalar bağlantı koparma isteğinde bulunarak kendi network’lerini yönetebilirler.
  • Analytics API sayesinde bağlantıların kalitesi öğrenilebilirler.

Chat Baloncukları

Bubbles, Android 10’da geliştirici seçeneği ile etkinleştirilen deneysel bir özellikti ve Android 11’de aktif olarak eklendi.

Android 11’de Bubbles’ın performans geliştirmelerinin yanında her uygulama için bu özelliği aktif edebilme veya kapatabilme işlevi de eklendi. Deneysel olarak kullanılan metot ve yapılarda da bazı değişiklikler oldu. Detaylara buradan ulaşabilirsiniz.

Android 11 ile detayları buradan takip edebilirsiniz.

One comment

  1. fk dedi ki:

    tesekkurler. detayli bir calisma olmus

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Twitter

#CastlevaniaNetflix’de 2.sezonu bitirdim ve dracula’yı haklı buluyorum. https://t.co/huLYAgpZpA sumeyyaarar photo

Meraklısı var ise:
OrderBy(), QuickSort ile yazılmıştır ve complexity'si O(nlogn)'dir.

Demliğin içine filtre kahve kağıdı koymak https://t.co/ReXlLav5TF sumeyyaarar photo

#stackoverflow dark mod trend'ine uyum sağlamış, sunumu da çok iyi 🌑 https://t.co/6xfkJQPQuA sumeyyaarar photo

Uygulamaları kurcalıyorum da, bazı güzel şeyler bazı aceleye gelmiş şeyler 👇🏻 https://t.co/w547oEPGIh sumeyyaarar photo