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

Android 15 platformu, uygulamanızı etkileyebilecek davranış değişikliklerini içerir. Aşağıdaki davranış değişiklikleri, targetSdkVersion sürümünden bağımsız olarak, Android 15 ile çalışan tüm uygulamalar için geçerlidir. Uygulamanızı test etmeli ve ardından uygun olduğunda bunları doğru şekilde desteklemek için gerektiği şekilde değiştirmelisiniz.

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

Temel işlevler

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

Paket durduruldu durumunda yapılan değişiklikler

软件包 FLAG_STOPPED 状态(用户可以通过长按应用图标并选择“强行停止”来参与 AOSP build)一直是为了让应用保持此状态,直到用户通过直接启动应用或间接与应用互动(通过 Sharesheet 或 widget、选择应用作为动态壁纸等)将应用从此状态明确移除。在 Android 15 中,我们将更新系统的行为,以符合这一预期行为。只能通过用户直接或间接操作将应用从停止状态中移除。

为了支持预期行为,除了现有限制之外,当应用在搭载 Android 15 的设备上进入停止状态时,系统还会取消所有待处理 intent。当用户的操作将应用从停止状态中移除时,系统会向应用传递 ACTION_BOOT_COMPLETED 广播,让用户有机会重新注册任何待处理的 intent。

您可以调用新的 ApplicationStartInfo.wasForceStopped() 方法来确认应用是否已置于停止状态。

16 KB'lık sayfa boyutları için destek

Android, geçmişte yalnızca 4 KB bellekli sayfa boyutlarını destekliyordu. Bu sayede, Android cihazların genel olarak sahip olduğu ortalama toplam bellek miktarı açısından sistem belleği performansı optimize edilmiş oluyordu. Android 15'ten itibaren Android, 16 KB'lık sayfa boyutu (16 KB'lık cihazlar) kullanacak şekilde yapılandırılmış cihazları desteklemektedir.

Cihaz üreticileri daha fazla miktarda fiziksel belleğe (RAM) sahip cihazlar geliştirmeye devam ettikçe, cihazın performansını optimize etmek için bu cihazların birçoğu muhtemelen 16 KB'lık (ve sonunda daha büyük) sayfa boyutlarıyla yapılandırılacaktır. 16 KB'lık cihazlar için destek eklenmesi, uygulamanızın bu cihazlarda çalışmasına ve ilişkili performans iyileştirmelerinden yararlanmasına yardımcı olur. Bu konuda size yardımcı olmak için uygulamanızın etkilenip etkilenmediğini kontrol etme, uygulamanızı yeniden oluşturma (geçerliyse) ve hem emülatörler hem de fiziksel cihazlar kullanarak uygulamanızı 16 KB'lık bir ortamda test etme konularında rehberlik sağladık.

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 elde eder:

  • Sistem bellek baskısı altındayken daha düşük uygulama başlatma süreleri: Ortalama %3,16 daha düşük, test ettiğimiz bazı uygulamalar için daha önemli iyileştirmeler (%30'a kadar)
  • Uygulama başlatılırken daha az güç tüketimi: Ortalama% 4,56 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ı baştan başlatma
  • İyileştirilmiş sistem başlatma süresi: Ortalama %1,5 (yaklaşık 0,8 saniye) iyileştirildi

Bu iyileştirmeler, yaptığımız ilk testlere dayanmaktadır ve gerçek cihazlardaki sonuçlar muhtemelen farklılık gösterecektir. Testlerimize devam ederken, uygulamalar için potansiyel kazançlarla ilgili ek analizler sağlayacağız.

Uygulamanızın etkilenip etkilenmediğini kontrol edin

Uygulamanız herhangi bir yerel kod kullanıyorsa uygulamanızı 16 KB'lık cihazları destekleyecek şekilde yeniden oluşturmanız gerekir. Uygulamanızın yerel kod kullanıp kullanmadığından emin değilseniz yerel kod olup olmadığını belirlemek için APK Analiz Aracı'nı kullanabilirsiniz.

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

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

Özel alan, Android 15'teki yeni bir özelliktir. Kullanıcılar, ek bir kimlik doğrulama katmanıyla hassas uygulamaları meraklı gözlerden uzak tutabilecekleri, cihazlarında ayrı bir alan oluşturabilir. Özel alandaki uygulamaların görünürlüğü kısıtlı olduğundan, bazı uygulama türlerinin, bir kullanıcının özel alanındaki uygulamaları görebilmek ve bunlarla etkileşimde bulunabilmek için ek adımlar atması gerekir.

Tüm uygulamalar

Özel alandaki uygulamalar, iş profillerinde olduğu gibi ayrı bir kullanıcı profilinde saklandığından uygulamalar, ana profilde olmayan uygulamaların yüklü kopyalarının iş profilinde olduğunu varsaymamalıdır. Uygulamanız, bu varsayımı yapan iş profili uygulamalarıyla ilgili bir mantığa sahipse bu mantığı ayarlamanız gerekir.

Başlatıcı uygulamaları

Başlatıcı uygulaması geliştirirseniz özel alandaki uygulamaların görünür hale gelmesi için aşağıdakileri yapmanız gerekir:

  1. Uygulamanız, cihaz için varsayılan başlatıcı uygulaması olarak atanmalıdır; diğer bir deyişle, ROLE_HOME rolüne sahip olmalıdır.
  2. Uygulamanız, uygulamanızın manifest dosyasında ACCESS_HIDDEN_PROFILES normal iznini beyan etmelidir.

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

  1. Uygulamanızın, özel alana yüklenen uygulamalar için ayrı bir başlatıcı kapsayıcısı olmalıdır. Hangi kullanıcı profili türünün işlendiğini belirlemek için getLauncherUserInfo() yöntemini kullanın.
  2. Kullanıcı, özel alan kapsayıcısını gizleyip gösterebilmelidir.
  3. Kullanıcı, özel alan kapsayıcısını kilitleyebilmelidir ve kapsayıcının kilidini açabilmelidir. Özel alanı kilitlemek (true atlayarak) veya kilidini açmak (false'u geçerek) için requestQuietModeEnabled() yöntemini kullanın.
  4. Kilitliyken özel alan kapsayıcısındaki hiçbir uygulama, arama gibi mekanizmalar aracılığıyla görünür veya bulunabilir olmamalıdır. Uygulamanız, ACTION_PROFILE_AVAILABLE ve ACTION_PROFILE_UNAVAILABLE yayınları için bir alıcı kaydetmeli ve özel alan container'ının kilitli veya kilitsiz durumu değiştiğinde uygulamanızdaki kullanıcı arayüzünü güncellemelidir. Bu yayınların her ikisi de uygulamanızın gizli profil kullanıcısına referans vermek için kullanabileceği EXTRA_USER öğesini içerir.

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

Uygulama mağazası uygulamaları

Özel alanda, kullanıcının özel alanına uygulama yükleme niyetini başlatan bir "Uygulama Yükle" düğmesi bulunur. Uygulamanızın bu örtülü niyeti alması için uygulamanızın manifest dosyasında <intent-filter> öğesini CATEGORY_APP_MARKET ile <category> bildirin.

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

Android 15 基于 Android 14 中发生的变更构建,并进一步扩展了这种安全性。在 Android 15 中,targetSdkVersion 低于 24 的应用将无法安装。要求应用满足现代 API 级别有助于确保更好的安全性和隐私保护。

恶意软件通常会以较低的 API 级别为目标平台,以绕过在更高 Android 版本中引入的安全和隐私保护机制。例如,有些恶意软件应用使用 targetSdkVersion 22,以避免受到 Android 6.0 Marshmallow(API 级别 23)在 2015 年引入的运行时权限模型的约束。这项 Android 15 变更使恶意软件更难以规避安全和隐私保护方面的改进。尝试安装以较低 API 级别为目标平台的应用会导致安装失败,并且 Logcat 中会显示如下消息:

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

在升级到 Android 15 的设备上,targetSdkVersion 低于 24 的所有应用都将保持安装状态。

如果您需要测试以旧版 API 级别为目标平台的应用,请使用以下 ADB 命令:

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

Kamera ve medya

Android 15, tüm uygulamalarda kamera ve medya davranışında aşağıdaki değişiklikleri yapmaktadır.

Doğrudan ve boşaltılmış ses çalma artık kaynak sınırlarına ulaşıldığında daha önce açılmış olan doğrudan veya boşaltılmış ses kanallarını geçersiz kılıyor

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 oluşturmak için yapılan bazı değişiklikler içerir.

Etkinleştirilen uygulamalar için tahmini geri dönme animasyonları etkinleştirildi

从 Android 15 开始,移除了预测性返回动画的开发者选项。现在,对于已完全或在 activity 级别选择启用预测性返回手势的应用,系统现在会显示“返回主屏幕”“跨任务”和“跨 activity”等系统动画。如果您的应用受到影响,请执行以下操作:

  • 确保您的应用已正确迁移,以使用预测性返回手势。
  • 确保您的 fragment 转换支持预测性返回导航。
  • 停止使用动画和框架转换,并改用 Animator 和 AndroidX 转换。
  • FragmentManager 不知道的返回堆栈中迁出。请改用由 FragmentManager 或 Navigation 组件管理的返回堆栈。

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.

Kullanımdan kaldırma sayısı

Her sürümde belirli Android API'leri eskiyebilir veya daha iyi bir geliştirici deneyimi sunmak ya da yeni platform özelliklerini desteklemek için yeniden düzenlenmesi gerekebilir. Bu gibi durumlarda, eski API'leri resmi olarak kullanımdan kaldırıyor ve geliştiricileri alternatif API'lere yönlendiriyoruz.

Kullanımdan kaldırma, API'ler için resmi desteği sona erdirdiğimiz ancak geliştiricilerin kullanımına sunulmaya devam edeceği anlamına gelir. Android'in bu sürümünde gerçekleşen önemli kullanımdan kaldırma işlemleri hakkında daha fazla bilgi edinmek için kullanımdan kaldırma sayfasına göz atın.