Android 11 platformu, uygulamanızı etkileyebilecek davranış değişikliklerini içerir. Aşağıdaki davranış değişiklikleri, targetSdkVersion
ne olursa olsun, Android 11 ile çalıştırılan tüm uygulamalar için geçerlidir. Uygulamanızı test etmeli ve ardından uygun olduğu durumlarda bunları doğru bir şekilde desteklemek için gereken değişiklikleri yapmalısınız.
Yalnızca Android 11'i hedefleyen uygulamaları etkileyen davranış değişiklikleri listesini de incelemeyi unutmayın.
Gizlilik
Android 11, kullanıcı gizliliğini iyileştirmek için aşağıdakiler de dahil olmak üzere bazı değişiklikler ve kısıtlamalar uygular:
- Tek seferlik izinler: Kullanıcılara konum, mikrofon ve kamera izinlerine daha fazla geçici erişim izni verme seçeneği sunar.
- İzin iletişim kutusu görünürlüğü: Bir iznin tekrarlanan şekilde reddedilmesi, "bir daha sorma" anlamına gelir.
- Veri erişimi denetimi: Uygulamanızın, hem kendi kodunda hem de bağımlı kitaplıkların kodunda özel verilere nereden eriştiğine dair analizler edinin.
- Sistem uyarı penceresi izinleri: Belirli uygulama sınıflarına, istek üzerine otomatik olarak
SYSTEM_ALERT_WINDOW
izni verilir. Ayrıca,ACTION_MANAGE_OVERLAY_PERMISSION
amaç işlemini içeren amaçlar kullanıcıları her zaman sistem ayarlarındaki bir ekrana getirir. - Kalıcı SIM tanımlayıcıları:
Android 11 ve sonraki sürümlerde
getIccId()
yöntemiyle sıfırlanamayan ICCID'lere erişim kısıtlanmıştır. Yöntem, değer atanmamış ve boş bir dize döndürür. Cihazda takılı bir SIM'i benzersiz bir şekilde tanımlamak için bunun yerinegetSubscriptionId()
yöntemini kullanın. Abonelik Kimliği, fiziksel ve elektronik de dahil olmak üzere takılı SIM'leri benzersiz bir şekilde tanımlamak için 1'den başlayan bir dizin değeri sağlar. Cihaz fabrika ayarlarına sıfırlanmadığı sürece bu tanımlayıcının değeri belirli bir SIM için sabittir.
Daha fazla bilgi edinmek için Gizlilik sayfasını inceleyin.
Temas Bildirimleri
Android 11, platformu Temas Bildirimleri Sistemi'ni dikkate alarak günceller. Kullanıcılar artık Android 11'de cihaz konum ayarını etkinleştirmeye gerek kalmadan Temas Bildirimleri uygulamalarını çalıştırabilir. Bu durum, yalnızca Temas Bildirimleri Sistemi'ni kullanan uygulamaların Bluetooth taraması aracılığıyla cihaz konumunu belirleyemeyeceği şekilde tasarlandığından bir istisnadır.
Kullanıcı gizliliğini korumak amacıyla, cihazın konum ayarı açık olup kullanıcı konum izni vermediği sürece diğer tüm uygulamaların Bluetooth taraması yapması yine de yasaktır. Temas Bildirimleri ile İlgili Güncelleme yayınımızda daha fazla bilgi edinebilirsiniz.
Güvenlik
SSL yuvaları varsayılan olarak Conscrypt SSL motorunu kullanır
Android'in varsayılan SSLSocket
uygulaması, Conscrypt'i temel alır.
Android 11'den itibaren bu uygulama dahili olarak Conscrypt'in SSLEngine
altyapısı üzerine derlenir.
Scudo Sağlamlaştırılmış Ayırıcı
Android 11, yığın ayırmalara hizmet vermek için dahili olarak Scudo Sağlamlaştırılmış Ayırıcı'yı kullanır. Scudo, bazı türlerdeki bellek güvenliği ihlallerini tespit edip azaltabilir. Yerel kilitlenme raporlarında Scudo ile ilgili kilitlenmeler (örneğin, Scudo ERROR:
) görüyorsanız Scudo sorun giderme belgelerine bakın.
Uygulama kullanım istatistikleri
Android 11, kullanıcıları daha iyi korumak için her kullanıcının uygulama kullanım istatistiklerini kimlik bilgisi şifreli depolama alanında depolar. Bu nedenle, aşağıdakilerden biri gerçekleştikten sonra isUserUnlocked()
döndürdüğü sürece sistem veya uygulamalar bu verilere erişemez:true
- Kullanıcı, sistem başlatıldıktan sonra cihazının kilidini ilk kez açar.
- Kullanıcı, cihazda hesabına geçer.
Uygulamanız zaten bir UsageStatsManager
örneğine bağlıysa kullanıcı cihazının kilidini açtıktan sonra bu nesnede yöntemleri çağırdığınızdan emin olun.
Aksi takdirde, API artık boş değerler döndürür.
5G için emülatör desteği
Android 11, uygulamalarınızın son teknoloji ürünü özellikler eklemesini sağlamak için 5G API'lerini ekler. Özellikleri eklerken test etmek için Android SDK emülatörünün yeni özelliklerini kullanabilirsiniz. Emulator sürümü 30.0.22'ye yeni işlev eklenmiştir. 5G ağ ayarının seçilmesi TelephonyDisplayInfo
özelliğini OVERRIDE_NETWORK_TYPE_NR_NSA
olarak ayarlar, tahmini bant genişliğini değiştirir ve uygulamanızın NET_CAPABILITY_TEMPORARILY_NOT_METERED
durumundaki değişikliklere uygun şekilde yanıt verdiğini doğrulamak için sayaç özelliğini ayarlamanıza olanak tanır.
Performans ve hata ayıklama
JobScheduler API çağrısı sınırlarında hata ayıklama
Android 11, belirli hız sınırlarını aşan olası JobScheduler
API çağrılarını belirlemek için uygulamalarda hata ayıklama desteği sunar.
Geliştiriciler bu olanağı potansiyel performans sorunlarını belirlemek için kullanabilirler. debuggable
manifest özelliği true olarak ayarlanmış uygulamalarda hız sınırlarını aşan JobScheduler
API çağrıları RESULT_FAILURE
sonucunu döndürür.
Sınırlar, meşru kullanım alanlarının etkilenmeyeceği şekilde belirlenir.
Dosya tanımlayıcı temizleyici (fdsan)
Android 10'da fdsan
(dosya tanımlayıcı temizleyici) kullanıma sunuldu.
fdsan
, kapatıldıktan sonra kullanma ve iki kez kapatma gibi dosya tanımlayıcısı sahipliğinin kötüye kullanıldığını tespit eder. fdsan
için varsayılan mod Android 11'de değişiyor. fdsan
artık hata algılandığında işlemi iptal ediyor. Önceki davranış, bir uyarı kaydedip devam etmekti. Uygulamanızda fdsan
nedeniyle kilitlenmeler görüyorsanız fdsan documentation
dokümanına bakın.
SDK olmayan arayüz kısıtlamaları
Android 11, Android geliştiricileriyle yapılan ortak çalışmalara ve en son dahili testlere göre kısıtlanmış SDK dışı arayüzlerin güncellenmiş listelerini içerir. Mümkün olduğunda, SDK olmayan arayüzleri kısıtlamadan önce herkese açık alternatiflerin kullanılabilir olmasını sağlarız.
Uygulamanız Android 11'i hedeflemiyorsa bu değişikliklerden bazıları sizi hemen etkilemeyebilir. Bununla birlikte, şu anda bazı SDK dışı arayüzleri (uygulamanızın hedef API düzeyine bağlı olarak) kullanabilseniz de herhangi bir SDK olmayan yöntem veya alanın kullanılması her zaman uygulamanızın bozulma riskini artırır.
Uygulamanızın SDK olmayan arayüzler kullanıp kullanmadığından emin değilseniz öğrenmek için uygulamanızı test edebilirsiniz. Uygulamanız SDK olmayan arayüzlere dayanıyorsa SDK alternatiflerine geçiş planlamaya başlamanız gerekir. Yine de, bazı uygulamaların SDK dışı arayüz kullanımıyla ilgili geçerli kullanım alanları olduğunun farkındayız. Uygulamanızdaki bir özellik için SDK olmayan arayüz kullanmaya alternatif bulamıyorsanız yeni bir herkese açık API isteğinde bulunmanız gerekir.
Android'in bu sürümündeki değişiklikler hakkında daha fazla bilgi edinmek için Android 11'deki SDK dışı arayüz kısıtlamalarında yapılan güncellemeler bölümüne bakın. Genel olarak SDK olmayan arayüzler hakkında daha fazla bilgi edinmek için SDK dışı arayüzlerle ilgili kısıtlamalar bölümüne bakın.
Haritalar v1 paylaşılan kitaplığı kaldırıldı
Haritalar paylaşılan kitaplığının V1 sürümü, Android 11'de tamamen kaldırıldı. Bu kitaplık daha önce kullanımdan kaldırılmış ve Android 10'daki uygulamalarda artık çalışmamaktadır. Daha önce Android 9 (API düzeyi 28) veya daha düşük sürümleri çalıştıran cihazlar için bu paylaşılan kitaplıktan yararlanan uygulamalar, bunun yerine Android için Haritalar SDK'sını kullanmalıdır.
Diğer uygulamalarla etkileşim
İçerik URI'larını paylaş
Uygulamanız başka bir uygulamayla içerik URI'si paylaşıyorsa niyet, aşağıdaki intent işaretlerinden en az birini ayarlayarak URI erişim izinleri vermelidir:
FLAG_GRANT_READ_URI_PERMISSION
ve
FLAG_GRANT_WRITE_URI_PERMISSION
.
Böylece, Android 11'i hedefleyen diğer uygulama yine de içerik URI'sına erişebilir. İçerik URI'sı uygulamanızın sahibi olmadığı bir içerik sağlayıcıyla ilişkilendirilmiş olsa bile uygulamanız amaç bayraklarını içermelidir.
Uygulamanız, içerik URI'si ile ilişkili içerik sağlayıcısına aitse içerik sağlayıcının dışa aktarılmadığını doğrulayın. Güvenlikle ilgili bu en iyi uygulamayı zaten öneriyoruz.
Kitaplık yükleniyor
Mutlak yol içeren ICU ortak kitaplığı yükleniyor
API 28 ve önceki sürümleri hedefleyen uygulamalar, libicuuc
mutlak yolunu "/system/lib/libicuuc.so" ile yüklemek için dlopen(3)
kullanamaz. Bu uygulamalar için
dlopen("/system/lib/libicuuc.so", ...)
, boş bir herkese açık kullanıcı adı döndürür.
Bunun yerine, kitaplığı yüklemek için dosya adı olarak kitaplık adını kullanın (örneğin, dlopen("libicuuc.so", ...)
).