Gdy użytkownik wyszukuje lub przegląda aplikacje do pobrania w Google Play, wyniki są filtrowane w zależności od tego, które aplikacje są zgodne z urządzeniem. Jeśli na przykład aplikacja wymaga aparatu, Google Play nie wyświetli jej na urządzeniach, które nie mają takiej kamery. To filtrowanie pomaga deweloperom zarządzać dystrybucją ich aplikacji i zapewnia użytkownikom najlepsze możliwe wrażenia.
Filtrowanie w Google Play opiera się na kilku typach metadanych aplikacji i ustawień konfiguracji, takich jak deklaracje w pliku manifestu, wymagane biblioteki, zależności architektury i ustawienia dystrybucji skonfigurowane w Konsoli Google Play, np. kierowanie geograficzne, ceny itp.
Filtrowanie w Google Play opiera się częściowo na deklaracji w pliku manifestu i innych aspektach platformy Androida, ale rzeczywiste działanie filtrowania różni się od działania platformy i nie jest powiązane z konkretnymi poziomami interfejsu API. Ten dokument określa obecne reguły filtrowania używane w Google Play.
Jak działają filtry w Google Play
Google Play używa opisanych poniżej ograniczeń związanych z filtrami, aby określić, czy pokazywać Twoją aplikację użytkownikowi, który przegląda lub wyszukuje aplikacje w aplikacji Google Play.
Podejmując decyzję o wyświetleniu aplikacji, Google Play sprawdza wymagania dotyczące sprzętu i oprogramowania urządzenia, a także operatora, lokalizację i inne cechy. Następnie porównuje je z ograniczeniami i zależnościami określonymi w pliku manifestu aplikacji oraz w szczegółach publikowania.
Jeśli aplikacja jest zgodna z regułami filtrowania, Google Play wyświetli ją użytkownikowi. W przeciwnym razie Google Play ukryje Twoją aplikację w wynikach wyszukiwania i przeglądaniu kategorii, nawet jeśli użytkownik poprosi o dostęp do aplikacji, klikając precyzyjny link prowadzący bezpośrednio do jej identyfikatora w Google Play.
W przypadku aplikacji możesz używać dowolnej kombinacji filtrów dostępnych w aplikacji. Na przykład możesz ustawić wymaganie minSdkVersion
na "4"
i ustawić smallScreens="false"
w aplikacji. Następnie podczas przesyłania aplikacji do Google Play możesz kierować ją tylko na kraje europejskie (operatorów). Filtry Google Play uniemożliwią więc udostępnienie aplikacji na urządzeniach, które nie spełniają wszystkich 3 tych wymagań.
Wszystkie ograniczenia filtrowania są powiązane z wersją aplikacji i mogą się zmieniać między wersjami. Jeśli na przykład użytkownik zainstalował Twoją aplikację, a Ty opublikujesz aktualizację, która sprawia, że aplikacja jest niewidoczna dla użytkownika, nie zobaczy on, że jest dostępna aktualizacja.
Filtrowanie na stronie Google Play
Podczas przeglądania witryny Google Play użytkownicy mogą zobaczyć wszystkie opublikowane aplikacje. Witryna Google Play porównuje jednak wymagania dotyczące aplikacji z każdym zarejestrowanym urządzeniem użytkownika i umożliwia zainstalowanie aplikacji tylko wtedy, gdy jest ona zgodna z danym urządzeniem.
Filtrowanie na podstawie pliku manifestu aplikacji
Większość filtrów jest wyzwalana przez elementy w pliku manifestu aplikacji, AndroidManifest.xml (chociaż nie wszystkie treści w pliku manifestu mogą powodować filtrowanie). Tabela 1 zawiera listę elementów pliku manifestu, których należy używać do filtrowania, oraz sposób działania filtrowania poszczególnych elementów.
Element pliku manifestu | Nazwa filtra | Jak to działa |
---|---|---|
<supports-screens>
|
Rozmiar ekranu |
Aplikacja wskazuje rozmiary ekranu, które może obsługiwać przez ustawienie atrybutów elementu Ogólnie Google Play zakłada, że platforma urządzenia może dostosowywać mniejsze układy do większych ekranów, ale nie jest w stanie dostosować większych układów do mniejszych ekranów. Jeśli więc aplikacja deklaruje, że obsługuje tylko „normalny” rozmiar ekranu, Google Play udostępnia ją zarówno urządzeniom z normalnym, jak i dużym ekranom, ale filtruje ją tak, aby nie była dostępna dla takich urządzeń. Jeśli aplikacja nie zadeklaruje atrybutów właściwości
Przykład 1 Przykład 2 Przykład 3 Więcej informacji o deklarowaniu obsługi rozmiaru ekranu w aplikacji znajdziesz w |
<uses-configuration>
|
Konfiguracja urządzenia: klawiatura , nawigacja, ekran dotykowy |
Aplikacja może zażądać określonych funkcji sprzętowych, a Google Play wyświetli ją tylko na urządzeniach z odpowiednim sprzętem. Przykład 1 Przykład 2 Więcej informacji: |
<uses-feature>
|
Funkcje urządzenia ( name ) |
Aplikacja może wymagać dostępności określonych funkcji urządzenia. Ta funkcja została wprowadzona w Androidzie 2.0 (poziom interfejsu API 5). Przykład 1 Przykład 2 Więcej informacji: Filtrowanie na podstawie domniemanych funkcji: w niektórych przypadkach Google Play interpretuje uprawnienia wymagane przez elementy |
Wersja OpenGL-ES ( openGlEsVersion ) |
Aplikacja może wymagać, aby urządzenie obsługiwało konkretną wersję OpenGL-ES za pomocą atrybutu Przykład 1 Przykład 2 Przykład 3 Przykład 4 Więcej informacji: |
|
<uses-library> |
Biblioteki oprogramowania | Aplikacja może wymagać, aby na urządzeniu były dostępne określone biblioteki udostępnione. Przykład 1 Przykład 2 Więcej informacji: |
<uses-permission> |
Google Play nie stosuje filtrów na podstawie elementów Ogólnie, gdy aplikacja żąda uprawnień związanych ze sprzętem, Google Play zakłada, że aplikacja wymaga podstawowych funkcji sprzętowych, mimo że mogą one nie odpowiadać deklaracji Listę uprawnień, które sugerują funkcje sprzętowe, znajdziesz w dokumentacji elementu |
|
<uses-sdk> |
Minimalna wersja platformy (minSdkVersion ) |
Aplikacja może wymagać minimalnego poziomu API. Przykład 1 Przykład 2 Chcesz uniknąć tego drugiego scenariusza, dlatego zalecamy, aby zawsze zadeklarować właściwość |
Maksymalna wersja platformy (maxSdkVersion ) |
Wycofano. Android 2.1 i nowsze wersje nie sprawdzają ani nie wymuszają atrybutu Zadeklarowanie |
Zaawansowane filtry pliku manifestu
Oprócz elementów pliku manifestu w tabeli 1 Google Play może też filtrować aplikacje na podstawie zaawansowanych elementów pliku manifestu opisanych w tabeli 2.
Te elementy manifestu i stosowane przez nie filtrowanie służą tylko do wyjątkowych przypadków użycia. Są one przeznaczone dla określonych typów gier o wysokiej wydajności i podobnych aplikacji, które wymagają ścisłej kontroli dystrybucji aplikacji. Większość aplikacji nigdy nie powinna używać tych filtrów.
Element pliku manifestu | Podsumowanie |
---|---|
<compatible-screens> |
Google Play filtruje aplikację, jeśli rozmiar ekranu i gęstość ekranu urządzenia nie pasują do żadnej z konfiguracji ekranu (deklarowanych przez element Uwaga: zwykle nie należy używać tego elementu manifestu. Użycie tego elementu może znacznie zmniejszyć liczbę potencjalnych użytkowników Twojej aplikacji, eliminując wszystkie nieuwzględnione kombinacje rozmiarów i gęstości ekranu. Aby włączyć tryb zgodności ekranu w przypadku konfiguracji ekranu, które nie zostały uwzględnione w zasobach alternatywnych, użyj elementu manifestu |
<supports-gl-texture> |
Google Play filtruje aplikację, chyba że urządzenie obsługuje też co najmniej jeden z formatów kompresji tekstur GL obsługiwanych przez aplikację. |
Inne filtry
Google Play na podstawie innych parametrów aplikacji określa, czy wyświetlić, czy ukryć ją w przypadku określonego użytkownika na danym urządzeniu, tak jak to opisano w tabeli poniżej.
Nazwa filtra | Jak to działa |
---|---|
Stan publikacji | W wynikach wyszukiwania i przeglądaniu treści w Google Play będą widoczne tylko opublikowane aplikacje. Nawet jeśli aplikacja nie jest opublikowana, można ją zainstalować, jeśli użytkownicy widzą ją w obszarze Pobrane wśród aplikacji kupionych, zainstalowanych lub ostatnio odinstalowanych. Jeśli aplikacja została zawieszona, użytkownicy nie będą mogli ponownie jej zainstalować ani zaktualizować, nawet jeśli znajdzie się ona w sekcji Pobrane. |
Stan w cenie | Nie wszyscy użytkownicy widzą płatne aplikacje. Aby można było wyświetlić płatne aplikacje, na urządzeniu musi być zainstalowany Android 1.1 lub nowszy oraz znajdujące się w kraju, w którym płatne aplikacje są dostępne. Jeśli urządzenie ma kartę SIM, to operator karty SIM określa, czy są dostępne płatne aplikacje. Jeśli urządzenie nie ma karty SIM, jego adres IP jest używany do określenia, czy urządzenie znajduje się w kraju, w którym dostępne są płatne aplikacje. |
Kierowanie na kraj | Gdy prześlesz aplikację do Google Play, w sekcji Ceny i dystrybucja możesz wybrać kraje, w których będzie ona dostępna. Aplikacja będzie wtedy dostępna tylko dla użytkowników w wybranych przez Ciebie krajach. |
Architektura procesora (ABI) | Aplikacja zawierająca biblioteki natywne kierowane na określoną architekturę procesora (np. ARM EABI v7 lub x86) jest widoczna tylko na urządzeniach, które obsługują tę architekturę. Szczegółowe informacje o pakiecie NDK i używaniu bibliotek natywnych znajdziesz w artykule Co to jest pakiet NDK na Androida? |
Aplikacje z zabezpieczeniem 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ę, skorzystaj z licencjonowania aplikacji. Więcej informacji znajdziesz w artykule Wymiana ochrony przed kopiowaniem. |
Publikowanie wielu plików APK z użyciem różnych filtrów
Niektóre filtry w Google Play pozwalają opublikować wiele plików APK tej samej aplikacji, by udostępnić różne pliki APK dla różnych konfiguracji urządzeń. Jeśli np. 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ć różne formaty kompresji tekstur. Dzięki temu możesz zmniejszyć rozmiar pliku APK, uwzględniając tylko tekstury wymagane w każdej konfiguracji urządzenia. W zależności od tego, czy poszczególne urządzenia obsługują formaty kompresji tekstur, Google Play dostarczy plik APK, który zadeklarowano, że obsługuje dane urządzenie.
Obecnie Google Play umożliwia publikowanie wielu plików APK tej samej aplikacji tylko wtedy, gdy każdy z nich ma osobne filtry oparte na tych konfiguracjach:
- 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)
Przez dołączanie bibliotek natywnych utworzonych za pomocą Androida NDK, które są kierowane na konkretną architekturę procesora (np. ARM EABI 7 lub x86).
Pozostałe filtry działają tak samo jak zwykle, ale tylko te 4 są jedynymi, które pozwalają odróżnić jeden plik APK od innego w tej samej stronie z informacjami o aplikacji w Google Play. Na przykład nie można opublikować wielu pakietów APK tej samej aplikacji, jeśli różnią się one tylko w zależności od tego, czy urządzenie ma aparat.
Uwaga: publikowanie wielu plików APK dla tej samej aplikacji jest uważane za funkcję zaawansowaną i większość aplikacji powinna publikować tylko jeden plik APK, który obsługuje różne konfiguracje urządzeń. Publikowanie wielu plików APK wymaga przestrzegania określonych reguł w filtrach oraz zwracania większej uwagi na kody wersji każdego z nich. Zapewni to 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.