Filtry w Google Play

Gdy użytkownik wyszukuje lub przegląda aplikacje do pobrania w Google Play, wyniki są filtrowane na podstawie tego, które aplikacje są zgodne z urządzeniem. Jeśli na przykład aplikacja wymaga aparatu, Google Play nie wyświetla jej na urządzeniach, które nie mają aparatu. Ten filtr pomaga deweloperom zarządzać dystrybucją aplikacji i zapewnia użytkownikom jak najlepsze wrażenia.

Filtrowanie w Google Play odbywa się na podstawie kilku typów metadanych aplikacji i ustawień konfiguracji, w tym deklaracji pliku manifestu, wymaganych bibliotek, zależności od architektury oraz ustawień dystrybucji określonych w Konsoli Play, takich jak kierowanie geograficzne, ceny itp.

Filtrowanie w Google Play jest częściowo oparte na deklaracjach w pliku manifestu i innych aspektach platformy Android, ale rzeczywiste zachowania filtrowania różnią się od platformy i nie są powiązane z konkretnymi poziomami interfejsu API. Ten dokument określa aktualne reguły filtrowania używane przez Google Play.

Jak działają filtry w Google Play

Google Play używa opisanych poniżej ograniczeń filtra, aby określić, czy wyświetlić Twoją aplikację użytkownikowi, który przegląda lub wyszukuje aplikacje w aplikacji Google Play.

Określając, czy wyświetlić aplikację, Google Play sprawdza wymagania dotyczące sprzętu i oprogramowania, a także operatora, lokalizację i inne cechy urządzenia. Następnie porównuje je z ograniczeniami i zależnościami określonymi w pliku manifestu aplikacji i szczegółach publikacji.

Jeśli aplikacja jest zgodna z urządzeniem zgodnie z zasadami filtra, Google Play wyświetla ją użytkownikowi. W przeciwnym razie Google Play ukrywa aplikację w wynikach wyszukiwania i podczas przeglądania kategorii, nawet jeśli użytkownik żąda otwarcia aplikacji przez kliknięcie precyzyjnego linku, który prowadzi bezpośrednio do identyfikatora aplikacji w Google Play.

Możesz użyć dowolnej kombinacji dostępnych filtrów. Możesz na przykład ustawić wymagania minSdkVersion "4"smallScreens="false" w aplikacji, a potem podczas przesyłania aplikacji do Google Play możesz kierować ją tylko na kraje europejskie (operatorów). Filtry Google Play uniemożliwią dostęp do aplikacji na dowolnym urządzeniu, które nie spełnia wszystkich tych wymagań.

Wszystkie ograniczenia filtrowania są powiązane z wersją aplikacji i mogą się zmieniać w zależności od wersji. Jeśli np. użytkownik zainstaluje Twoją aplikację, a Ty opublikujesz aktualizację, która spowoduje, że aplikacja stanie się niewidoczna dla użytkownika, nie będzie on widzieć, że aktualizacja jest dostępna.

Filtrowanie na stronie internetowej Google Play

Gdy użytkownicy przeglądają stronę internetową Google Play, widzą wszystkie opublikowane aplikacje. Strona internetowa Google Play porównuje wymagania aplikacji z każdym zarejestrowanym urządzeniem użytkownika pod kątem zgodności i zezwala na instalację aplikacji tylko wtedy, gdy jest ona zgodna z tym urządzeniem.

Filtrowanie na podstawie pliku manifestu aplikacji

Większość filtrów jest wywoływana przez elementy w pliku manifestu aplikacji AndroidManifest.xml (chociaż nie wszystko w pliku manifestu może wywoływać filtrowanie). Tabela 1 zawiera elementy pliku manifestu, których należy używać do uruchamiania filtrowania, oraz wyjaśnia, jak działa filtrowanie w przypadku każdego z nich.

Tabela 1. Elementy pliku manifestu, które powodują filtrowanie w Google Play.

Element pliku manifestu Nazwa filtra Jak to działa
<supports-screens> Rozmiar ekranu

Aplikacja wskazuje rozmiary ekranów, które jest w stanie obsługiwać, przez ustawienie atrybutów elementu <supports-screens>. Gdy aplikacja zostanie opublikowana, Google Play użyje tych atrybutów, aby określić, czy wyświetlić ją użytkownikom, w zależności od rozmiaru ekranu ich urządzeń.

Zasadniczo Google Play zakłada, że platforma na urządzeniu może dostosować mniejsze układy do większych ekranów, ale nie może dostosować większych układów do mniejszych ekranów. Jeśli więc aplikacja deklaruje obsługę tylko „normalnego” rozmiaru ekranu, Google Play udostępnia ją na urządzeniach z normalnym i dużym ekranem, ale filtruje aplikację tak, aby nie była dostępna na urządzeniach z małym ekranem.

Jeśli aplikacja nie deklaruje atrybutów dla atrybutu <supports-screens>, Google Play używa domyślnych wartości tych atrybutów, które różnią się w zależności od poziomu interfejsu API. Więcej szczegółów:

  • W przypadku aplikacji, które ustawiają wartość atrybutu android: minSdkVersion lub android: targetSdkVersion na 3 lub niższą, element <supports-screens> nie jest zdefiniowany i nie ma dostępnych atrybutów. W takim przypadku Google Play zakłada, że aplikacja jest przeznaczona na ekrany normalnej wielkości, i wyświetla ją na urządzeniach z normalnymi lub większymi ekranami.
  • Jeśli wartość android: minSdkVersion lub android: targetSdkVersion wynosi 4 lub więcej, domyślną wartością dla wszystkich atrybutów jest "true". W ten sposób aplikacja jest domyślnie obsługiwana na wszystkich rozmiarach ekranu.

Przykład 1
Manifest deklaruje <uses-sdk android:minSdkVersion="3"> i nie zawiera elementu <supports-screens>. Efekt: Google Play nie wyświetli aplikacji użytkownikowi urządzenia z małym ekranem, ale wyświetli ją użytkownikom urządzeń ze średnim i dużym ekranem, chyba że mają zastosowanie inne filtry.

Przykład 2
Manifest deklaruje <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4"> i nie zawiera elementu <supports-screens>. Wynik: Google Play będzie wyświetlać aplikację użytkownikom na wszystkich urządzeniach, chyba że będą obowiązywać inne filtry.

Przykład 3
Manifest deklaruje element <uses-sdk android:minSdkVersion="4"> i nie zawiera elementu <supports-screens>. Wynik: Google Play będzie wyświetlać aplikację wszystkim użytkownikom, chyba że zastosowanie mają inne filtry.

Więcej informacji o deklarowaniu obsługi rozmiarów ekranów w aplikacji znajdziesz w artykule <supports-screens> oraz w artykule Obsługa wielu ekranów.

<uses-configuration> Urządzenie Konfiguracja:
klawiatura, nawigacja, ekran dotykowy

Aplikacja może prosić o określone funkcje sprzętowe, a Google Play będzie wyświetlać ją tylko na urządzeniach z wymaganym sprzętem.

Przykład 1
Plik manifestu zawiera element <uses-configuration android:reqFiveWayNav="true" />, a użytkownik szuka aplikacji na urządzeniu, które nie ma 5-kierunkowego sterowania. Efekt: Google Play nie wyświetli aplikacji użytkownikowi.

Przykład 2
Manifest nie zawiera elementu <uses-configuration>. Wynik: Google Play będzie wyświetlać aplikację wszystkim użytkownikom, chyba że zastosowanie mają inne filtry.

Więcej informacji znajdziesz w sekcji <uses-configuration>.

<uses-feature> Funkcje urządzenia
(name)

Aplikacja może wymagać, aby na urządzeniu były dostępne określone funkcje. Ta funkcja została wprowadzona w Androidzie 2.0 (interfejs API na poziomie 5).

Przykład 1
Plik manifestu zawiera element <uses-feature android:name="android.hardware.sensor.light" />, a użytkownik szuka aplikacji na urządzeniu, które nie ma czujnika światła. Efekt: Google Play nie wyświetli aplikacji użytkownikowi.

Przykład 2
Manifest nie zawiera elementu <uses-feature>. Wynik: Google Play będzie wyświetlać aplikację wszystkim użytkownikom, chyba że zastosowanie mają inne filtry.

Pełne informacje znajdziesz w artykule <uses-feature> .

Filtrowanie na podstawie funkcji domyślnych: w niektórych przypadkach Google Play interpretuje uprawnienia wymagane przez elementy <uses-permission> jako wymagania dotyczące funkcji równoważne z tymi zadeklarowanymi w elementach <uses-feature>. Poniżej znajdziesz sekcję <uses-permission>.

OpenGL-ES Wersja
(openGlEsVersion)

Aplikacja może wymagać, aby urządzenie obsługiwało określoną wersję OpenGL ES za pomocą atrybutu <uses-feature android:openGlEsVersion="int">.

Przykład 1
Aplikacja prosi o różne wersje OpenGL-ES, podając w pliku manifestu wiele razy wartość openGlEsVersion. Wynik: Google Play zakłada, że aplikacja wymaga najnowszej z wybranych wersji.

Przykład 2
Aplikacja prosi o OpenGL-ES w wersji 1.1, a użytkownik szuka aplikacji na urządzeniu, które obsługuje OpenGL-ES w wersji 2.0. Wynik: Google Play wyświetli aplikację użytkownikowi, chyba że mają zastosowanie inne filtry. Jeśli urządzenie informuje, że obsługuje wersję OpenGL ES X, Google Play zakłada, że obsługuje również wersje starsze niż X.

Przykład 3
Użytkownik szuka aplikacji na urządzeniu, które nie raportuje wersji OpenGL-ES (np. urządzenie z Androidem 1.5 lub starszym). Wynik: Google Play zakłada, że urządzenie obsługuje tylko OpenGL-ES 1.0. Google Play będzie wyświetlać tylko aplikacje użytkowników, które nie mają ustawionej wartości openGlEsVersion lub nie mają ustawionej wersji OpenGL ES wyższej niż 1.0.

Przykład 4
Plik manifestu nie określa wartości openGlEsVersion. Wynik: Google Play będzie wyświetlać aplikację wszystkim użytkownikom, chyba że będą obowiązywać inne filtry.

Więcej informacji znajdziesz w sekcji <uses-feature>.

<uses-library> Biblioteki oprogramowania

Aplikacja może wymagać obecności określonych bibliotek udostępnionych na urządzeniu.

Przykład 1
Aplikacja wymaga biblioteki com.google.android.maps, a użytkownik szuka aplikacji na urządzeniu, na którym nie ma tej biblioteki.com.google.android.maps Efekt: Google Play nie wyświetli aplikacji użytkownikowi.

Przykład 2
Manifest nie zawiera elementu <uses-library>. Wynik: Google Play będzie wyświetlać aplikację wszystkim użytkownikom, chyba że zastosowanie mają inne filtry.

Więcej informacji znajdziesz w sekcji <uses-library>.

<uses-permission>  

W ścisłym tego słowa znaczeniu Google Play nie filtruje elementów <uses-permission>. Czyta jednak te elementy, aby określić, czy aplikacja ma wymagania dotyczące funkcji sprzętowych, które nie zostały prawidłowo zadeklarowane w elementach <uses-feature>. Jeśli na przykład aplikacja prosi o uprawnienia CAMERA, ale nie deklaruje elementu <uses-feature> dla android.hardware.camera, Google Play uzna, że aplikacja wymaga aparatu i nie powinna być wyświetlana użytkownikom, których urządzenia nie mają aparatu.

Ogólnie, jeśli aplikacja prosi o uprawnienia związane ze sprzętem, Google Play zakłada, że aplikacja wymaga funkcji sprzętowych, nawet jeśli nie ma odpowiednich deklaracji<uses-feature>. Następnie Google Play konfiguruje filtrowanie na podstawie funkcji określonych w deklaracjach <uses-feature>.

Listę uprawnień, które sugerują funkcje sprzętowe, znajdziesz w dokumentacji elementu <uses-feature>.

<uses-sdk> Minimalna wersja platformy (minSdkVersion)

Aplikacja może wymagać minimalnego poziomu interfejsu API.

Przykład 1
W pliku manifestu znajduje się element <uses-sdk android:minSdkVersion="3">, a aplikacja używa interfejsów API wprowadzonych na poziomie 3. Użytkownik szuka aplikacji na urządzeniu z poziomem interfejsu API 2. Efekt: Google Play nie wyświetli aplikacji użytkownikowi.

Przykład 2
Manifest nie zawiera minSdkVersion, a aplikacja korzysta z interfejsów API wprowadzonych na poziomie 3. Użytkownik szuka aplikacji na urządzeniu z poziomem interfejsu API 2. Wynik: Google Play zakłada, że minSdkVersion to „1”, a aplikacja jest zgodna ze wszystkimi wersjami Androida. Google Play wyświetla aplikację użytkownikowi i pozwala ją pobrać. Aplikacja ulega awarii w czasie działania.

Aby uniknąć tego drugiego scenariusza, zalecamy zawsze deklarowanie elementu minSdkVersion. Więcej informacji znajdziesz w sekcji android:minSdkVersion.

Maksymalna wersja platformy (maxSdkVersion)

Wycofany. Android w wersji 2.1 i nowszych nie sprawdza ani nie wymusza atrybutu maxSdkVersion, a pakiet SDK nie zostanie skompilowany, jeśli w pliku manifestu aplikacji ustawisz wartość maxSdkVersion. W przypadku urządzeń skompilowanych z użyciem maxSdkVersion Google Play będzie respektować tę wartość i używać jej do filtrowania.

maxSdkVersion nie jest zalecane. Więcej informacji znajdziesz w sekcji android:maxSdkVersion.

Zaawansowane filtry pliku manifestu

Oprócz elementów pliku manifestu wymienionych w tabeli 1 Google Play może też filtrować aplikacje na podstawie elementów zaawansowanego pliku manifestu wymienionych w tabeli 2.

Te elementy pliku manifestu i filtrowanie, które one wywołują, są przeznaczone tylko do wyjątkowych zastosowań. Są one przeznaczone do określonych typów gier o wysokiej wydajności i podobnych aplikacji, które wymagają ścisłej kontroli dystrybucji. Większość aplikacji nie powinna używać tych filtrów.

Tabela 2. Zaawansowane elementy pliku manifestu do filtrowania w Google Play.

Element pliku manifestuPodsumowanie
<compatible-screens>

Google Play odfiltrowuje aplikację, jeśli rozmiar i gęstość ekranu urządzenia nie pasują do żadnej z konfiguracji ekranu (deklarowanej przez element <screen>) w elemencie <compatible-screens>.

Uwaga: zazwyczaj nie należy używać tego elementu pliku manifestu. Użycie tego elementu może znacznie zmniejszyć potencjalną bazę użytkowników aplikacji, ponieważ wyklucza wszystkie kombinacje rozmiarów i gęstości ekranu, których nie uwzględniono na liście. Zamiast tego użyj elementu pliku manifestu <supports-screens> (opisanego powyżej w tabeli 1), aby włączyć tryb zgodności ekranu w przypadku konfiguracji ekranu, które nie zostały uwzględnione w przypadku zasobów alternatywnych.

<supports-gl-texture>

Google Play odfiltrowuje aplikację, chyba że co najmniej 1 z formatów kompresji tekstur GL obsługiwanych przez aplikację jest też obsługiwany przez urządzenie.

Inne filtry

Google Play używa innych właściwości aplikacji, aby określić, czy wyświetlić aplikację, czy ją ukryć dla konkretnego użytkownika na danym urządzeniu. Więcej informacji znajdziesz w tabeli poniżej.

Tabela 3. Aplikacja i publikowanie charakterystyki, które wpływają na filtrowanie w Google Play.

Nazwa filtra Jak to działa
Stan publikacji

W wynikach wyszukiwania i podczas przeglądania w Google Play będą wyświetlane tylko opublikowane aplikacje.

Nawet jeśli aplikacja nie jest opublikowana, można ją zainstalować, jeśli użytkownicy mogą ją zobaczyć w obszarze Pobrane w grupie zakupionych, zainstalowanych lub niedawno odinstalowanych aplikacji.

Jeśli aplikacja została zawieszona, użytkownicy nie będą mogli jej ponownie zainstalować ani zaktualizować, nawet jeśli pojawi się w sekcji Pobrane.

Cena Stan

Płatne aplikacje mogą być widoczne tylko dla niektórych użytkowników. Aby wyświetlać płatne aplikacje, urządzenie musi mieć zainstalowany Android 1.1 lub nowszy i znajdować się w kraju, w którym są one dostępne. Jeśli urządzenie ma kartę SIM, to operator karty SIM decyduje, czy płatne aplikacje są dostępne. Jeśli urządzenie nie ma karty SIM, do określenia, czy znajduje się ono w kraju, w którym dostępne są płatne aplikacje, używany jest adres IP urządzenia.

Kierowanie na kraj

Podczas przesyłania aplikacji do Google Play możesz wybrać kraje, w których chcesz ją dystrybuować, w sekcji Ceny i dystrybucja. Aplikacja będzie wtedy dostępna tylko dla użytkowników z wybranych krajów.

Architektura procesora (ABI)

Aplikacja zawierająca natywne biblioteki na potrzeby konkretnej architektury procesora (np. ARM EABI w wersji 7 lub x86) jest widoczna tylko na urządzeniach, które obsługują tę architekturę. Szczegółowe informacje o NDK i używaniu bibliotek natywnych znajdziesz w artykule Co to jest pakiet NDK na Androida?

Aplikacje chronione przed kopiowaniem

Google Play nie obsługuje już funkcji ochrony przed kopiowaniem w Konsoli Play i nie filtruje aplikacji na jej podstawie. Aby zabezpieczyć aplikację, użyj licencjonowania aplikacji. Więcej informacji znajdziesz w artykule Zastąpienie ochrony przed kopiowaniem.

Publikowanie wielu plików APK z różnymi filtrami

Niektóre filtry Google Play umożliwiają publikowanie wielu plików APK tej samej aplikacji, aby udostępniać różne pliki APK na różne konfiguracje urządzeń. Jeśli na przykład tworzysz grę wideo, która wykorzystuje zasoby graficzne o wysokiej jakości, możesz utworzyć 2 pliki APK, z których każdy będzie obsługiwał inny format kompresji tekstur. Dzięki temu możesz zmniejszyć rozmiar pliku APK, uwzględniając tylko te tekstury, które są wymagane w przypadku każdej konfiguracji urządzenia. W zależności od tego, jakie formaty kompresji tekstur obsługuje dane urządzenie, Google Play dostarczy plik APK, który został zadeklarowany jako obsługujący to urządzenie.

Obecnie Google Play umożliwia publikowanie wielu plików APK tej samej aplikacji tylko wtedy, gdy każdy z nich zawiera różne filtry na podstawie tych konfiguracji:

  • Formaty kompresji tekstur OpenGL

    za pomocą elementu <supports-gl-texture>.

  • Rozmiar ekranu (i opcjonalnie gęstość ekranu)

    za pomocą elementu <supports-screens> lub <compatible-screens>;

  • Poziom interfejsu API

    za pomocą elementu <uses-sdk>.

  • Architektura procesora (ABI)

    Dołączając natywne biblioteki utworzone za pomocą NDK Androida, które są kierowane na konkretną architekturę procesora (np. ARM EABI v7 lub x86).

Wszystkie inne filtry działają tak samo jak zwykle, ale te 4 filtry to jedyne, które mogą odróżniać jeden plik APK od drugiego w ramach tej samej strony aplikacji w Google Play. Na przykład nie możesz opublikować kilku plików APK tej samej aplikacji, jeśli różnią się one tylko tym, czy urządzenie ma kamerę.

Uwaga: publikowanie wielu plików APK dla tej samej aplikacji jest uważane za zaawansowaną funkcję, dlatego w przypadku większości aplikacji należy publikować tylko 1 plik APK, który obsługuje szeroki zakres konfiguracji urządzeń. Aby opublikować wiele plików APK, musisz przestrzegać określonych reguł w filtrach i zwrócić szczególną uwagę na kody wersji każdego pliku APK, aby zapewnić prawidłowe ścieżki aktualizacji dla każdej konfiguracji.

Jeśli chcesz dowiedzieć się więcej o publikowaniu wielu plików APK w Google Play, przeczytaj artykuł Obsługa wielu plików APK.

Zobacz również

  1. Zgodność z Androidem
  2. Obsługa wielu plików APK