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 incelemeyi unutmayın.
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ı AOSP derlemelerinde bir uygulama simgesine uzun basıp "Zorla Durdur"u seçerek bu işleme başlayabilir), kullanıcı uygulamayı doğrudan başlatarak veya dolaylı olarak uygulamayla etkileşime geçerek (paylaşım sayfası veya widget aracılığıyla, uygulamayı canlı duvar kağıdı olarak seçerek vb.) uygulamayı bu durumdan açıkça kaldırana kadar uygulamaları bu durumda tutmak olmuştur. Android 15'te, sistemin davranışını bu amaçlanan davranışla uyumlu olacak şekilde güncelledik. Uygulamalar yalnızca doğrudan veya dolaylı kullanıcı işlemiyle durdurulmuş durumundan kaldırılmalıdır.
Sistem, istenen davranışı desteklemek için Android 15 çalıştıran bir cihazda uygulama durdurulmuş duruma girdiğinde mevcut kısıtlamalara ek olarak tüm beklemedeki intent'leri de iptal eder. Kullanıcının işlemleri uygulamayı durdurulmuş durumdan çıkardığında ACTION_BOOT_COMPLETED
yayını uygulamaya gönderilir. Bu yayın, bekleyen tüm intent'leri yeniden kaydetme fırsatı sunar.
Uygulamanın durdurulmuş duruma alınıp alınmadığını onaylamak 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
私密空间是 Android 15 中推出的一项新功能,可让用户在设备上创建一个单独的空间,在额外的身份验证层保护下,防止敏感应用遭到窥探。由于私密空间中的应用具有受限的公开范围,因此某些类型的应用需要执行额外的步骤,才能查看和与用户私密空间中的应用互动。
所有应用
由于私密空间中的应用会保存在单独的用户资料中(类似于工作资料),因此应用不应假定其任何未位于主资料中的已安装副本都位于工作资料中。如果您的应用包含与工作资料应用相关的逻辑,并且做出了上述假设,则需要调整此逻辑。
医疗应用
当用户锁定私密空间时,私密空间中的所有应用都会停止运行,并且这些应用无法执行前台或后台活动,包括显示通知。此行为可能会严重影响安装在私密空间中的医疗应用的使用和功能。
私密空间设置体验会向用户发出警告,告知私密空间不适合需要执行关键前台或后台活动的应用,例如显示医疗应用发送的通知。不过,应用无法确定自己是否在私密空间中使用,因此无法在这种情况下向用户显示警告。
因此,如果您开发的是医疗应用,请检查此功能可能会对您的应用产生哪些影响,并采取适当的措施(例如告知用户不要在私密空间中安装您的应用),以免中断关键的应用功能。
启动器应用
如果您开发的是启动器应用,则必须执行以下操作,才能看到私密空间中的应用:
- 您的应用必须被指定为设备的默认启动器应用,即具有
ROLE_HOME
角色。 - 您的应用必须在应用的清单文件中声明
ACCESS_HIDDEN_PROFILES
普通权限。
声明 ACCESS_HIDDEN_PROFILES
权限的启动器应用必须处理以下私密空间用例:
- 您的应用必须为安装在私密空间中的应用提供单独的启动器容器。使用
getLauncherUserInfo()
方法确定要处理的用户个人资料类型。 - 用户必须能够隐藏和显示私密空间容器。
- 用户必须能够锁定和解锁私密空间容器。使用
requestQuietModeEnabled()
方法锁定(通过传递true
)或解锁(通过传递false
)私密空间。 在锁定状态下,私密空间容器中的任何应用都应不可见,也无法通过搜索等机制被发现。您的应用应为
ACTION_PROFILE_AVAILABLE
和ACTION_PROFILE_UNAVAILABLE
广播注册接收器,并在私密空间容器的锁定或解锁状态发生变化时更新应用中的界面。这两种状态的广播都包含EXTRA_USER
,您的应用可以使用该常量来引用不公开个人资料的用户。您还可以使用
isQuietModeEnabled()
方法检查私密空间个人资料是否已锁定。
应用商店应用
私密空间包含一个“安装应用”按钮,用于启动隐式 intent 以将应用安装到用户的私密空间。为了让应用能够接收此隐式 intent,请在应用的清单文件中声明一个 <intent-filter>
,并将 <category>
设为 CATEGORY_APP_MARKET
。
PNG tabanlı emoji yazı tipi kaldırıldı
我们移除了基于 PNG 的旧版表情符号字体文件 (NotoColorEmojiLegacy.ttf
),只保留了基于矢量的文件。从 Android 13(API 级别 33)开始,系统表情符号渲染程序使用的表情符号字体文件已从基于 PNG 的文件更改为基于矢量的文件。出于兼容性原因,系统在 Android 13 和 14 中保留了旧版字体文件,以便具有自己的字体渲染程序的应用在能够升级之前继续使用旧版字体文件。
如需检查您的应用是否受到影响,请在应用的代码中搜索对 NotoColorEmojiLegacy.ttf
文件的引用。
您可以通过多种方式自适应应用:
- 使用平台 API 进行文本渲染。您可以将文本渲染到基于位图的
Canvas
,并在必要时使用该Canvas
获取原始图片。 - 为您的应用添加 COLRv1 字体支持。FreeType 开源库在 2.13.0 版及更高版本中支持 COLRv1。
- 作为最后的手段,您可以将旧版表情符号字体文件 (
NotoColorEmoji.ttf
) 捆绑到 APK 中,但在这种情况下,您的应用将缺少最新的表情符号更新。如需了解详情,请参阅 Noto Emoji GitHub 项目页面。
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, başka bir uygulama ses çalarken bir uygulama doğrudan veya aktarma yoluyla ses çalmayı talep ederse ve kaynak sınırlarına ulaşılırsa uygulama yeni bir AudioTrack
açamazdı.
Android 15'ten itibaren, bir uygulama doğrudan oynatma veya aktarma oynatma istediğinde ve kaynak sınırlarına ulaşıldığında sistem, yeni parça isteğinin yerine getirilmesini engelleyen, şu anda açık olan tüm AudioTrack
nesnelerini geçersiz kılar.
(Doğrudan ve aktarılan ses parçaları genellikle sıkıştırılmış ses biçimlerinin oynatılması için açılır. Doğrudan ses oynatmanın yaygın kullanım alanları arasında, kodlanmış sesi HDMI üzerinden TV'ye aktarma yer alır. İndirilen parçalar genellikle donanım DSP hızlandırması olan bir mobil cihazda sıkıştırılmış ses oynatmak 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.
Android 15'ten itibaren tahmine dayalı geri animasyonlar için geliştirici seçeneği kaldırıldı. Ana sayfaya geri gitme, görevler arasında geçiş yapma ve etkinlikler arasında geçiş yapma gibi sistem animasyonları artık tahmini geri hareketini etkinleştiren uygulamalarda tamamen veya etkinlik düzeyinde gösteriliyor. Uygulamanız etkilendiyse aşağıdaki işlemleri yapın:
- Uygulamanızın, tahmini geri hareketi kullanacak şekilde düzgün bir şekilde taşındığından emin olun.
- Parça geçişlerinizin tahmini geri gezinme ile çalıştığından emin olun.
- Animasyon ve çerçeve geçişlerinden uzaklaşın ve bunun yerine animatör ve androidx geçişlerini kullanın.
FragmentManager
'nin bilmediği arka yığınlardan taşının. Bunun yerineFragmentManager
veya Gezinme bileşeni tarafından yönetilen geri 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ışıdır ve kullanıcı bunlarla etkileşim kuramaz. Bunun nedeni, Android 15'ten itibaren sistemin, uygulama zorla durdurulduğunda uygulamanın bekleyen tüm intent'lerini iptal etmesidir.
Sistem, kullanıcı uygulamayı bir sonraki sefer başlattığında bu widget'ları yeniden etkinleştirir.
Daha fazla bilgi için Paket durduruldu durumunda yapılan değişiklikler başlıklı makaleyi inceleyin.
Medya yansıtma durum çubuğu çipi, kullanıcıları ekran paylaşımı, yayınlama ve kayıt hakkında uyarır
Ekran yansıtma istismarlarında, kullanıcılar cihaz ekranlarının paylaşıldığını fark etmediğinden finansal bilgiler gibi gizli kullanıcı verileri açığa çıkar.
Android 15 QPR1 veya sonraki sürümleri çalıştıran cihazlarda, büyük ve belirgin bir durum çubuğu çipi, devam eden ekran yansıtma işlemleri hakkında kullanıcıları uyarır. Kullanıcılar, ekranlarının paylaşılmasını, yayınlamasını veya kaydedilmesini durdurmak için çipe dokunabilir. Ayrıca, cihaz ekranı kilitlendiğinde ekran yansıtma otomatik olarak durur.

Uygulamanızın etkilenip etkilenmediğini kontrol edin
Uygulamanız varsayılan olarak durum çubuğu çipini içerir ve kilit ekranı etkinleştirildiğinde ekran yansıtmayı otomatik olarak askıya alır.
Uygulamanızı bu kullanım alanları için nasıl test edeceğiniz hakkında daha fazla bilgi edinmek için Durum çubuğu çipi ve otomatik durdurma başlıklı makaleyi inceleyin.
Arka planda ağ erişimi kısıtlamaları
Android 15'te, geçerli bir işlem yaşam döngüsü dışında ağ isteği başlatan uygulamalar istisna alır. Genellikle bir UnknownHostException
veya soketle ilgili başka bir IOException
olur. Geçerli yaşam döngüsü dışında gerçekleşen ağ istekleri genellikle uygulamaların artık etkin olmasa bile ağ isteklerini bilmeden devam ettirmesinden kaynaklanır.
Bu istisnayı azaltmak için yaşam döngüsü bilincine sahip bileşenler kullanarak ağ isteklerinizin yaşam döngüsü bilincine sahip olduğundan ve geçerli bir işlem yaşam döngüsünden çıktığında iptal edildiğinden emin olun. Ağ isteğinin, kullanıcı uygulamadan ayrılsa bile yapılması önemliyse WorkManager'ı kullanarak ağ isteğini planlayabilir veya ön plan hizmetini kullanarak kullanıcı tarafından görülebilen bir göreve devam edebilirsiniz.
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.