długoterminowy sukces aplikacji pod względem liczby instalacji i opinii użytkowników, zaangażowania i utrzymania.
Aby stworzyć aplikację o wysokiej jakości, postępuj zgodnie z wytycznymi dotyczącymi ogólnej jakości aplikacji.
Wytyczne określają minimalną jakość, jaką powinny spełniać wszystkie aplikacje.
Adaptacyjna jakość aplikacji
Aplikacje na Androida działają na wielu różnych urządzeniach – od kompaktowych telefonów po tablety, urządzenia składane, komputery, wyświetlacze połączone, systemy informacyjno-rozrywkowe w samochodach, telewizory i XR. Tryby okien, takie jak podzielony ekran i okna na komputerze, umożliwiają uruchamianie aplikacji w częściach ekranu o zmienianym rozmiarze.
Postępuj zgodnie z wytycznymi dotyczącymi jakości aplikacji adaptacyjnych (w połączeniu z wytycznymi dotyczącymi ogólnej jakości aplikacji), aby:
- Tworzenie aplikacji zoptymalizowanych pod kątem wszystkich formatów i rozmiarów wyświetlaczy
- Zwiększanie pozycji aplikacji w informacjach o aplikacji i w wynikach wyszukiwania w Google Play
- Pozyskiwanie większej liczby użytkowników i zwiększanie ich lojalności
Wskazówki
Te podstawowe wytyczne pomogą Ci stworzyć podstawową aplikację wysokiej jakości.
Interfejs użytkownika
Aplikacja powinna mieć standardowy wygląd i jednolity, intuicyjny sposób obsługi.
Do tworzenia interfejsu aplikacji używaj komponentów Material Design zamiast komponentów platformy Android, jeśli to możliwe. Material Design zapewnia nowoczesny wygląd i sposób obsługi Androida oraz spójność interfejsu użytkownika w różnych wersjach Androida.
| ID | Testy | Opis |
|---|---|---|
| Łatwość obsługi | ||
| Łatwość obsługi:UX | T-Usability:Core, T-SD-Card |
Aplikacja zapewnia spójne wrażenia użytkownika we wszystkich przypadkach użycia na wszystkich urządzeniach. |
| Łatwość obsługi:przełącznik | T-Usability:Switcher, T-SD-Card |
Aplikacja przechodzi w tło, gdy fokus przełącza się na inną aplikację. Aplikacja wraca na pierwszy plan, gdy zostanie ponownie aktywowana w przełączniku aplikacji Ostatnie. |
| Łatwość obsługi:sen | T-Usability:Sleep, T-SD-Card |
Gdy aplikacja jest na pierwszym planie, wstrzymuje się, gdy urządzenie przechodzi w tryb uśpienia, i wznawia działanie, gdy urządzenie się wybudza. |
| Łatwość obsługi:blokada | T-Usability:Lock, T-SD-Card |
Gdy aplikacja jest na pierwszym planie, wstrzymuje się po zablokowaniu urządzenia i wznawia działanie po jego odblokowaniu. |
| Interfejs użytkownika | ||
| UI:Parity | T-UI:Transitions |
Orientacje wyświetlania i stany złożenia udostępniają zasadniczo te same funkcje i działania oraz zachowują równoważność funkcjonalną. |
| UI:Fullscreen | T-UI:Transitions |
Aplikacja wypełnia okno w obu orientacjach i nie ma czarnych pasków z powodu zmian konfiguracji, w tym składania i rozkładania urządzenia. Dopuszczalne jest niewielkie letterboxing w celu skompensowania niewielkich różnic w geometrii ekranu. |
| UI:Przejścia | T-UI:Transitions | Aplikacja obsługuje szybkie przejścia między orientacjami wyświetlacza oraz składanie i rozkładanie urządzenia bez problemów z renderowaniem i bez utraty stanu. |
| Jakość obrazu | ||
| Wizualne:sieć reklamowa | T-Visual:Display |
Aplikacja wyświetla grafikę, tekst, obrazy i inne elementy interfejsu bez zauważalnych zniekształceń, rozmycia lub pikselizacji.
|
| Wizualne:czytelność | T-Visual:Readability | Aplikacja zapewnia czytelność tekstu i bloków tekstowych, ograniczając długość wiersza do 45–75 znaków (w tym spacji) w każdym z obsługiwanych języków. |
| Wizualizacja:Motywy | T-Visual:Themes | Treści aplikacji i wszystkie treści internetowe, do których aplikacja ma dostęp, obsługują zarówno jasny, jak i ciemny motyw. |
| Nawigacja | ||
| Nav:BackButton | T-Nav:Back | Aplikacja obsługuje standardową nawigację za pomocą przycisku Wstecz i nie korzysta z żadnych niestandardowych komunikatów przycisku Wstecz na ekranie. |
| Nav:BackGesture | T-Nav:Back | Aplikacja obsługuje sterowanie gestami, które umożliwia przechodzenie wstecz i na ekran główny. |
| Nav:State | T-Nav:State, T-Nav:Back |
Aplikacja zachowuje dane użytkownika lub stan aplikacji po wyjściu z pierwszego planu i nie zapobiega przypadkowej utracie danych z powodu przejścia wstecz oraz innych zmian stanu. Po powrocie na pierwszy plan aplikacja przywraca zachowany stan i wszystkie oczekujące transakcje stanowe. Dotyczy to m.in. zmian w polach edytowalnych, postępów w grze, menu, filmów i innych sekcji aplikacji.
|
| Powiadomienia | ||
| Powiadomienie:informacje | T-Notify:Info |
Powiadomienia zawierają istotne informacje dotyczące Twojej aplikacji.
|
| Powiadomienie:Wiadomości | T-Notify:Info |
W przypadku aplikacji do przesyłania wiadomości, aplikacji społecznościowych i rozmów:
|
| Ułatwienia dostępu | ||
| Dostęp:Cele | T-Access:Targets | Docelowe elementy dotykowe mają co najmniej 48 dp. Zapoznaj się z wytycznymi Material Design dotyczącymi układu i typografii. |
| Access:Contrast | T-Access:Contrast |
Tekst aplikacji i treści na pierwszym planie zachowują następujące współczynniki kontrastu z tłem aplikacji:
Dowiedz się więcej o kolorach i kontraście. |
| Dostęp:opis | T-Access:opis | Opisz każdy element interfejsu, z wyjątkiem TextView, używając contentDescription. |
funkcje.
Aplikacja powinna działać w ten sposób:
| ID | Testy | Opis |
|---|---|---|
| Audio | ||
| Dźwięk:Włącz | T-Audio:Init |
Gdy użytkownik rozpocznie odtwarzanie dźwięku, aplikacja powinna w ciągu sekundy wykonać jedną z tych czynności:
|
| Dźwięk:aktywność | T-Audio:Focus | Gdy odtwarzanie dźwięku się rozpoczyna, aplikacja powinna poprosić o skupienie dźwięku, a gdy się kończy – zrezygnować z niego. |
| Dźwięk:przerwanie | T-Audio:Interrupt | Aplikacja powinna obsługiwać żądania innych aplikacji dotyczące przejęcia fokusu audio. Na przykład aplikacja może zmniejszyć głośność odtwarzania, gdy inna aplikacja odtwarza mowę. |
| Audio:Background | T-Audio:Background | Aplikacja powinna obsługiwać odtwarzanie w tle. |
| Dźwięk:powiadomienie | T-Audio:Notification | Gdy aplikacja odtwarza dźwięk w tle, musi utworzyć powiadomienie w stylu MediaStyle. |
| Dźwięk:Wznów | T-Audio:Resume | Jeśli aplikacja działa w tle, a dźwięk jest wstrzymany, po powrocie aplikacji na pierwszy plan dźwięk musi zostać wznowiony. Aplikacja musi też informować użytkownika, że odtwarzanie jest wstrzymane. |
| Wideo | ||
| Film:PIP | T-Video:PiP | Jeśli aplikacja odtwarza filmy, powinna obsługiwać odtwarzanie w trybie obraz w obrazie. |
| Wideo:kodowanie | T-Video:Encoding | Jeśli aplikacja koduje wideo, powinna to robić przy użyciu standardu kompresji wideo HEVC. |
| Udostępnianie | ||
| Udostępnianie:Arkusz | T-Sharing:Sheet | Podczas udostępniania treści aplikacja powinna korzystać z arkusza udostępniania Androida. Aplikacja może sugerować cele, które są niedostępne w przypadku rozwiązań niestandardowych. |
| Usługi w tle | ||
| Wprowadzenie:usługi | T-Background:Services |
Aplikacja unika niepotrzebnie długiego działania usług w tle. zapewnienie prawidłowego działania urządzenia użytkownika; Uwaga: system stosuje różne ograniczenia dotyczące usług działających w tle. Oto przykłady niewłaściwego wykorzystania usług działających w tle:
Więcej informacji znajdziesz w artykule Omówienie zadań w tle. |
Wydajność i stabilność
Aplikacja powinna zapewniać optymalną wydajność, stabilność, zgodność i responsywność.
| ID | Testy | Opis |
|---|---|---|
| Wydajność | ||
| Skuteczność:uruchomienie | T- Performance:Startup | Aplikacja wczytuje się szybko lub wyświetla użytkownikowi informacje na ekranie (wskaźnik postępu lub podobny komunikat), jeśli wczytywanie trwa dłużej niż 2 sekundy. |
| Skuteczność:FPS | T-Performance:FPS | Aplikacja renderuje klatki co 16 milisekund (lub rzadziej), aby wyświetlać co najmniej 60 klatek na sekundę. Jeśli masz problemy z renderowaniem, zapoznaj się z artykułem Powolne renderowanie. |
| Skuteczność:ścisła | T-Performance:Strict | Gdy opcja StrictMode jest włączona (patrz sekcja testowania StrictMode), podczas testowania aplikacji nie widać czerwonych błysków (ostrzeżeń o wydajności z StrictMode). |
| Stabilność | ||
| Stabilność:błędy ANR | T-Stability:ANR | Aplikacja nie ulega awarii ani nie blokuje wątku interfejsu, co powoduje błędy ANR (Android Not Responding). Używaj raportu przed opublikowaniem w Google Play, aby wykrywać potencjalne problemy ze stabilnością. Po wdrożeniu monitoruj stronę Android Vitals w Konsoli Play. |
| Pakiet SDK | ||
| SDK:Platform | T-SDK:Platform | Aplikacja działa w najnowszej publicznej wersji platformy Android bez awarii i bez poważnego wpływu na podstawowe funkcje. |
| SDK:Target | T-SDK:Latest | Aplikacja jest kierowana na najnowszy pakiet SDK Androida, który jest wymagany do spełnienia wymagań Google Play. W tym celu w pliku build.gradle modułu aplikacji ustaw wartość targetSdk. |
| SDK:Compile | T-SDK:Latest | Aplikacja jest tworzona przy użyciu najnowszego pakietu SDK Androida przez ustawienie wartości compileSdk w pliku modułu build.gradle aplikacji. |
| SDK:3P | T-SDK:3P, T-SDK:Non |
Używane pakiety SDK Google i innych firm są aktualne. Wszelkie ulepszenia tych pakietów SDK związane ze stabilnością, zgodnością lub bezpieczeństwem powinny być udostępniane użytkownikom w odpowiednim czasie. W przypadku pakietów SDK Google używaj pakietów SDK opartych na Usługach Google Play, jeśli są dostępne. Te pakiety SDK są wstecznie kompatybilne, otrzymują automatyczne aktualizacje, zmniejszają rozmiar pakietu aplikacji i efektywnie wykorzystują zasoby urządzenia. |
| SDK:Non | T-SDK:Non | Aplikacja nie używa interfejsów innych niż SDK. |
| SDK:Debug | T-SDK:Debug | Aplikacja produkcyjna nie zawiera bibliotek debugowania. Biblioteki debugowania w aplikacji mogą powodować problemy z wydajnością i bezpieczeństwem. |
| Bateria | ||
| Bateria:zarządzanie | T-Battery:Zarządzaj |
Aplikacja prawidłowo obsługuje funkcje zarządzania energią Uśpienie i Czuwanie aplikacji. Aplikacje mogą poprosić o zwolnienie z wymogu dotyczącego utrzymania zasilania. Więcej informacji znajdziesz w sekcji Obsługa innych przypadków użycia w artykule Optymalizacja pod kątem uśpienia i trybu gotowości aplikacji. |
Prywatność i bezpieczeństwo
Aplikacja bezpiecznie przetwarza dane użytkowników i dane osobowe oraz zapewnia odpowiednie poziomy uprawnień.
Aplikacje publikowane w Sklepie Google Play muszą też być zgodne z zasadami Google Play dotyczącymi danych użytkownika, aby chronić prywatność użytkowników.
| ID | Testy | Opis |
|---|---|---|
| Uprawnienia | ||
| Uprawnienia:Min | T-Permissions:Min | Aplikacja prosi tylko o minimalne uprawnienia niezbędne do obsługi bieżącego przypadku użycia. W przypadku niektórych uprawnień, np. lokalizacji, aplikacja używa specyfikacji przybliżonej zamiast dokładnej, jeśli jest to możliwe. Zobacz Ograniczanie liczby próśb o uprawnienia. |
| Uprawnienia:newralgiczne | T-Permissions:Sensitive |
Aplikacja prosi o uprawnienia dostępu do danych wrażliwych (np. grup uprawnień do SMS-ów lub rejestru połączeń albo lokalizacji) lub usług, które wiążą się z kosztami (np. dialera lub SMS-ów), tylko wtedy, gdy jest to bezpośrednio związane z głównymi przypadkami użycia aplikacji. Użytkownik musi być wyraźnie poinformowany o konsekwencjach związanych z tymi uprawnieniami. W zależności od tego, jak Twoja aplikacja korzysta z uprawnień, może istnieć alternatywny sposób realizacji jej funkcji bez konieczności uzyskiwania dostępu do informacji poufnych. Na przykład zamiast prosić o uprawnienia związane z kontaktami użytkownika, użyj niejawnego zamiaru, aby poprosić o dostęp. |
| Uprawnienia:czas działania | T-Permissions:Runtime | Aplikacja prosi o uprawnienia w czasie działania, gdy użytkownik chce skorzystać z danej funkcji, a nie podczas uruchamiania aplikacji. |
| Uprawnienia:wyjaśnienie | T-Permissions:Explain | Aplikacja jasno wyjaśnia, dlaczego potrzebuje uprawnień. |
| Uprawnienia:obniżanie jakości | T-Permissions:Degrade | Aplikacja łagodnie się degraduje, gdy użytkownicy odmawiają przyznania uprawnień lub wycofują udzieloną zgodę. Aplikacja nie powinna całkowicie uniemożliwiać użytkownikowi dostępu. |
| Dane i pliki | ||
| Data:Sensitive | T-Data:Sensitive, T-Data:Handling |
Wszystkie dane wrażliwe są przechowywane w pamięci wewnętrznej aplikacji. |
| Dane:dziennik | T-Data:Log | W logu systemowym ani w logu aplikacji nie są rejestrowane żadne dane osobowe ani poufne użytkowników. |
| Dane:identyfikatory | T-Data:IDs | Aplikacja nie używa do identyfikacji niezerowalnych identyfikatorów sprzętowych, takich jak IMEI. |
| Tożsamość | ||
| Tożsamość:Hints | T-Identity:Hints | Aplikacja podpowiada dane do autouzupełniania danych logowania do konta i innych informacji poufnych, takich jak dane karty kredytowej, adres i numer telefonu. |
| Tożsamość:CredMan | T-Identity:CredMan | Aplikacja integruje Menedżera danych logowania na Androidzie, aby zapewnić bezproblemowe logowanie, które ujednolica obsługę kluczy dostępu, tożsamości federacyjnej i haseł. |
| Tożsamość:biografia | T-Identity:Bio | Aplikacja obsługuje uwierzytelnianie biometryczne w celu ochrony transakcji finansowych lub informacji poufnych, takich jak ważne dokumenty użytkownika. |
| Komponenty aplikacji | ||
| Komponenty:eksport | T-Components:Export |
Aplikacja ustawia atrybut Eksportowane są tylko te komponenty aplikacji, które udostępniają dane innym aplikacjom lub powinny być wywoływane przez inne aplikacje. |
| Komponenty:Uprawnienia | T-Components:Permissions |
Wszystkie intencje i transmisje są zgodne ze sprawdzonymi metodami:
|
| Komponenty:ochrona | T-Components:Protection |
Wszystkie komponenty, które udostępniają treści między aplikacjami, używają Aplikacje nie powinny polegać na dostępie do listy zainstalowanych pakietów. |
| Sieć | ||
| Sieć:ruch | T-Network:Traffic | Cały ruch sieciowy jest przesyłany przez SSL. |
| Sieć:Konfiguracja | T-Network:Config | Aplikacja deklaruje konfigurację zabezpieczeń sieci. |
| Sieć:Play | T-Network:Play | Jeśli aplikacja korzysta z Usług Google Play, dostawca zabezpieczeń jest inicjowany podczas uruchamiania aplikacji. |
| Komponenty WebView | ||
| WebViews:Config | T-WebViews:Config, T-WebViews:Nav |
Nie używaj setAllowUniversalAccessFromFileURLs() do uzyskiwania dostępu do treści lokalnych. Zamiast tego użyj polecenia WebViewAssetLoader. |
| WebViews:JavaScript | T-WebViews:JavaScript, T-WebViews:Nav |
Widoki internetowe nie używają Na Androidzie 6.0 (poziom interfejsu API 23 i nowszy) używaj kanałów wiadomości HTML. |
| Realizacja | ||
| Realizacja:pakiety | T-Execution:Bundles |
Aplikacja nie ładuje dynamicznie kodu spoza pliku APK. Używaj pakietów aplikacji na Androida, które obejmują Play Feature Delivery i Play Asset Delivery. Od sierpnia 2021 r. używanie pakietów Android App Bundle jest obowiązkowe w przypadku wszystkich nowych aplikacji w Sklepie Google Play. |
| Kryptografia | ||
| Kryptografia:algorytmy | T-Crypto:Algorithms | Aplikacja używa ciągu znaków, algorytmów kryptograficznych dostarczonych przez platformę i generatora liczb losowych. Aplikacja nie implementuje też algorytmów niestandardowych. |
Google Play
Umożliwia publikowanie aplikacji w Google Play.
| ID | Testy | Opis | |
|---|---|---|---|
| Zasady | |||
| Google Play:zasady | T-Play:Zasady | Aplikacja ściśle przestrzega warunków zasad Google Play dotyczących treści dla deweloperów, nie oferuje nieodpowiednich treści i nie wykorzystuje własności intelektualnej ani marki innych osób. | |
| Play:Dojrzałość | T-Play:Zasady | Klasyfikacja wiekowa aplikacji jest odpowiednio ustawiona zgodnie z wytycznymi dotyczącymi oceny treści. | |
| Strona szczegółów aplikacji | |||
| Google Play:Grafika | T-Play:Graphics, T-Play:Assets |
Grafika funkcji aplikacji jest zgodna z wytycznymi podanymi w tym artykule pomocy. Upewnij się, że:
|
|
| Play:NonAndroid | T-Play:Assets | Zrzuty ekranu i filmy z aplikacji nie przedstawiają urządzeń innych niż Android ani nie odwołują się do nich. | |
| Play:wprowadzające w błąd | T-Play:Assets | Zrzuty ekranu lub filmy z aplikacji nie wprowadzają użytkowników w błąd co do treści i działania aplikacji. | |
| Pomoc dla użytkowników | |||
| Play:Bugs | T-Play:Zasady | Typowe błędy zgłaszane przez użytkowników na karcie Opinie na stronie Google Play są rozwiązywane, jeśli można je odtworzyć i występują na wielu różnych urządzeniach. Jeśli błąd występuje tylko na kilku urządzeniach, nadal należy go rozwiązać, jeśli są one szczególnie popularne lub nowe. | |
Środowisko testowe
Skonfiguruj środowisko testowe w ten sposób:
Testowanie na emulatorze: emulator Androida to świetny sposób na testowanie aplikacji w różnych wersjach Androida i rozdzielczościach ekranu. Skonfiguruj emulowane urządzenia (AVD), aby odzwierciedlały najpopularniejsze formaty i kombinacje sprzętu i oprogramowania w przypadku docelowej grupy użytkowników. Przetestuj różne formaty, korzystając z tych emulatorów (co najmniej):
- Urządzenia składane: 7,6-calowy ekran składany do wewnątrz z wyświetlaczem zewnętrznym (w Menedżerze AVD jest to wymienione w sekcji „Telefony”)
- Tablet: Pixel C 9,94" (2560 x 1800 pikseli)
- Testowanie powiadomień z aplikacji mobilnej: sparuj urządzenie mobilne lub emulator z emulatorem Wear OS: Wear OS Round 1,84".
Urządzenia: środowisko testowe powinno obejmować niewielką liczbę rzeczywistych urządzeń, które reprezentują kluczowe formaty oraz kombinacje sprzętu i oprogramowania dostępne dla konsumentów. Nie musisz testować aplikacji na każdym urządzeniu dostępnym na rynku. Skup się na niewielkiej liczbie reprezentatywnych urządzeń, nawet jeśli używasz 1–2 urządzeń w przypadku każdego rodzaju.
Laboratoria testów urządzeń: możesz też korzystać z usług innych firm, takich jak Laboratorium Firebase, aby testować aplikację na wielu różnych urządzeniach.
Testuj z najnowszą wersją Androida: oprócz testowania reprezentatywnych wersji Androida dla docelowej grupy użytkowników zawsze testuj aplikację z najnowszą wersją Androida, aby mieć pewność, że najnowsze zmiany w działaniu nie wpłyną negatywnie na wrażenia użytkowników.
Więcej informacji o testowaniu, w tym o testach jednostkowych, testach integracyjnych i testach interfejsu, znajdziesz w artykule Podstawy testowania aplikacji na Androida.
StrictMode
Aby przeprowadzić testy wydajności, włącz w aplikacji StrictMode. Użyj StrictMode, aby wykrywać operacje, które mogą wpływać na wydajność, dostęp do sieci oraz odczytywanie i zapisywanie plików. Wyszukaj potencjalnie problematyczne operacje w wątku głównym i w innych wątkach.
Skonfiguruj zasady monitorowania poszczególnych wątków za pomocą StrictMode.ThreadPolicy.Builder i włącz wszystkie obsługiwane funkcje monitorowania w ThreadPolicy za pomocą detectAll().
Włącz powiadomienia wizualne o naruszeniach zasad w przypadku ThreadPolicy za pomocą penaltyFlashScreen().
Testy
Podstawowe testy jakości aplikacji pomagają ocenić jej podstawową jakość. Możesz łączyć testy lub integrować grupy testów w swoim planie testów.
Interfejs użytkownika
| ID | Funkcja | Opis |
|---|---|---|
| Łatwość obsługi | ||
| T-Usability:Core | Użyteczność:UX |
Przejdź do wszystkich części aplikacji – wszystkich ekranów, okien, ustawień i wszystkich ścieżek użytkownika. Wykonaj te czynności:
|
| T-Usability:Switcher | Użyteczność:przełącznik | Na ekranie każdej aplikacji przełącz się na inną uruchomioną aplikację, a potem wróć do testowanej aplikacji, korzystając z przełącznika aplikacji Ostatnie. |
| T-Usability:Sleep | Użyteczność:sen | Naciśnij przycisk zasilania, aby uśpić urządzenie, a następnie naciśnij go ponownie, aby wybudzić ekran. |
| T-Usability:Lock | Użyteczność:blokowanie | Skonfiguruj blokadę ekranu na urządzeniu. Naciśnij przycisk zasilania, aby uśpić urządzenie (co spowoduje jego zablokowanie). Następnie ponownie naciśnij przycisk zasilania, aby wybudzić ekran i odblokować urządzenie. |
| Karta SD | ||
| T-SD-Card | Użyteczność:UX |
Przeprowadź testy kluczowych funkcji aplikacji zainstalowanej na karcie SD urządzenia (jeśli aplikacja obsługuje tę metodę instalacji). Aby przenieść aplikację na kartę SD, otwórz jej Ustawienia. |
| Interfejs użytkownika | ||
| T-UI:Transitions | UI:Parity, UI:Fullscreen, UI:Transitions |
Na ekranie każdej aplikacji obróć urządzenie co najmniej 3 razy z orientacji poziomej do pionowej i z powrotem oraz z pozycji złożonej do rozłożonej i z powrotem. Sprawdź, czy aplikacja:
|
| Jakość obrazu | ||
| T-Visual:Display | Visual:Display | Skorzystaj ze wszystkich funkcji aplikacji. Sprawdź, czy wszystkie elementy wizualne, w tym grafika, tekst, obrazy i inne elementy interfejsu, nie są zniekształcone, rozmyte ani rozpikselowane. |
| T-Visual:Readability | Wizualne:czytelność |
Sprawdź wszystkie bloki tekstu w aplikacji. Upewnij się, że długość wiersza tekstu i bloku tekstu wynosi od 45 do 75 znaków (w tym spacje), aby zapewnić czytelność. Sprawdź, czy:
|
| T-Visual:Themes | Wizualne:motywy | Sprawdź, czy cały tekst jest czytelny w motywie jasnym i ciemnym. Sprawdź, czy wszystkie elementy wizualne są wyraźnie widoczne i estetyczne w motywach jasnym i ciemnym. |
| Nawigacja | ||
| T-Nav:Back | Nav:BackButton, Nav:BackGesture |
Przejdź do wszystkich części aplikacji – wszystkich ekranów, okien, ustawień i wszystkich ścieżek użytkownika. Na ekranie każdej aplikacji naciśnij przycisk Wstecz lub wykonaj gest przesunięcia wstecz. Aplikacja powinna przejść do poprzedniego ekranu lub ekranu głównego. |
| T-Nav:State | Nav:State | Na ekranie każdej aplikacji naciśnij przycisk Ekran główny lub przesuń palcem w górę w nawigacji gestami, a następnie ponownie uruchom aplikację na ekranie Wszystkie aplikacje. |
| Powiadomienia | ||
| T-Notify:Info | Notify:Info, Notify:Messaging |
Wywołaj i obserwuj w panelu powiadomień wszystkie typy powiadomień, które aplikacja może wyświetlać. Rozwiń powiadomienia (Android 4.1 i nowszy) i kliknij wszystkie dostępne działania. |
| Ułatwienia dostępu | ||
| T-Access:Targets | Dostęp:cele | Sprawdź, czy elementy dotykowe mają stały, dostępny rozmiar i położenie we wszystkich rozmiarach i konfiguracjach wyświetlacza. Więcej informacji o ułatwieniach dostępu znajdziesz w sekcji Accessibility Scanner. |
| T-Access:Contrast | Dostęp:Kontrast | Sprawdź kontrast wszystkich elementów wizualnych. |
| T-Access:Description | Access:Description | Sprawdź, czy wszystkie elementy interfejsu inne niż TextView mają opisy treści. |
funkcje.
| ID | Funkcja | Opis |
|---|---|---|
| Audio | ||
| T-Audio:Init | Audio:Init | Rozpocznij odtwarzanie dźwięku. Sprawdź, czy w ciągu sekundy aplikacja zaczyna odtwarzać dźwięk lub wyświetla wizualny wskaźnik, że dane audio są przygotowywane do odtwarzania. |
| T-Audio:Focus | Dźwięk:ostrość | Rozpocznij odtwarzanie dźwięku. Aplikacja powinna poprosić o aktywność audio. Gdy odtwarzanie dźwięku się zatrzyma, aplikacja powinna zwolnić fokus dźwięku (co dzieje się automatycznie w przypadku aplikacji kierowanych na Androida 12 (API na poziomie 31) i nowsze wersje). |
| T-Audio:Interrupt | Dźwięk:przerwanie | Rozpocznij odtwarzanie dźwięku. Rozpocznij odtwarzanie dźwięku w innej aplikacji. Twoja aplikacja powinna zareagować na zmianę fokusu dźwięku i zatrzymać odtwarzanie dźwięku lub zmniejszyć jego głośność. |
| T-Audio:Background | Dźwięk:tło | Rozpocznij odtwarzanie dźwięku. Używaj innej aplikacji nieodtwarzającej dźwięku jako aplikacji na pierwszym planie. Aplikacja powinna nadal odtwarzać dźwięk w tle. |
| T-Audio:Notification | Dźwięk:powiadomienie | Rozpocznij odtwarzanie dźwięku. Użyj innej aplikacji nieodtwarzającej dźwięku jako aplikacji na pierwszym planie. Sprawdź, czy Twoja aplikacja nadal odtwarza dźwięk w tle i czy utworzyła powiadomienie ze stylem MediaStyle. Zobacz Współpraca z elementami sterującymi multimediami. |
| T-Audio:Resume | Audio:Resume | Rozpocznij odtwarzanie dźwięku. Użyj innej aplikacji, która nie odtwarza dźwięku, jako aplikacji na pierwszym planie. Użyj swojej aplikacji, aby stała się aplikacją na pierwszym planie. Odtwarzanie dźwięku powinno zostać wznowione lub głośność powinna zostać przywrócona. W przeciwnym razie aplikacja powinna poinformować użytkownika, że odtwarzanie zostało wstrzymane. |
| T-Video:PiP | Wideo:obraz w obrazie | Włącz odtwarzanie wideo w aplikacji w trybie obrazu w obrazie. |
| T-Video:Encoding | Wideo:kodowanie | Sprawdź, czy aplikacja koduje wideo zgodnie ze standardem kompresji HEVC. |
| Udostępnianie | ||
| Udostępnianie:Arkusz | Utwórz intencję i rozpocznij aktywność, wywołując funkcję startActivity() z intencją jako argumentem. Zobacz Korzystanie z arkusza udostępniania na Androidzie. Aplikacja powinna wyświetlić arkusz udostępniania Androida. |
|
| Usługi w tle | ||
| CR-6 | Informacje ogólne:usługi | Skorzystaj ze wszystkich najważniejszych funkcji aplikacji. Sprawdź, czy nie są uruchamiane żadne długotrwałe usługi działające w tle. Przełącz się na inną aplikację, aby przenieść ją w tle. Otwórz Ustawienia i sprawdź, czy aplikacja ma jakieś usługi działające w tle. Na Androidzie 4.0 lub nowszym otwórz ekran Aplikacje i znajdź aplikację na karcie Uruchomione. |
Wydajność i stabilność
| ID | Funkcja | Opis |
|---|---|---|
| Wydajność | ||
| T- Performance:Startup | Wydajność:uruchamianie | Uruchom aplikację. Sprawdź, czy wczytuje się szybko, a jeśli trwa to dłużej niż 2 sekundy, czy wyświetla wskaźnik postępu lub podobny komunikat. |
| T-Performance:FPS | Wydajność:FPS | Używaj wszystkich najważniejszych funkcji aplikacji. Sprawdź, czy aplikacja renderuje co najmniej 60 klatek na sekundę. Aby przetestować aplikację, użyj opcji Profil renderowania HWUI. |
| T-Performance:Strict | Wydajność:ścisła |
Włącz Zwróć szczególną uwagę na odśmiecanie pamięci i jego wpływ na wygodę użytkowników. |
| Stabilność | ||
| T-Stability:ANR | Stabilność:błędy ANR | Skorzystaj ze wszystkich najważniejszych funkcji aplikacji. Sprawdź, czy aplikacja nie ulega awarii ani nie blokuje wątku interfejsu, co powoduje błędy ANR (Android Not Responding). Sprawdź raport przed opublikowaniem w Google Play, aby wykryć potencjalne problemy ze stabilnością. |
| Pakiet SDK | ||
| T-SDK:Platform | SDK:Platform | Uruchamiaj aplikację w najnowszej publicznej wersji platformy Android. korzystać ze wszystkich głównych funkcji; Sprawdź, czy aplikacja nie ulega awarii i działa bez utraty głównej funkcjonalności. |
| T-SDK:Latest | SDK:Target, SDK:Compile |
Sprawdź plik manifestu Androida i konfigurację kompilacji, aby upewnić się, że aplikacja jest kompilowana na podstawie najnowszego dostępnego pakietu SDK (targetSdk i compileSdk). |
| T-SDK:3P | SDK:3P | Sprawdź plik build.gradle aplikacji pod kątem nieaktualnych zależności. |
| T-SDK:Non | SDK:Non | Użyj narzędzia lint w Android Studio, aby wykryć użycie interfejsu innego niż SDK. Alternatywne metody testowania znajdziesz w sekcji Ograniczenia dotyczące interfejsów innych niż SDK. |
| T-SDK:Debug | SDK:Debug | Sprawdź, czy w pliku build.gradle aplikacji nie ma bibliotek debugowania. |
| Bateria | ||
| T-Battery:Manage | Bateria:zarządzanie |
korzystać ze wszystkich najważniejszych funkcji aplikacji w trybach uśpienia i gotowości aplikacji; Sprawdź, czy alarmy, minutniki, powiadomienia i synchronizacje działają prawidłowo w oknie konserwacji trybu uśpienia i gdy aplikacja wyjdzie z trybu gotowości. Przetestuj działanie funkcji Uśpienie i Czuwanie aplikacji za pomocą poleceń ADB (wymagania i wytyczne znajdziesz w sekcji Testowanie funkcji Uśpienie i Czuwanie aplikacji). Aby zdiagnozować nieoczekiwane zużycie baterii, użyj profilera zasilania w Android Studio lub narzędzia Battery Historian w połączeniu z zaplanowaną pracą w tle. |
Prywatność i bezpieczeństwo
| ID | Funkcja | Opis |
|---|---|---|
| Uprawnienia | ||
| T-Permissions:Min | Uprawnienia:Min | Sprawdź wszystkie uprawnienia wymagane przez aplikację w pliku manifestu, w czasie działania i w ustawieniach aplikacji na urządzeniu (Ustawienia > Informacje o aplikacji). |
| T-Permissions:Sensitive | Uprawnienia:informacje poufne | Używaj funkcji aplikacji, które wymagają uprawnień. Sprawdź, czy aplikacja prosi o uprawnienia dostępu do danych wrażliwych lub usług tylko w przypadku podstawowych zastosowań. Sprawdź, czy użytkownik jest wyraźnie informowany o konsekwencjach przyznania uprawnień do danych i usług o charakterze poufnym. |
| T-Permissions:Runtime | Uprawnienia:czas działania | korzystać ze wszystkich funkcji aplikacji, które wymagają uprawnień; Sprawdź, czy uprawnienia są wymagane leniwie, czyli tylko wtedy, gdy użytkownik korzysta z funkcji, a nie podczas uruchamiania aplikacji. |
| T-Permissions:Explain | Uprawnienia:wyjaśnienie | korzystać ze wszystkich funkcji aplikacji, które wymagają uprawnień; Sprawdź, czy aplikacja wyjaśnia użytkownikowi, dlaczego potrzebuje uprawnień. |
| T-Permissions:Degrade | Uprawnienia:Degrade | korzystać ze wszystkich funkcji aplikacji, które wymagają uprawnień; Odrzuć lub cofnij uprawnienia. Sprawdź, czy aplikacja oferuje alternatywny sposób użycia i czy nadal działa. |
| Dane i pliki | ||
| T-Data:Sensitive | Dane:wrażliwe | Sprawdź wszystkie dane przechowywane w pamięci wewnętrznej. Sprawdź, czy dane przechowywane na zewnątrz nie są danymi wrażliwymi. |
| T-Data:Handling | Dane:wrażliwe | Sprawdź, jak dane wczytywane z pamięci zewnętrznej są obsługiwane i przetwarzane. |
| T-Data:Log | Dane:dziennik | Korzystaj ze wszystkich głównych funkcji aplikacji, monitorując log urządzenia. Sprawdź, czy nie są rejestrowane żadne prywatne informacje o użytkownikach. |
| T-Data:IDs | Dane:identyfikatory | Korzystaj ze wszystkich głównych funkcji aplikacji. Sprawdź, czy aplikacja nie używa do identyfikacji żadnych identyfikatorów sprzętowych, takich jak IMEI. |
| Tożsamość | ||
| T-Identity:Hints | Identity:Hints | Korzystaj ze wszystkich funkcji aplikacji, które wymagają interakcji użytkownika. Sprawdź, czy aplikacja wyświetla podpowiedzi do autouzupełniania pól wprowadzania danych, takich jak dane logowania do konta i inne informacje poufne. |
| T-Identity:CredMan | Tożsamość:CredMan | Zaloguj się w aplikacji. Sprawdź, czy jest ona zintegrowana z Credential Managerem na Androida, aby zapewnić logowanie jednokrotne z obsługą kluczy dostępu, tożsamości federacyjnej i haseł. |
| T-Identity:Bio | Tożsamość:informacje | korzystać ze wszystkich funkcji aplikacji, które wymagają uwierzytelniania; Sprawdź, czy aplikacja chroni transakcje finansowe lub informacje wrażliwe, takie jak ważne dokumenty użytkownika, za pomocą uwierzytelniania biometrycznego. |
| Komponenty aplikacji | ||
| T-Components:Export | Komponenty:eksport | Sprawdź wszystkie komponenty aplikacji zdefiniowane w pliku manifestu Androida, aby określić odpowiedni stan eksportu. Właściwość eksportowana musi być wyraźnie ustawiona dla wszystkich komponentów. |
| T-Components:Permissions | Komponenty:Permissions | Sprawdź wszystkie uprawnienia, których wymaga Twoja aplikacja, w pliku manifestu, w czasie działania i w ustawieniach aplikacji na urządzeniu (Ustawienia > Informacje o aplikacji). |
| T-Components:Protection | Komponenty:ochrona | Sprawdź wszystkich dostawców treści zdefiniowanych w pliku manifestu Androida. Sprawdź, czy każdy dostawca ma odpowiedni protectionLevel. |
| Sieć | ||
| T-Network:Traffic | Sieć:ruch | Zadeklaruj konfigurację zabezpieczeń sieci, która wyłącza ruch nieszyfrowany, a następnie przetestuj aplikację. |
| T-Network:Config | Sieć:Konfiguracja | Sprawdź konfigurację zabezpieczeń sieci aplikacji. Sprawdź, czy żadne testy lint w konfiguracji nie zakończyły się niepowodzeniem. |
| T-Network:Play | Sieć:Play | Sprawdź, czy dostawca zabezpieczeń jest inicjowany podczas uruchamiania aplikacji w przypadku usług Google Play. |
| Komponenty WebView | ||
| T-WebViews:Config | WebViews:Config | Sprawdź konfigurację zabezpieczeń sieci aplikacji. Sprawdź, czy żadne testy lint w konfiguracji nie zakończyły się niepowodzeniem. |
| T-WebViews:JavaScript | WebViews:JavaScript | W przypadku każdego elementu WebView przejdź na stronę, która wymaga JavaScriptu. |
| T-WebViews:Nav | WebViews:Config, WebViews:JavaScript |
W każdym widoku WebView spróbuj przejść do witryn i treści, które nie są wczytywane bezpośrednio przez aplikację. |
| Realizacja | ||
| T-Execution:Bundles | Wykonanie:pakiety | Sprawdź, czy aplikacja korzysta z pakietów Android App Bundle i nie wczytuje dynamicznie kodu spoza pliku APK aplikacji. |
| Kryptografia | ||
| T-Crypto:Algorithms | Kryptografia:algorytmy | Sprawdź, czy aplikacja korzysta z silnych algorytmów kryptograficznych i generatora liczb losowych udostępnianych przez platformę. Sprawdź też, czy aplikacja nie implementuje algorytmów niestandardowych. |
Google Play
| ID | Funkcja | Opis |
|---|---|---|
| Zasady | ||
| T-Play:Zasady | Google Play:zasady, Google Play:dojrzałość, Google Play:błędy |
Zaloguj się w Konsoli Google Play, aby sprawdzić swój profil dewelopera, opis aplikacji, zrzuty ekranu, grafikę promocyjną, ocenę treści i opinie użytkowników. |
| Strona szczegółów aplikacji | ||
| T-Play:Graphics | Play:Grafika | Pobierz grafikę i zrzuty ekranu, a następnie zmniejsz je, aby pasowały do rozmiarów wyświetlaczy na urządzeniach i w formach, na których chcesz wyświetlać aplikację. |
| T-Play:Assets | Play:Graphics, Play:NonAndroid, Play:Misleading |
Sprawdź wszystkie komponenty graficzne, multimedia, tekst, biblioteki kodu i inne treści, które są spakowane w aplikacji lub w pliku rozszerzenia. |
Archiwum
Poprzednie wersje wskazówek dotyczących ogólnej jakości aplikacji: