Spełnij wymóg dotyczący docelowego poziomu interfejsu API w Google Play

Przesyłany plik APK musi spełniać wymagania Google Play dotyczące docelowego poziomu interfejsu API.

Od 31 sierpnia 2023 r.:

  • Nowe aplikacje muszą być kierowane na Androida w wersji 13 (poziom API 33) lub nowszej. Nie dotyczy to aplikacji na Wear OS, które muszą być kierowane na Androida w wersji od 11 (poziom interfejsu API 30) do 13 (poziom API 33).

  • Aktualizacje aplikacji muszą być kierowane na Androida 13 lub nowszego i dostosowywać się pod kątem zmian w działaniu Androida 13. Nie dotyczy to aplikacji na Wear OS, które muszą być kierowane na Androida 11.

Aplikacje trwale prywatne – dostępne tylko dla użytkowników w konkretnej organizacji i przeznaczone tylko do dystrybucji wewnętrznej – nie muszą spełniać wymagań dotyczących docelowego poziomu interfejsu API.

Uwaga: od 2022 roku niektóre nieaktualne aplikacje będą niedostępne dla nowych użytkowników urządzeń z nowszymi wersjami Androida.

Dlaczego warto kierować reklamy na nowsze pakiety SDK?

Każda nowa wersja Androida wprowadza zmiany, które zwiększają bezpieczeństwo i wydajność oraz wygodę użytkowników Androida. Niektóre z tych zmian dotyczą tylko aplikacji, które wyraźnie deklarują obsługę za pomocą atrybutu manifestu targetSdkVersion (nazywanego też docelowym poziomem interfejsu API).

Kierowanie aplikacji na aktualny poziom interfejsu API zapewnia użytkownikom korzyści z tych ulepszeń. Aplikacja nadal będzie działać na starszych wersjach Androida. Kierowanie na aktualny poziom interfejsu API umożliwia też aplikacji korzystanie z najnowszych funkcji platformy, aby zachwycać użytkowników. Poza tym na Androidzie 10 (poziom interfejsu API 29) użytkownicy wyświetlają ostrzeżenie przy pierwszym uruchomieniu aplikacji, jeśli jest ona kierowana na Androida 5.1 (poziom interfejsu API 22) lub niższy.

W tym dokumencie znajdziesz ważne informacje, które musisz wiedzieć, aby zaktualizować docelowy poziom interfejsu API, aby spełniał wymagania Google Play.

W przypadku migracji z wcześniejszych wersji zapoznaj się z pełną listą zmian poniżej.

Uwaga: jeśli plik Gradle zawiera wpisy w pliku manifestu, możesz potwierdzić lub zmienić bieżącą wartość targetSdkVersion w pliku Gradle aplikacji zgodnie z opisem w sekcji Konfigurowanie kompilacji. Możesz też użyć atrybutu android:targetSdkVersion w pliku manifestu zgodnie z opisem w dokumentacji elementu manifestu <uses-sdk>.

Migracja z Androida 12 (poziom interfejsu API 31) na Androida 13 (poziom API 33)

Aby zaktualizować aplikację, aby była kierowana na Androida 13, wykonaj te czynności.

Migracja z Androida 11 (poziom interfejsu API 30) na Androida 12 (poziom API 31)

Zabezpieczenia i uprawnienia

Interfejs użytkownika

  • Powiadomienia niestandardowe: powiadomienia z niestandardowymi widokami treści nie będą już korzystać z pełnego obszaru powiadomień. Zamiast tego system zastosuje szablon standardowy. Ten szablon gwarantuje, że powiadomienia niestandardowe będą miały taki sam wygląd jak inne powiadomienia we wszystkich stanach. To zachowanie jest prawie takie samo jak w przypadku Notification.DecoratedCustomViewStyle.
  • Zmiany dotyczące weryfikacji linków aplikacji na Androida: jeśli używasz weryfikacji linków aplikacji na Androida, upewnij się, że filtry intencji obejmują kategorię BROWSABLE i obsługują schemat HTTPS.

Wydajność

  • Ograniczenia uruchamiania usług działających na pierwszym planie: jeśli chcesz kierować reklamy na Androida w wersji 12 lub nowszej, aplikacja nie może uruchamiać usług działających w tle (z wyjątkiem kilku szczególnych przypadków). Jeśli aplikacja próbuje uruchomić usługę na pierwszym planie, gdy działa w tle, występuje wyjątek (z wyjątkiem kilku szczególnych przypadków).

    Rozważ użycie WorkManagera do planowania i rozpoczynania szybkiej pracy, gdy aplikacja działa w tle. Aby wykonać pilne działania, o które prosi użytkownik, uruchom usługi na pierwszym planie w ramach konkretnego alarmu.

  • Ograniczenia trampoliny: gdy użytkownik kliknie powiadomienia, niektóre aplikacje reagują, uruchamiając komponent, który uruchamia działanie, które użytkownik widzi i z którym wchodzi w interakcję. Ten komponent aplikacji jest nazywany trampoliną powiadomień.

    Aplikacje nie mogą rozpoczynać działań z usług lub odbiorników, które są wykorzystywane jako trampoliny do powiadomień. Gdy użytkownik kliknie powiadomienie lub przycisk polecenia w powiadomieniu, aplikacja nie będzie mogła wywołać startActivity() w usłudze ani odbiorniku.

Zobacz pełny zestaw zmian, które mają wpływ na aplikacje kierowane na Androida 12 (poziom interfejsu API 31).

Migracja z Androida starszego niż 11 (poziom API 30)

Wybierz wersję Androida, z której chcesz przeprowadzić migrację:

Przejdź na Androida 5 (poziom API 21)

Zapoznaj się z odpowiednimi stronami Zmiany w działaniu każdej z poniższych wersji, aby się upewnić, że Twoja aplikacja uwzględnia zmiany wprowadzone w tych wersjach:

Kontynuuj, postępując zgodnie z instrukcjami w następnej sekcji.

Przejdź na Androida 6 (poziom API 23)

W przypadku aplikacji kierowanych na Androida 6.0 i nowsze wersje platformy należy pamiętać o tych kwestiach:

  • Uprawnienia czasu działania

    • Niebezpieczne uprawnienia są przyznawane tylko w czasie działania. Przepływy interfejsu użytkownika muszą zapewniać uprawnienia umożliwiające przyznawanie tych uprawnień.

    • W miarę możliwości upewnij się, że aplikacja jest przygotowana na odrzucenie próśb o przyznanie uprawnień. Jeśli na przykład użytkownik odrzuci prośbę o dostęp do GPS-a, upewnij się, że aplikacja ma inny sposób postępowania.

Pełną listę zmian wprowadzonych w Androidzie 6.0 (poziom interfejsu API 23) znajdziesz na stronie Zmiany w działaniu w danej wersji platformy.

Kontynuuj, postępując zgodnie z instrukcjami w następnej sekcji.

Przejdź na Androida 7 (poziom API 24)

W przypadku aplikacji kierowanych na Androida 7.0 i nowsze wersje platformy należy pamiętać o tych kwestiach:

  • Uśpienie i czuwanie aplikacji

    Projektowanie pod kątem zachowań opisanych w artykule Optymalizacja pod kątem funkcji uśpienia i czuwania aplikacji, która obejmuje stopniowe zmiany wprowadzane w kilku wersjach platformy.

    Gdy urządzenie jest w trybie uśpienia i trybie czuwania aplikacji, system działa w następujący sposób:

  • Zmiany uprawnień

    • System ogranicza dostęp do katalogów prywatnych aplikacji.
    • Ujawnienie identyfikatora URI file:// poza aplikacją powoduje wywołanie FileUriExposedException. Jeśli chcesz udostępniać pliki poza aplikacją, zaimplementuj funkcję FileProvider
  • System zabrania łączenia z bibliotekami innymi niż NDK.

Pełną listę zmian wprowadzonych w Androidzie 7.0 (poziom interfejsu API 24) znajdziesz na stronie Zmiany w działaniu w danej wersji platformy.

Kontynuuj, postępując zgodnie z instrukcjami w następnej sekcji.

Przejdź na Androida 8 (poziom API 26)

W przypadku aplikacji kierowanych na Androida 8.0 i nowsze wersje platformy należy pamiętać o tych kwestiach:

Pełną listę zmian wprowadzonych w Androidzie 8.0 (poziom interfejsu API 26) znajdziesz na stronie Zmiany w działaniu w danej wersji platformy.

Migracja z Androida 8 (API 26) na Androida 9 (API 28)

Pełną listę zmian wprowadzonych w Androidzie 9.0 (poziom interfejsu API 28) znajdziesz w sekcji Zmiany w działaniu.

Migracja z Androida 9 (poziom interfejsu API 28) na Androida 10 (poziom API 29)

Migracja z Androida 10 (poziom interfejsu API 29) na Androida 11 (poziom API 30)

Pełną listę zmian wprowadzonych w Androidzie 11 (poziom interfejsu API 30) znajdziesz na stronie Zmiany w działaniu.

Przejdź na interfejs API 31, postępując zgodnie z instrukcjami podanymi w poprzedniej sekcji.

Modernizowanie aplikacji

Podczas aktualizowania docelowego poziomu interfejsu API swoich aplikacji zastanów się nad wdrożeniem najnowszych funkcji platformy, aby zmodernizować aplikacje i zadowolić użytkowników.

Sprawdzanie i aktualizowanie pakietów SDK oraz bibliotek

Sprawdź, czy zależności zewnętrznych pakietów SDK obsługują interfejs API 31. Niektórzy dostawcy pakietów SDK publikują go w swoim pliku manifestu, a inni wymagają dodatkowej analizy. Jeśli używasz pakietu SDK, który nie obsługuje interfejsu API 31, podejmij współpracę z dostawcą pakietu SDK w celu rozwiązania problemu.

Pamiętaj też, że targetSdkVersion Twojej aplikacji lub gry może ograniczać dostęp do prywatnych bibliotek platformy Androida. Więcej informacji znajdziesz w sekcji Łączenie aplikacji NDK z bibliotekami platform.

Musisz też sprawdzić wszystkie ograniczenia, które możesz dodać w używanej wersji Biblioteki pomocy Androida. Pamiętaj, aby zawsze zadbać o zgodność głównej wersji Biblioteki pomocy na Androida z dokumentacją compileSdkVersion Twojej aplikacji.

Zalecamy wybranie pola targetSdkVersion mniejszego lub równego wersji głównej Biblioteki pomocy. Zachęcamy do aktualizacji do najnowszej zgodnej biblioteki pomocy, co pozwoli Ci korzystać z najnowszych funkcji zgodności i poprawek błędów.

Testowanie aplikacji

Po odpowiednim zaktualizowaniu poziomu interfejsu API i funkcji interfejsu API musisz przetestować niektóre podstawowe przypadki użycia. Podane niżej sugestie nie są wyczerpujące, ale mają na celu pomóc Ci w procesie testowania. Zalecamy testowanie:

  • Kompilacja aplikacji do interfejsu API 29 nie zawiera błędów ani ostrzeżeń.
  • Aplikacja ma strategię działającą w przypadkach, gdy użytkownik odrzuca prośby o przyznanie uprawnień i prosi go o przyznanie uprawnień. Aby to zrobić:
    • Otwórz ekran Informacje o aplikacji i wyłącz poszczególne uprawnienia.
    • Otwórz aplikację i upewnij się, że nie doszło do awarii.
    • Przeprowadź testy głównych przypadków użycia i sprawdź, czy wymagane uprawnienia zostały wysłane ponownie.

  • Obsługa funkcji Uśpienie z oczekiwanymi wynikami i bez błędów.
    • Korzystając z narzędzia adb, umieść urządzenie testowe w trybie uśpienia, gdy aplikacja jest uruchomiona.
      • Przetestuj wszystkie przypadki użycia, które wywołują wiadomości Komunikacji w chmurze Firebase (FCM).
      • Przetestuj przypadki użycia, w których są używane alarmy lub zadania.
      • Wyeliminuj wszelkie zależności od usług działających w tle.
    • Ustawianie aplikacji w trybie gotowości aplikacji
      • Przetestuj wszystkie przypadki użycia, które aktywują wiadomości Komunikacji w chmurze Firebase (FCM).
      • Przetestuj przypadki użycia, w których są używane Alarmy.

  • Obsługa nowych zdjęć i filmów.
  • Obsługa udostępniania plików innym aplikacjom
    • Przetestuj każdy przypadek użycia, w którym dane pliku są udostępniane innej aplikacji (nawet innej aplikacji tego samego dewelopera).
    • Sprawdź, czy treści są widoczne w innej aplikacji i nie powodują awarii.

Dodatkowe informacje

Wyraź zgodę na otrzymywanie e-maili w Konsoli Google Play, abyśmy mogli wysyłać Ci ważne informacje i powiadomienia z Androida i Google Play, w tym comiesięczny newsletter dla partnerów.