Platforma Android 15 obejmuje zmiany w działaniu, które mogą mieć wpływ na Twoją aplikację.
Poniższe zmiany w działaniu mają zastosowanie do wszystkich aplikacji działających na Androidzie 15:
bez względu na wartość targetSdkVersion
. Przetestuj aplikację, a potem wprowadź w niej zmiany
w razie potrzeby, aby je prawidłowo obsługiwać.
Przejrzyj też listę zmian w działaniu, które wpływają tylko na aplikacje kierowanych na Androida 15.
Główna funkcja
Android 15 zmienia lub rozszerza różne podstawowe funkcje systemu Android.
Zmiany stanu zatrzymania pakietu
Intencją stanu pakietu FLAG_STOPPED
(który użytkownicy mogą korzystać z kompilacji AOSP przez przytrzymanie ikony aplikacji i wybranie „Wymuś zatrzymanie”) zawsze polegał na utrzymywaniu aplikacji w tym stanie do momentu, gdy użytkownik wyraźnie usunie ją z tego stanu, bezpośrednio ją uruchamiając lub pośrednio wchodząc z nią w interakcję (np. za pomocą arkusza udostępniania lub widżetu, wybierając ją jako animowaną tapetę itp.). W Androidzie 15 aktualizujemy działanie systemu, aby dostosować je do zamierzonego działania. Aplikacje można usuwać ze stanu zatrzymania tylko poprzez bezpośrednie lub pośrednie działania użytkownika.
Aby umożliwić działanie zamierzonego działania, oprócz dotychczasowych ograniczeń system anuluje też wszystkie intencje oczekujące, gdy aplikacja zostanie zatrzymana na urządzeniu z Androidem 15. Gdy działanie użytkownika spowoduje usunięcie aplikacji ze stanu zatrzymania, transmisja ACTION_BOOT_COMPLETED
jest dostarczana do aplikacji, co umożliwia ponowne zarejestrowanie wszystkich oczekujących intencji.
Możesz wywołać nową metodę ApplicationStartInfo.wasForceStopped()
, aby sprawdzić, czy aplikacja została zatrzymana.
Obsługa rozmiarów stron o rozmiarze 16 KB.
W przeszłości Android obsługiwał jedynie strony o rozmiarze 4 KB, które obsługują zoptymalizowana wydajność pamięci systemowej dla średniej ilości pamięci Urządzenia z Androidem zwykle mają Począwszy od Androida 15, AOSP obsługuje urządzenia skonfigurowane pod kątem używania strony o rozmiarze 16 KB (16 KB). urządzenia). Jeśli aplikacja korzysta z jakichkolwiek bibliotek NDK, bezpośrednio lub pośrednio za pomocą pakietu SDK, musisz ponownie skompilować aplikację, na urządzeniach o rozmiarze 16 KB.
W miarę jak producenci tworzą urządzenia, na których jest coraz więcej pamięci fizycznej (RAM) wiele z tych urządzeń będzie miało rozmiar 16 KB, w celu optymalizacji wydajności urządzenia. Dodaję obsługa urządzeń o rozmiarze strony 16 KB umożliwia urządzeń i pomaga aplikacji czerpać korzyści z powiązanej wydajności wiele ulepszeń. Bez ponownej kompilacji aplikacje mogą nie działać na urządzeniach o rozmiarze 16 KB podczas produkcji w kolejnych wersjach Androida.
Aby pomóc Ci w obsłudze aplikacji, przygotowaliśmy wskazówki, jak sprawdzić, jeśli ma to wpływ na Twoją aplikację, jak stworzyć aplikację ponownie (w stosownych przypadkach) i jak przetestować ją środowisko o wielkości 16 KB z emulatorami (w tym Android 15). obrazów systemu dla emulatora Androida).
Korzyści i wzrost skuteczności
Urządzenia o rozmiarze stron o rozmiarze 16 KB zużywają średnio trochę więcej pamięci, ale poprawiają też wydajność zarówno systemu, jak i aplikacji:
- Krótszy czas uruchamiania aplikacji, gdy system wykorzystuje pamięć: średnio o 3,16% krótszy niż w przypadku niektórych testowanych aplikacji
- Mniejsze wykorzystanie energii podczas uruchamiania aplikacji: średnio o 4,56%
- Szybsze uruchamianie kamery: średnio o 4,48% szybsze uruchomienia z pamięci i o 6,60% szybsze uruchomienia „na zimno”
- Skrócony czas uruchamiania systemu: średnio o 1,5% (około 0,8 sekundy).
Te ulepszenia są oparte na naszych wstępnych testach, więc wyniki na rzeczywistych urządzeniach będą się prawdopodobnie różnić. W trakcie testów będziemy przeprowadzać dodatkową analizę potencjalnych korzyści związanych z aplikacjami.
Sprawdź, czy ta zmiana dotyczy Twojej aplikacji
Jeśli Twoja aplikacja korzysta z kodu natywnego, musisz odbudować ją na urządzeniach z obsługą 16 KB. Jeśli nie masz pewności, czy Twoja aplikacja używa kodu natywnego, możesz skorzystać z Analizatora plików APK, by sprawdzić, czy w aplikacji znajduje się kod natywny.
Jeśli Twoja aplikacja używa tylko kodu napisanego w języku Java lub w Kotlin, w tym wszystkich bibliotek i pakietów SDK, obsługuje już urządzenia z 16 KB. Zalecamy jednak przetestowanie aplikacji w środowisku 16 KB, aby sprawdzić, czy w jej działaniu nie występują nieoczekiwane regresje.
Zmiany wymagane w przypadku niektórych aplikacji obsługujących przestrzeń prywatną
Przestrzeń prywatna to nowa funkcja Androida 15, która umożliwia użytkownikom utworzyć na urządzeniu osobne miejsce, w którym mogą trzymać poufne aplikacje z dala od siebie; pod kątem dodatkowej warstwy uwierzytelniania. Ponieważ aplikacje w w przestrzeni prywatnej jest ograniczona widoczność, niektóre typy aplikacji muszą dodatkowe czynności, które pozwalają wyświetlać aplikacje i wchodzić z nimi w interakcje w prywatnych usługach użytkownika kosmosu.
Wszystkie aplikacje
Ponieważ aplikacje w przestrzeni prywatnej są przechowywane w osobnym profilu użytkownika, podobnie jak w profilach służbowych, aplikacje nie powinny zakładać, że żadna z nich ich kopie aplikacji, które nie znajdują się w profilu głównym, znajdują się w profilu służbowym. Jeśli aplikacja ma logikę związaną z aplikacjami w profilu służbowym, które przyjmują to musisz dostosować tę logikę.
Medycyna
Gdy użytkownik zablokuje obszar prywatny, wszystkie aplikacje w przestrzeni prywatnej zostają zatrzymane i nie mogą wykonywać działań na pierwszym planie ani w tle, takich jak wyświetlania powiadomień. Takie działanie może mieć krytyczny wpływ na korzystanie funkcji aplikacji medycznych zainstalowanych w przestrzeni prywatnej.
Interfejs konfiguracji przestrzeni prywatnej ostrzega użytkowników, że przestrzeń prywatna nie jest odpowiednie dla aplikacji, które muszą działać na pierwszym planie lub w tle. aktywności, na przykład powiadomień z aplikacji medycznych. Pamiętaj jednak: aplikacje nie są w stanie określić, czy są używane w przestrzeni prywatnej więc nie będzie można wyświetlić ostrzeżenia użytkownika w tym przypadku.
Dlatego, jeśli tworzysz aplikację medyczną, sprawdź, jak ta funkcja może wpływać na aplikację i podejmować odpowiednie działania – np. uświadomić użytkownikom, zainstalować aplikację w przestrzeni prywatnej, aby nie zakłócać działania ważnej aplikacji funkcje zabezpieczeń.
Menu z aplikacjami
Jeśli tworzysz program uruchamiający, musisz wykonać te czynności przed aplikacjami w przestrzeń prywatna będzie widoczna:
- musi być ustawiona jako domyślny program uruchamiający na urządzeniu,
jest użytkownikiem
ROLE_HOME
. - Aplikacja musi zadeklarować uprawnienie
ACCESS_HIDDEN_PROFILES
w pliku manifestu aplikacji.
Aplikacje z aplikacjami deklarującymi uprawnienia ACCESS_HIDDEN_PROFILES
muszą obsługiwać
w tych przypadkach użycia przestrzeni prywatnej:
- Aplikacja musi mieć osobny kontener programu uruchamiającego dla aplikacji zainstalowanych w
w przestrzeni prywatnej. Użyj metody
getLauncherUserInfo()
, aby określają, jaki typ profilu użytkownika jest obsługiwany. - Użytkownik musi mieć możliwość ukrywania i wyświetlania kontenera przestrzeni prywatnej.
- Użytkownik musi mieć możliwość zablokowania i odblokowania kontenera przestrzeni prywatnej. Używaj
metodę
requestQuietModeEnabled()
do zablokowania (przez przekroczenie wartościtrue
) lub odblokowanie (przez przekazanie danychfalse
) przestrzeni prywatnej. Po zablokowaniu żadna aplikacja w kontenerze obszaru prywatnego nie powinna być widoczna ani wykrywalne za pomocą takich mechanizmów jak wyszukiwarka. Aplikacja powinna zarejestrować odbiornika
ACTION_PROFILE_AVAILABLE
iACTION_PROFILE_UNAVAILABLE
transmituje i aktualizuje Interfejs w aplikacji po zablokowaniu lub odblokowaniu obszaru prywatnego. zmian w kontenerze. Obie te transmisje obejmująEXTRA_USER
, za pomocą którego aplikacja może określać użytkownika profilu prywatnego.Możesz też użyć metody
isQuietModeEnabled()
, aby sprawdzić, czy profil w przestrzeni prywatnej jest zablokowany.
Aplikacje ze sklepu z aplikacjami
Przestrzeń prywatna obejmuje opcję „Zainstaluj aplikacje” uruchamiający niejawny
zamiar instalowania aplikacji w przestrzeni prywatnej użytkownika. Aby aplikacja
dla tej intencji ogólnej, zadeklaruj <intent-filter>
w pliku manifestu aplikacji z <category>
wartością
CATEGORY_APP_MARKET
.
Usunięto czcionkę emotikonów w formacie PNG
基于 PNG 的旧版表情符号字体文件 (NotoColorEmojiLegacy.ttf
) 已
只留下基于矢量的文件从 Android 13 (API) 开始
级别 33),系统表情符号渲染程序使用的表情符号字体文件已从
PNG 文件转换为矢量文件。系统保留了
Android 13 和 14 中的旧版字体文件。
具有自己的字体渲染程序的应用可以继续使用旧版字体文件
直到能够升级为止
要查看您的应用是否会受到影响,请在应用的代码中搜索对
NotoColorEmojiLegacy.ttf
文件。
您可以选择以多种方式调整您的应用:
- 使用平台 API 进行文本渲染。您可以将文本渲染为基于位图的
Canvas
,并在必要时使用它获取原始图像。 - 向您的应用添加 COLRv1 字体支持。FreeType 开源库 在版本 2.13.0 中支持 COLRv1,并且 。
- 万不得已时,可以将旧版表情符号字体文件打包
(
NotoColorEmoji.ttf
) 复制到您的 APK 中, 但在这种情况下,您的应用将缺少最新的表情符号更新。对于 请参阅 Noto 表情符号 GitHub 项目 页面。
Zwiększono minimalną docelową wersję pakietu SDK z 23 do 24
Android 15 opiera się na
zmian wprowadzonych w Androidzie 14 i rozszerzając te
i zwiększaj bezpieczeństwo. Na Androidzie 15 aplikacje z
Nie można zainstalować wersji targetSdkVersion
o wartości niższej niż 24.
Wymuszanie przez aplikacje zgodności z nowoczesnymi poziomami interfejsów API pomaga zapewnić większe bezpieczeństwo
prywatności.
Złośliwe oprogramowanie często trafia do interfejsów API na niższych poziomach, aby ominąć bezpieczeństwo i prywatność
zabezpieczeń wprowadzonych w wyższych wersjach Androida. Przykład:
niektóre złośliwe aplikacje używają tych zabezpieczeń: targetSdkVersion
z 22,
model uprawnień czasu działania wprowadzony w 2015 r. przez Androida 6.0 Marshmallow (API)
poziom 23). Ta zmiana w Androidzie 15 utrudnia złośliwemu unikaniu zabezpieczeń
i lepszą ochronę prywatności. Próba zainstalowania aplikacji kierowanej na niższy interfejs API
spowoduje błąd instalacji i pojawi się komunikat podobny do tego:
widoczne w dzienniku Logcat:
INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7
na urządzeniach z Androidem 15 i z Androidem w wersji starszej niż targetSdkVersion
.
pozostaną zainstalowane niż 24.
Jeśli chcesz przetestować aplikację kierowaną na starszy poziom interfejsu API, użyj tego ADB polecenie:
adb install --bypass-low-target-sdk-block FILENAME.apk
Aparat i multimedia
Android 15 wprowadza te zmiany w działaniu aparatu i multimediów u wszystkich użytkowników aplikacji.
Bezpośrednie i bez załadowania unieważniają teraz wcześniej otwarte ścieżki audio, które były bezpośrednio otwarte lub nie były wczytywane, po osiągnięciu limitów zasobów
Przed Androidem 15, jeśli aplikacja zażądała bezpośredniego odtwarzania dźwięku lub odciążenia go, gdy inna aplikacja odtwarzała dźwięk, a osiągnięto limity zasobów, aplikacja nie otwierała nowego AudioTrack
.
Począwszy od Androida 15, gdy aplikacja prosi o odtwarzanie bezpośrednie lub odciążanie i osiągnięte zostaną limity zasobów, system unieważnia aktualnie otwarte obiekty AudioTrack
, co uniemożliwia realizację nowego żądania śledzenia.
Ścieżki audio są zwykle otwierane w celu odtwarzania skompresowanych formatów audio. Typowym przypadkiem użycia bezpośredniego odtwarzania dźwięku jest przesyłanie dźwięku zakodowanego przez HDMI na telewizor. Ścieżki audio są zwykle używane do odtwarzania skompresowanego dźwięku na urządzeniu mobilnym ze sprzętową akceleracją DSP.
Wygoda użytkowania i interfejs systemu
W Androidzie 15 wprowadziliśmy kilka zmian, które mają zapewnić intuicyjną obsługę.
Animacje przewidywanego przejścia wstecz włączone w aplikacjach, które wyraziły zgodę
W Androidzie 15 opcja dla programistów dotycząca prognozowanych animacji wstecznych została usunięta. Animacje systemowe, np. powrót do ekranu głównego, wykonywanie różnych zadań czy wielozadaniowość, są teraz widoczne w aplikacjach, które włączyły gest przewidywanego przejścia wstecz w całości lub na poziomie aktywności. Jeśli dotyczy to Twojej aplikacji, wykonaj te czynności:
- Aby korzystać z przewidywanego gestu wstecznego, upewnij się, że aplikacja została prawidłowo przeniesiona.
- Upewnij się, że przejścia fragmentów działają z prognozowaniem poprzedniej nawigacji.
- Zrezygnuj z przejścia animacji i platformy na rzecz animacji i przejścia androidx.
- Przejdź z powrotem na stosy wsteczne, o których
FragmentManager
nie wie. Użyj zamiast nich stosów zwrotnych zarządzanych przezFragmentManager
lub komponent Nawigacja.
Widżety są wyłączone, gdy użytkownik wymusza zatrzymanie aplikacji
Jeśli użytkownik wymusi zatrzymanie aplikacji na urządzeniu z Androidem 15, system tymczasowo wyłączy wszystkie widżety aplikacji. Widżety są wyszarzone i użytkownik nie może z nich korzystać. Dzieje się tak dlatego, że począwszy od Androida 15, gdy zostało wymuszone zatrzymanie aplikacji, system anuluje wszystkie oczekujące intencje.
System włączy je ponownie, gdy użytkownik uruchomi aplikację następnym razem.
Więcej informacji znajdziesz w artykule Zmiany w stanie zatrzymania pakietu.
Wycofania
W każdej wersji określone interfejsy API Androida mogą stać się przestarzałe lub wymagać refaktoryzowanych, aby zapewnić lepsze wrażenia programistów lub zapewnić obsługę nowej platformy; funkcje zabezpieczeń. W takich przypadkach oficjalnie wycofujemy przestarzałe interfejsy API, kierować programistów do alternatywnych interfejsów API.
Wycofanie oznacza, że zakończyliśmy oficjalną obsługę interfejsów API, ale będą nadal dostępne dla deweloperów. Aby dowiedzieć się więcej o godnych uwagi funkcji wycofanych w tej wersji Androida, przeczytaj stronę wycofywania.