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

Android 11 platformu, uygulamanızı etkileyebilecek davranış değişiklikleri içerir. Aşağıdaki davranış değişiklikleri, targetSdkVersion ne olursa olsun Android 11'de çalıştırılan tüm uygulamalar için geçerlidir. Uygulamanızı test etmeniz ve uygun olduğunda, doğru şekilde desteklemek için gerektiği şekilde değiştirmeniz gerekir.

Yalnızca Android 11'i hedefleyen uygulamaları etkileyen davranış değişikliklerinin listesini de incelemeyi unutmayın.

Gizlilik

Android 11, kullanıcı gizliliğini iyileştirmek için aşağıdakiler de dahil olmak üzere değişiklikler ve kısıtlamalar getirir:

  • Tek seferlik izinler: Kullanıcılara konum, mikrofon ve kamera izinlerine daha geçici erişim izni verme seçeneği sunar.
  • İzin iletişim kutusu görünürlüğü: Bir iznin tekrar tekrar reddedilmesi, "bir daha sorma" anlamına gelir.
  • Veri erişimi denetimi: Uygulamanızın hem kendi kodundan hem de bağımlı kitaplıkların kodundan gizli verilere nereden eriştiğine dair analizler elde edin.
  • 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 intent işlemini içeren amaçlar, kullanıcıları sistem ayarlarında her zaman bir ekrana yönlendirir.
  • Kalıcı SIM tanımlayıcıları: Android 11 ve sonraki sürümlerde, sıfırlanamayan ICCID'lere getIccId() yöntemiyle erişim kısıtlanmıştır. Yöntem, null olmayan, boş bir dize döndürür. Cihazda takılı bir SIM'i benzersiz şekilde tanımlamak için bunun yerine getSubscriptionId() yöntemini kullanın. Abonelik Kimliği, fiziksel ve elektronik dahil olmak üzere, takılı SIM'leri benzersiz şekilde tanımlamak için bir dizin değeri (1 ile başlayan) sağlar. Bu tanımlayıcının değeri, cihaz fabrika ayarlarına sıfırlanmadığı sürece belirli bir SIM için sabit kalır.

Daha fazla bilgi edinmek için Gizlilik sayfasına bakın.

Temas Bildirimleri

Android 11, platformu Temas Bildirimleri Sistemi'ni göz önünde bulundurarak günceller. Kullanıcılar artık Android 11'de cihaz konum ayarını etkinleştirmelerine gerek kalmadan Temas Bildirimleri uygulamalarını çalıştırabilir. Bu yalnızca Temas Bildirimleri Sistemi için bir istisnadır. Sistem, kullanan uygulamaların Bluetooth taraması yoluyla cihaz konumunu tahmin edemeyeceği şekilde tasarlanmıştır.

Cihaz konum ayarı açık olmadığı ve kullanıcı, konum izni vermediği sürece kullanıcı gizliliğini korumak için diğer tüm uygulamaların Bluetooth taraması yapması yasaktır. Temas Bildirimleri ile ilgili güncelleme yayınımızdan daha fazla bilgi edinebilirsiniz.

Güvenlik

SSL yuvaları varsayılan olarak Conscrypt SSL motorunu kullanır

Android'in varsayılan SSLSocket uygulaması Conscrypt'e dayanır. Bu uygulama, Android 11'den beri Conscrypt'in SSLEngine temel alınarak dahili olarak oluşturulmuştur.

Scudo Sağlam Ayırıcı

Android 11, yığın ayırmaları için dahili olarak Scudo Sertleştirilmiş Ayırıcı'yı kullanır. Scudo, bazı bellek güvenliği ihlallerini tespit edip hafifletebilir. 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 ile şifrelenmiş depolama alanında depolar. Bu nedenle, isUserUnlocked() aşağıdaki işlemlerden biri gerçekleştikten sonra true döndürmediği sürece sistem veya hiçbir uygulama bu verilere erişemez:

  • Kullanıcı, sistem başlatıldıktan sonra cihazının kilidini ilk kez açtığında.
  • Kullanıcı, cihazda kendi hesabına geçer.

Uygulamanız zaten 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üyor.

5G için emülatör desteği

Android 11, uygulamalarınıza son teknoloji özellikler eklemesini sağlamak için 5G API'leri ekler. Özellikleri eklerken test etmek için Android SDK emülatörünün yeni özelliklerini kullanabilirsiniz. Yeni işlev, Emulator 30.0.22 sürümünde eklendi. 5G ağ ayarı seçildiğinde TelephonyDisplayInfo, OVERRIDE_NETWORK_TYPE_NR_NSA olarak ayarlanır, 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ç ayarı yapmanıza olanak tanır.

Performans ve hata ayıklama

JobScheduler API çağrı 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ı tespit etmek amacıyla uygulamalar için hata ayıklama desteği sunar. Geliştiriciler bu olanağı, olası performans sorunlarını belirlemek için kullanabilir. debuggable manifest özelliği doğru olarak ayarlanmış uygulamalarda hız sınırlarını aşan JobScheduler API çağrıları RESULT_FAILURE değerini döndürür. Sınırlar, geçerli kullanım alanlarının etkilenmeyeceği şekilde belirlenmiştir.

Dosya tanımlayıcı dezenfektanı (fdsan)

Android 10'da fdsan (dosya tanımlayıcı dezenfektanı) kullanıma sunuldu. fdsan, dosya açıklayıcı sahipliğinin kötüye kullanıldığını (ör. kapatıldıktan sonra kullanım ve çift kapatmadan sonra kullanma) tespit eder. fdsan için varsayılan mod Android 11'de değişiyor. fdsan artık bir hata algıladığında işlemi iptal ediyor. Önceki davranış, bir uyarı günlüğe kaydedip devam etmekti. Uygulamanızda fdsan nedeniyle kilitlenmeler görüyorsanız fdsan documentation bölümüne bakın.

SDK dışı arayüz kısıtlamaları

Android 11, Android geliştiricileriyle yapılan ortak çalışmaya ve en son dahili testlere dayanarak kısıtlanmış SDK dışı arayüzlerin güncellenmiş listelerini içerir. Mümkün olduğunda SDK dışı arayüzleri kısıtlamadan önce herkese açık alternatiflerin kullanılabildiğinden emin oluruz.

Uygulamanız Android 11'i hedeflemiyorsa bu değişikliklerden bazıları sizi hemen etkilemeyebilir. Ancak şu anda bazı SDK olmayan arayüzleri (uygulamanızın hedef API düzeyine bağlı olarak) kullanabilirsiniz. Ancak SDK olmayan herhangi bir yöntem veya alan kullanmak her zaman uygulamanızın bozulma riski taşır.

Uygulamanızın SDK olmayan arayüz kullanıp kullanmadığından emin değilseniz öğrenmek için uygulamanızı test edebilirsiniz. Uygulamanız SDK olmayan arayüzleri kullanıyorsa SDK alternatiflerine geçiş planlamaya başlamanız gerekir. Bununla birlikte, bazı uygulamaların SDK dışı arayüzler için geçerli kullanım alanları olduğunun farkındayız. Uygulamanızdaki bir özellik için SDK dışı arayüz kullanmanın alternatifini 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 olmayan arayüz kısıtlamalarıyla ilgili güncellemeler bölümüne bakın. SDK olmayan arayüzler hakkında genel olarak daha fazla bilgi edinmek için SDK dışı arayüzlerdeki kısıtlamalar bölümüne bakın.

Haritalar v1 paylaşılan kitaplık kaldırıldı

Haritalar paylaşılan kitaplığının 1. sürümü, Android 11'de tamamen kaldırıldı. Bu kitaplık daha önce kullanımdan kaldırılmıştı ve Android 10'daki uygulamalarda çalışması durdurulmuştu. Daha önce Android 9 (API düzeyi 28) veya önceki 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'lerini paylaşma

Uygulamanız başka bir uygulamayla içerik URI'si paylaşıyorsa intent, şu intent işaretlerinden en az birini ayarlayarak URI erişim izni vermelidir: FLAG_GRANT_READ_URI_PERMISSION ve FLAG_GRANT_WRITE_URI_PERMISSION. Bu şekilde, Android 11'i hedefleyen diğer uygulamalar içerik URI'sine erişmeye devam edebilir. İçerik URI'si, uygulamanızın sahibi olmadığı bir içerik sağlayıcıyla ilişkilendirilmiş olsa bile uygulamanız amaç işaretlerini içermelidir.

Uygulamanız, içerik URI'si ile ilişkilendirilmiş içerik sağlayıcıya sahipse içerik sağlayıcının dışa aktarılmadığını doğrulayın. Bu güvenlik en iyi uygulamasını zaten öneriyoruz.

Kitaplık yükleniyor

Mutlak yol içeren ICU ortak kitaplığı yükleniyor

API 28 ve altını hedefleyen uygulamalar, libicuuc dosyasını "/system/lib/libicuuc.so" mutlak yolu 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", ...)).