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

Android 15 platformunda, uygulamanızı etkileyebilecek davranış değişiklikleri vardır. Aşağıdaki davranış değişiklikleri, targetSdkVersion'ten bağımsız olarak Android 15'te çalıştırılan tüm uygulamalar için geçerlidir. Uygulamanızı test etmeniz ve ardından geçerli olduğu durumlarda bunları düzgün şekilde desteklemek için gerektiği gibi değiştirmeniz gerekir.

Yalnızca Android 15'i hedefleyen uygulamaları etkileyen davranış değişiklikleri listesini de inceleyin.

Temel işlevler

Android 15, Android sisteminin çeşitli temel özelliklerini değiştirir veya genişletir.

Paketin durdurulmuş durumundaki değişiklikler

Paket FLAG_STOPPED durumunun amacı (kullanıcıların uygulama simgesine uzun basıp "Durmaya Zorla"yı seçerek AOSP derlemelerine dahil edebilmeleri) her zaman, kullanıcı uygulamayı doğrudan başlatarak veya uygulamayla dolaylı olarak etkileşimde bulunarak (paylaşım sayfası veya widget üzerinden, uygulamayı animasyonlu duvar kağıdı olarak seçerek vb.) uygulamayı bu durumdan açıkça kaldırana kadar her zaman bu durumda kalmaktadır. Android 15'te sistemin davranışını, bu hedeflenen davranışa uygun olacak şekilde güncelliyoruz. Uygulamalar yalnızca doğrudan veya dolaylı kullanıcı işlemi yoluyla durdurulmuş durumdan kaldırılmalıdır.

Amaçlanan davranışı desteklemek için sistem, Android 15 çalıştıran bir cihazda uygulama durduruldu durumuna geçtiğinde mevcut kısıtlamalara ek olarak tüm beklemede olan niyetleri de iptal eder. Kullanıcının işlemleri uygulamayı durdurulmuş durumdan kaldırdığında, ACTION_BOOT_COMPLETED yayını uygulamaya iletilir. Böylece bekleyen niyetleri yeniden kaydedebilirsiniz.

Uygulamanın "durduruldu" durumuna alınıp alınmadığını doğrulamak için yeni ApplicationStartInfo.wasForceStopped() yöntemini çağırabilirsiniz.

16 KB sayfa boyutları için destek

Önceden Android yalnızca 4 KB bellekli sayfa boyutlarını destekliyordu. toplam bellek miktarının ortalaması için optimize edilmiş sistem bellek performansı Android cihazlar genellikle AOSP, Android 15'ten itibaren 16 KB (16 KB) sayfa boyutunu kullanacak şekilde yapılandırılmış cihazlar cihazlar). Uygulamanız doğrudan NDK kitaplıkları kullanıyorsa veya dolaylı olarak bir SDK üzerinden alırsa, bunun için uygulamanızı bu 16 KB'lık cihazlarda çalışır.

Cihaz üreticileri, her gün daha fazla cihaz için (RAM) yüklü olduğu varsayıldığında, bu cihazların çoğu 16 KB (ve cihaz performansını optimize etmek için kullanılan sayfa boyutları arasında büyük fark vardır. Ekleme 16 KB sayfa boyutundaki cihazlar için destek, uygulamanızın bu ve uygulamanızın ilişkili performanstan yararlanmasına yardımcı olur tek yolu değildir. Yeniden derleme işlemi yapılmadığında uygulamalar 16 KB cihazlarda çalışmayabilir. kullanıma sunduk.

Uygulamanız için destek eklemenize yardımcı olmak üzere Uygulamanız etkilendiyse uygulamanızı yeniden derleyin (geçerliyse) ve uygulamanızı şurada test edin: emülatörler kullanan 16 KB ortam (Android 15 dahil) için sistem görüntüleri) ekleyebilirsiniz.

Avantajlar ve performans kazanımları

16 KB sayfa boyutlarıyla yapılandırılan cihazlar, ortalama olarak biraz daha fazla bellek kullanır. Ancak, hem sistem hem de uygulamalar için çeşitli performans iyileştirmeleri sağlar:

  • Sistem bellek baskısı altındayken daha düşük uygulama başlatma süreleri: Test ettiğimiz bazı uygulamalarda daha belirgin iyileştirmeler (%30'a varan) ile birlikte ortalama %3, 16 daha düşük
  • Uygulama başlatma sırasında güç tüketimi azaltıldı: Ortalama% 4,56 oranında azalma
  • Daha hızlı kamera başlatma: Ortalama% 4,48 daha hızlı çalışır durumda başlatma ve ortalama% 6,60 daha hızlı soğuk başlatma
  • İyileştirilmiş sistem önyükleme süresi: Ortalama %8 (yaklaşık 950 milisaniye) iyileşme

Bu iyileştirmeler, ilk testlerimizi temel almaktadır ve gerçek cihazlardaki sonuçlar büyük olasılıkla farklılık gösterecektir. Testlerimizi sürdürürken uygulamaların olası kazanımlara ilişkin ek analizler sağlayacağız.

Uygulamanızın etkilenip etkilenmediğini kontrol edin

Uygulamanız yerel kod kullanıyorsa uygulamanızı 16 KB'lık cihazları destekleyecek şekilde yeniden oluşturmanız gerekir. Uygulamanızın doğal kod kullanıp kullanmadığından emin değilseniz doğal kod olup olmadığını belirlemek için APK Analizörü'nü kullanabilir ve ardından bulduğunuz ELF segmentlerinin uyumluluğunu kontrol edebilirsiniz.

Uygulamanızda, tüm kitaplıklar veya SDK'lar dahil olmak üzere yalnızca Java programlama dilinde veya Kotlin'de yazılmış kod kullanılıyorsa uygulamanız zaten 16 KB'lık cihazları destekliyor demektir. Bununla birlikte, uygulama davranışında beklenmedik gerileme olmadığından emin olmak için uygulamanızı 16 KB'lık bir ortamda test etmenizi öneririz.

Bazı uygulamaların özel alanı desteklemesi için gereken değişiklikler

Özel alan, Android 15'teki yeni bir özelliktir. Kullanıcıların cihazlarında ayrı bir alan oluşturarak hassas uygulamaları, ek bir kimlik doğrulama katmanıyla meraklı gözlerden korumalarına olanak tanır. Özel alandaki uygulamaların görünürlüğü kısıtlandığından, bazı uygulama türlerinin kullanıcının özel alanındaki uygulamaları görüp bunlarla etkileşim kurabilmesi için ek adımlar atması gerekir.

Tüm uygulamalar

Özel alandaki uygulamalar ayrı bir kullanıcı profilinde saklandığından, iş profili olarak değiştirmek isterseniz uygulamalar, uygulamasının ana profilde olmayan kopyaları da iş profilinde yer alır. Uygulamanızda, iş profili uygulamalarıyla ilgili bu varsayımı yapan bir mantık varsa bu mantığı düzenlemeniz gerekir.

Tıbbi uygulamalar

Kullanıcı özel alanı kilitlediğinde, özel alandaki tüm uygulamalar durdurulur, Ayrıca, bu uygulamalar da dahil olmak üzere ön plan veya arka plan bildirimler gösteriliyor. Bu davranış, Google Ads verilerinin kullanımını özel alanda yüklü tıbbi uygulamaların işlevi.

Özel alan kurulum deneyiminde, kullanıcıları özel alanın Kritik ön plan veya arka plan çalışması gereken uygulamalar için uygundur etkinlikler (ör. tıbbi uygulamalardan gelen bildirimleri göstermek). Ancak, uygulamalar, kullanımlarının özel alanda olup olmadığını belirleyemediği gibi, bu nedenle kullanıcıya bu konuda bir uyarı gösteremez.

Bu nedenle, tıbbi uygulama geliştiriyorsanız bu özelliğin ve uygun işlemleri (ör. kullanıcılarınızı bunları yapmamaları gerektiği konusunda bilgilendirmek) uygulamanızı özel alana yükleyin. Böylece, kritik öneme sahip uygulamaların çalışmasını kesintiye uğratmayın. özellikler.

Başlatıcı uygulamaları

Başlatıcı uygulaması geliştirirseniz özel alan şuralarda görünür olacaktır:

  1. Uygulamanız, cihaz için varsayılan başlatıcı uygulaması olarak atanmış olmalıdır. Yani ROLE_HOME rolüne sahip olmalıdır.
  2. Uygulamanız ACCESS_HIDDEN_PROFILES şartlarını beyan etmelidir uygulamanızın manifest dosyasında normal izne sahip olmanız gerekir.

ACCESS_HIDDEN_PROFILES iznini beyan eden başlatıcı uygulamaları şunları işlemelidir: Aşağıdaki özel alan kullanım alanları:

  1. Uygulamanızda, özel alana yüklenen uygulamalar için ayrı bir başlatıcı kapsayıcısı olmalıdır. getLauncherUserInfo() yöntemini kullanarak hangi tür kullanıcı profilinin işlendiğini belirler.
  2. Kullanıcı, özel alan kapsayıcısını gizleyip gösterebilmelidir.
  3. Kullanıcı, özel alan kapsayıcısını kilitleyip kilidini açabilmelidir. Tekliflerinizi otomatikleştirmek ve optimize etmek için kilitlemek için (requestQuietModeEnabled() yöntemini) özel alanı geçmek (true) veya kilidini açmak (false için) gerekir.
  4. Kilitliyken özel alan kapsayıcısındaki hiçbir uygulama görünmemeli veya arama gibi mekanizmalar aracılığıyla bulunamamalıdır. Uygulamanız alıcı ACTION_PROFILE_AVAILABLE ve ACTION_PROFILE_UNAVAILABLE yayınlarını kullanabilir ve Özel alan kilitli veya kilitli değilken uygulamanızdaki kullanıcı arayüzü dahil edilir. Bu yayınların her ikisinde de EXTRA_USER, gizli profil kullanıcısı.

    Özel alan profilinin kilitli olup olmadığını kontrol etmek için isQuietModeEnabled() yöntemini de kullanabilirsiniz.

Uygulama mağazası uygulamaları

Özel alanda "Uygulama Yükle" seçeneği bulunur gizli bir anahtar kelimeyi başlatan kullanıcının özel alanına uygulama yüklemeyi düşünebilir. Uygulamanızın bir <intent-filter> belirtin. uygulamanızın manifest dosyasında <category> CATEGORY_APP_MARKET.

PNG tabanlı emoji yazı tipi kaldırıldı

Eski, PNG tabanlı emoji yazı tipi dosyası (NotoColorEmojiLegacy.ttf) kaldırılır, sadece vektör tabanlı dosya kalır. Android 13'ten itibaren (API) (ör. 33. düzey), sistem emoji oluşturucusu tarafından kullanılan emoji yazı tipi dosyası, PNG tabanlı bir dosyayı vektör tabanlı bir dosyaya dönüştürün. Sistem 2024 yılında uyumluluk nedeniyle eski yazı tipi dosyasını kullanarak uygulamaları, eski yazı tipi dosyasını kullanmaya devam edebilir. .

Uygulamanızın etkilenip etkilenmediğini kontrol etmek için uygulamanızın kodunda NotoColorEmojiLegacy.ttf dosyası oluşturun.

Uygulamanızı çeşitli şekillerde uyarlamayı seçebilirsiniz:

  • Metin oluşturma için platform API'lerini kullanın. Bir bit eşlem destekli metin oluşturabilirsiniz. Canvas ve gerekirse ham görüntü almak için bunu kullanın.
  • Uygulamanıza COLRv1 yazı tipi desteğini ekleyin. FreeType açık kaynak kitaplığı sürüm 2.13.0'da COLRv1'i destekler ve daha yüksek olabilir.
  • Son çare olarak, eski emoji yazı tipi dosyasını (NotoColorEmoji.ttf) değerini APK'nıza yükleyin, Ancak bu durumda uygulamanız en son emoji güncellemelerini kaçıracaktır. Örneğin, Daha fazla bilgi için Noto Emoji GitHub projesine bakın. öğrenin.

Minimum hedef SDK sürümü 23'ten 24'e yükseltildi

Android 15 Android 14'te yapılan değişiklikler ve bu değişikliğin kapsamını genişleterek daha fazla güvenlik. Android 15'te targetSdkVersion değeri 24'ten düşük olan uygulamalar yüklenemez. Uygulamaların modern API seviyelerini karşılamasını zorunlu kılmak, güvenliğin ve gizlilik.

Kötü amaçlı yazılımlar, güvenlik ve gizliliği atlamak için genellikle daha düşük API seviyelerini hedefler. yüksek Android sürümlerinde sunulan koruma özellikleri. Örneğin, bazı kötü amaçlı yazılım uygulamalarıtargetSdkVersion Android 6.0 Marshmallow (API) tarafından 2015'te kullanıma sunulan çalışma zamanı izin modeli 23. düzey). Android 15'teki bu değişiklik, kötü amaçlı yazılımların güvenlikten kaçınmasını zorlaştırıyor ve gizlilikle ilgili iyileştirmeler yapıldı. Daha düşük bir API'yi hedefleyen bir uygulama yüklenmeye çalışılıyor düzeyinde bir yükleme işlemi hatasıyla sonuçlanır ve bu hataya aşağıdaki gibi bir mesaj gönderilir Logcat'te görünüyor:

INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7

Android 15'e geçen cihazlarda, targetSdkVersion daha düşük 24'ten fazlası yüklü durumda.

Eski bir API düzeyini hedefleyen bir uygulamayı test etmeniz gerekirse aşağıdaki ADB'yi kullanın komut:

adb install --bypass-low-target-sdk-block FILENAME.apk

Güvenlik ve gizlilik

Android 15, tek kullanımlık şifre kodu (OTP) sahtekarlığıyla mücadele etmek ve kullanıcının hassas içeriklerini korumak için Notification Listener Hizmeti ile ekran paylaşımı korumalarını güçlendirmeye odaklanan güçlü önlemler sunar. Önemli iyileştirmeler arasında, güvenilmeyen uygulamaların erişebildiği bildirimlerden tek kullanımlık şifreleri çıkarma, ekran paylaşımı sırasında bildirimleri gizleme ve tek kullanımlık şifreler yayınlandığında uygulama etkinliklerini güvence altına alma yer alır. Bu değişikliklerin amacı, kullanıcının hassas içeriğini yetkisiz kişilerden korumaktır.

Geliştiricilerin, uygulamalarının Android 15'teki değişikliklerle uyumlu olmasını sağlamak için aşağıdakileri göz önünde bulundurması gerekir:

OTP Çıkarma

Android, NotificationListenerService uygulayan güvenilmeyen uygulamaların, tek kullanımlık şifrenin algılandığı bildirimlerdeki düzeltilmemiş içeriği okumasını engeller. Eşlik eden cihaz yöneticisi dernekleri gibi güvenilir uygulamalar bu kısıtlamalardan muaftır.

Ekran Paylaşımı Koruması

  • Kullanıcı gizliliğini korumak için ekran paylaşımı oturumları sırasında bildirim içeriği gizlenir. Uygulama setPublicVersion()'u uygularsa Android, güvenli olmayan bağlamlarda yedek bildirim olarak hizmet veren bildirimin herkese açık sürümünü gösterir. Aksi takdirde, bildirim içeriği başka bir bağlam bilgisi olmadan çıkartılır.
  • Şifre girişi gibi hassas içerikler, kullanıcının hassas bilgilerinin açığa çıkmasını önlemek için uzaktan izleyicilere gösterilmez.
  • Ekran paylaşımı sırasında OTP algılanan ve bildirim yayınlayan uygulamalardan gelen etkinlikler gizlenir. Uygulama içeriği, başlatıldığında uzaktan görüntüleyene gösterilmez.
  • Android'in hassas alanları otomatik olarak tanımlamasının yanı sıra geliştiriciler, ekran paylaşımı sırasında uzak görüntüleyenlerden gizlenen setContentSensitivity kullanarak uygulamalarının bölümlerini manuel olarak hassas olarak işaretleyebilir.
  • Geliştiriciler, demo veya test amacıyla ekran paylaşımı korumalarından muaf olmak için Geliştirici Seçenekleri bölümündeki Ekran paylaşımı korumalarını devre dışı bırak seçeneğini etkinleştirebilir. Varsayılan sistem ekran kaydedici, kayıtlar cihazda kaldığı için bu değişikliklerden muaftır.

Kamera ve medya içerikleri

Android 15, tüm uygulamalar için kamera ve medya davranışında aşağıdaki değişiklikleri yapar.

Doğrudan ve aktarma ses oynatma, kaynak sınırlarına ulaşıldığında daha önce açık olan doğrudan veya aktarma ses parçalarını geçersiz kılar

Android 15'ten önce, bir uygulama başka bir uygulama ses çalarken doğrudan ses çalmayı veya ses çalmayı istediyse ve kaynak sınırlarına ulaşıldıysa uygulama yeni bir AudioTrack açamazdı.

Android 15'ten itibaren, bir uygulama doğrudan veya boşaltma oynatma istediğinde ve kaynak sınırlarına ulaşıldığında sistem şu anda açık olan tüm AudioTrack nesnelerini geçersiz kılar ve bu da yeni kanal isteğinin yerine getirilmesini engeller.

(Doğrudan ve boşaltılmış ses parçaları genellikle sıkıştırılmış ses biçimlerinin çalınması için açılır. Doğrudan ses çalmaya ilişkin yaygın kullanım alanları arasında HDMI üzerinden TV'ye kodlanmış ses akışı bulunur. Boşaltma kanalları genellikle donanım DSP hızlandırmalı bir mobil cihazda sıkıştırılmış sesi çalmak için kullanılır.)

Kullanıcı deneyimi ve sistem kullanıcı arayüzü

Android 15, daha tutarlı ve sezgisel bir kullanıcı deneyimi sunmayı amaçlayan bazı değişiklikler içerir.

Özelliği etkinleştiren uygulamalarda tahmine dayalı geri hareketi animasyonları etkinleştirilir.

Geliştiricinin tahmini geri animasyonları seçeneği Android 15'ten itibaren kaldırıldı. Ana sayfaya geri dön, çapraz görev ve çapraz etkinlik gibi sistem animasyonları artık tamamen veya etkinlik düzeyinde tahmine dayalı geri hareketini etkinleştiren uygulamalarda görünür. Uygulamanız etkileniyorsa aşağıdaki işlemleri yapın:

  • Tahmine dayalı geri hareketi kullanmak için uygulamanızın düzgün şekilde taşındığından emin olun.
  • Parça geçişlerinizin tahmine dayalı geri gezinme ile çalıştığından emin olun.
  • Animasyon ve çerçeve geçişlerinden uzaklaşıp bunun yerine animator ve Android geçişlerini kullanın.
  • FragmentManager adlı kullanıcının bilmediği yığınlardan uzaklaşın. Bunun yerine FragmentManager veya Gezinme bileşeni tarafından yönetilen arka yığınları kullanın.

Kullanıcı bir uygulamayı zorla durdurduğunda widget'lar devre dışı bırakılır

Bir kullanıcı, Android 15 çalıştıran bir cihazda bir uygulamayı zorla durdurursa sistem, uygulamanın tüm widget'larını geçici olarak devre dışı bırakır. Widget'lar devre dışı ve kullanıcı bunlarla etkileşimde bulunamaz. Bunun nedeni, Android 15'ten itibaren uygulama zorla durdurulduğunda sistemin, uygulamanın bekleyen tüm amaçlarını iptal etmesidir.

Kullanıcı uygulamayı bir sonraki açışında sistem bu widget'ları yeniden etkinleştirir.

Daha fazla bilgi için Paket durduruldu durumunda yapılan değişiklikler sayfasını inceleyin.

Medya yansıtma durum çubuğu çipi, kullanıcıları ekran paylaşımı, yayınlama ve kayıt hakkında uyarır

Screen projection exploits expose private user data such as financial information because users don't realize their device screen is being shared. Android has until now shown screen cast and screen record icons on the status bar, but the icons are small and often overlooked. Also, stopping screen sharing or recording is cumbersome because controls are in Quick Settings.

Android 15 introduces a new status bar chip that is large and prominent, which should alert users to any in-progress screen projection. Users can tap the chip to stop their screen from being shared, cast, or recorded.

To provide an intuitive user experience, screen projection now automatically stops when the device screen is locked.

Benefits and performance gains

The new media projection status bar chip enhances the user experience as follows:

  • Alerts users to in-progress screen sharing, casting, or recording
  • Enable users to terminate screen projection by tapping the chip

Automatic suspension of screen projection when the device screen is locked ensures user privacy.

Check if your app is impacted

By default, your app includes the new status bar chip and automatically suspends screen projection when the lock screen activates. Test your app by implementing the onStop() method of the MediaProjection.Callback. Verify that your app responds appropriately when the screen projection stops as a result of the user tapping the status bar chip or when the lock screen activates.

Kullanımdan kaldırmalar

Her sürümde belirli Android API'leri kullanımdan kaldırılabilir veya daha iyi bir geliştirici deneyimi sunmak ya da yeni platform özelliklerini desteklemek için yeniden tasarlanması gerekebilir. Bu tür durumlarda, eski API'lerin desteğini resmen sonlandırır ve geliştiricileri bunun yerine kullanabilecekleri alternatif API'lere yönlendiririz.

Desteği sonlandırma, API'ler için resmi desteği sonlandırdığımız ancak geliştiricilerin bu API'leri kullanmaya devam edebileceği anlamına gelir. Bu Android sürümünde desteği sonlandırılan önemli özellikler hakkında daha fazla bilgi edinmek için desteği sonlandırılan özellikler sayfasını inceleyin.