Android 15 platformu, uygulamanızı etkileyebilecek davranış değişiklikleri içerir.
Aşağıdaki davranış değişiklikleri, Android 15 ile birlikte çalıştırılan tüm uygulamalar için geçerlidir.
targetSdkVersion
fark etmez. Uygulamanızı test edip
ve uygun olduğunda bunları düzgün bir şekilde desteklemek için.
Temel işlevler
Android 15, Android sisteminin çeşitli temel özelliklerini değiştirir veya genişletir.
Paketin durma durumunda yapılan 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 boyutu desteği
Historically, Android has only supported 4 KB memory page sizes, which has optimized system memory performance for the average amount of total memory that Android devices have typically had. Beginning with Android 15, AOSP supports devices that are configured to use a page size of 16 KB (16 KB devices). If your app uses any NDK libraries, either directly or indirectly through an SDK, then you will need to rebuild your app for it to work on these 16 KB devices.
As device manufacturers continue to build devices with larger amounts of physical memory (RAM), many of these devices will adopt 16 KB (and eventually greater) page sizes to optimize the device's performance. Adding support for 16 KB page size devices enables your app to run on these devices and helps your app benefit from the associated performance improvements. Without recompiling, apps might not work on 16 KB devices when they are productionized in future Android releases.
To help you add support for your app, we've provided guidance on how to check if your app is impacted, how to rebuild your app (if applicable), and how to test your app in a 16 KB environment using emulators (including Android 15 system images for the Android Emulator).
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
If your app uses any native code, then you should rebuild your app with support for 16 KB devices. If you are unsure if your app uses native code, you can use the APK Analyzer to identify whether any native code is present.
If your app only uses code written in the Java programming language or in Kotlin, including all libraries or SDKs, then your app already supports 16 KB devices. Nevertheless, we recommend that you test your app in a 16 KB environment to verify that there are no unexpected regressions in app behavior.
Bazı uygulamaların özel alanı desteklemesi için gereken değişiklikler
Private space is a new feature in Android 15 that lets users create a separate space on their device where they can keep sensitive apps away from prying eyes, under an additional layer of authentication. Because apps in the private space have restricted visibility, some types of apps need to take additional steps to be able to see and interact with apps in a user's private space.
All apps
Because apps in the private space are kept in a separate user profile, similar to work profiles, apps shouldn't assume that any installed copies of their app that aren't in the main profile are in the work profile. If your app has logic related to work profile apps that make this assumption, you'll need to adjust this logic.
Medical apps
When a user locks the private space, all apps in the private space are stopped, and those apps can't perform foreground or background activities, including showing notifications. This behavior might critically impact the use and function of medical apps installed in the private space.
The private space setup experience warns users that the private space is not suitable for apps that need to perform critical foreground or background activities, such as showing notifications from medical apps. However, apps can't determine whether or not they're being used in the private space, so they can't show a warning to the user for this case.
For these reasons, if you develop a medical app, review how this feature might impact your app and take appropriate actions—such as informing your users not to install your app in the private space—to avoid disrupting critical app capabilities.
Launcher apps
If you develop a launcher app, you must do the following before apps in the private space will be visible:
- Your app must be assigned as the default launcher app for the device—that
is, possessing the
ROLE_HOME
role. - Your app must declare the
ACCESS_HIDDEN_PROFILES
normal permission in your app's manifest file.
Launcher apps that declare the ACCESS_HIDDEN_PROFILES
permission must handle
the following private space use cases:
- Your app must have a separate launcher container for apps installed in the
private space. Use the
getLauncherUserInfo()
method to determine which type of user profile is being handled. - The user must be able to hide and show the private space container.
- The user must be able to lock and unlock the private space container. Use
the
requestQuietModeEnabled()
method to lock (by passingtrue
) or unlock (by passingfalse
) the private space. While locked, no apps in the private space container should be visible or discoverable through mechanisms such as search. Your app should register a receiver for the
ACTION_PROFILE_AVAILABLE
andACTION_PROFILE_UNAVAILABLE
broadcasts and update the UI in your app when the locked or unlocked state of the private space container changes. Both of these broadcasts includeEXTRA_USER
, which your app can use to refer to the private profile user.You can also use the
isQuietModeEnabled()
method to check whether the private space profile is locked or not.
App store apps
The private space includes an "Install Apps" button that launches an implicit
intent to install apps into the user's private space. In order for your app to
receive this implicit intent, declare an <intent-filter>
in your app's manifest file with a <category>
of
CATEGORY_APP_MARKET
.
PNG tabanlı emoji yazı tipi kaldırıldı
The legacy, PNG-based emoji font file (NotoColorEmojiLegacy.ttf
) has been
removed, leaving just the vector-based file. Beginning with Android 13 (API
level 33), the emoji font file used by the system emoji renderer changed from a
PNG-based file to a vector based file. The system retained
the legacy font file in Android 13 and 14 for compatibility reasons, so that
apps with their own font renderers could continue to use the legacy font file
until they were able to upgrade.
To check if your app is affected, search your app's code for references to the
NotoColorEmojiLegacy.ttf
file.
You can choose to adapt your app in a number of ways:
- Use platform APIs for text rendering. You can render text to a bitmap-backed
Canvas
and use that to get a raw image if necessary. - Add COLRv1 font support to your app. The FreeType open source library supports COLRv1 in version 2.13.0 and higher.
- As a last resort, you can bundle the legacy emoji font file
(
NotoColorEmoji.ttf
) into your APK, although in that case your app will be missing the latest emoji updates. For more information, see the Noto Emoji GitHub project page.
Minimum hedef SDK sürümü 23'ten 24'e yükseltildi
Android 15 builds on the
the changes that were made in Android 14 and extends this
security further. In Android 15, apps with a
targetSdkVersion
lower than 24 can't be installed.
Requiring apps to meet modern API levels helps to ensure better security and
privacy.
Malware often targets lower API levels in order to bypass security and privacy
protections that have been introduced in higher Android versions. For example,
some malware apps use a targetSdkVersion
of 22 to avoid being subjected to the
runtime permission model introduced in 2015 by Android 6.0 Marshmallow (API
level 23). This Android 15 change makes it harder for malware to avoid security
and privacy improvements. Attempting to install an app targeting a lower API
level results in an installation failure, with a message like the following one
appearing in Logcat:
INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7
On devices upgrading to Android 15, any apps with a targetSdkVersion
lower
than 24 remain installed.
If you need to test an app targeting an older API level, use the following ADB command:
adb install --bypass-low-target-sdk-block FILENAME.apk
Kamera ve medya
Android 15, kamera ve medya davranışında aşağıdaki değişiklikleri yapar:
Kaynak sınırlarına ulaşıldığında artık doğrudan ve yüksüz ses çalma işlemi, daha önce açık olan doğrudan veya boşaltılan ses parçaları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 arayüzü
Android 15'te daha tutarlı, daha iyi ve daha iyi en iyi uygulamaları paylaşacağız.
Etkinleştirilen uygulamalar için tahmine dayalı geri animasyonları etkinleştirin
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 yerineFragmentManager
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.
Kullanımdan kaldırmalar
Her sürümle birlikte belirli Android API'leri eskiyebilir veya daha iyi bir geliştirici deneyimi sunmak veya yeni platformu desteklemek için yeniden düzenlendi özellikler. Bu durumlarda eski API'leri resmi olarak kullanımdan kaldırırız ve geliştiricileri bunun yerine kullanılacak alternatif API'lere yönlendirmelidir.
Desteğin sonlandırılması, API'ler için resmî desteği sona erdirdiğimiz anlamına gelir. Ancak API'ler artık otomatik olarak geliştiricilerin kullanımına sunulmaya devam edecektir. Önemli konular hakkında daha fazla bilgi edinmek için destek için kullanımdan kaldırma işlemleri sayfasına bakın.