Davranış değişiklikleri: tüm uygulamalar

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 yerine getSubscriptionId() 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", ...)).