Dostarczanie warunkowe umożliwia określenie wymagań związanych z konfiguracją urządzenia. aby moduły funkcji były pobierane automatycznie podczas instalowania aplikacji. Możesz na przykład skonfigurować moduł funkcji, który zawiera funkcji rzeczywistości rozszerzonej (AR) dostępnej podczas instalowania aplikacji na tylko na urządzeniach obsługujących AR.
Obecnie ten mechanizm dostarczania obsługuje kontrolowanie pobierania w momencie instalacji aplikacji na podstawie następujących konfiguracji urządzeń:
- Funkcje sprzętu i oprogramowania urządzenia, w tym OpenGL ES wersja
- Kraj użytkownika
- Poziom interfejsu API
Jeśli urządzenie nie spełnia wszystkich określonych wymagań, moduł nie będzie pobierane w momencie instalowania aplikacji. Aplikacja może jednak później poprosić o zgodę na pobierz moduł na żądanie, korzystając z Play Core SDK.
Zanim zaczniesz, upewnij się, że masz Androida Studio w wersji 3.5 lub nowszej. W tych sekcjach dowiesz się, jak dodać obsługę przesyłania warunkowego do modułów funkcji.
Dodaj nowy moduł z opcjami przesyłania warunkowego
Najprostszy sposób na utworzenie nowego modułu funkcji z przesyłaniem warunkowym można skorzystać z kreatora Nowy moduł w następujący sposób:
- Aby otworzyć okno Nowy moduł, wybierz Plik > Nowe > Nowy moduł z: na pasku menu.
- W oknie Nowy moduł wybierz Dynamic Feature Module (Moduł funkcji dynamicznych) i kliknij Dalej.
- Skonfiguruj moduł w zwykły sposób i kliknij Dalej.
W sekcji Opcje pobierania modułu wykonaj te czynności:
Określ Tytuł modułu za pomocą maksymalnie 50 znaków. Platforma wykorzysta go do identyfikacji modułu wśród użytkowników, jeśli na przykład i potwierdź, czy użytkownik chce pobrać moduł. Do tego celu dlatego podstawowy moduł aplikacji musi zawierać tytuł string resource, co potrafi tłumaczyć. Przy tworzeniu modułu w Android Studio IDE doda zasób łańcuchowy do modułu podstawowego i wstrzykuje makro następujący wpis w pliku manifestu modułu funkcji:
<dist:module ... dist:title="@string/feature_title"> </dist:module>
W menu w sekcji Uwzględnienie podczas instalacji wybierz Tylko uwzględniania modułu podczas instalacji aplikacji na urządzeniach z określonymi funkcjami, który tworzy moduł dołączany do aplikacji tylko w momencie jej instalacji urządzeń o określonych konfiguracjach, takich jak urządzenie cech lub kraju. Android Studio wstawia w kodzie modułu plik manifestu odzwierciedlający Twój wybór:
<dist:module ... > <dist:delivery> <dist:install-time> <dist:conditions> <!-- If you specify conditions, as described in the steps below, the IDE includes them here. --> </dist:conditions> </dist:install-time> </dist:delivery> </dist:module>
Jeśli chcesz ograniczyć automatyczne pobieranie modułu do określonych krajów lub interfejsu API, kliknij Zakończ, aby zakończyć tworzenie modułu, a następnie przeczytaj sekcję z informacjami o tym, określ warunki w zależności od kraju lub minimalnego poziomu interfejsu API. W przeciwnym razie kliknij + Funkcja urządzenia, aby dodać funkcję, którą urządzenie są wymagane w celu pobrania modułu w czasie instalacji.
Przy opcji device-feature wybierz jedną z tych opcji z i określ jego wartość:
- Nazwa:umożliwia określenie sprzętu lub oprogramowania
wymagane przez urządzenie do pobrania modułu ze strony
podczas instalacji. Funkcje obsługiwane przez przesyłanie warunkowe to:
takie same jak te wymienione jako stałe
FEATURE_*
przezPackageManager
Po wybraniu tej opcji zacznij wpisywać dowolną część stałej wartości funkcję, taką jak „Bluetooth”, w polu obok menu, wybierz jedną z wyświetlonych sugestii. - Wersja OpenGL ES: umożliwia określenie wersji OpenGL ES, która wymagane przez urządzenie, aby pobrać moduł w momencie instalacji. Jeśli wybierz tę opcję, zacznij wpisywać wersję, na przykład „0x00030001”, w pole obok menu i wybierz jedną z podpowiedzi, .
- Nazwa:umożliwia określenie sprzętu lub oprogramowania
wymagane przez urządzenie do pobrania modułu ze strony
podczas instalacji. Funkcje obsługiwane przez przesyłanie warunkowe to:
takie same jak te wymienione jako stałe
Jeśli chcesz dodać wiele warunków w zależności od dostępnych funkcji urządzenia, kliknij + Funkcja urządzenia przy każdym warunku funkcji urządzenia, który chcesz określić. określić.
Zaznacz pole Fusing, aby ten moduł był dostępny. na urządzeniach z Androidem 4.4 (poziom interfejsu API 20) lub starszym z wieloma plikami APK. Oznacza to, że możesz włączyć w tym module działanie na żądanie i wyłącz fusing, aby pominąć ją na urządzeniach, które nie obsługują pobieranie i instalowanie dzielonych pakietów APK. Android Studio wstawia zgodnie z Twoim wyborem w pliku manifestu modułu:
<dist:module ...> <dist:fusing dist:include="true | false" /> </dist:module>
Po skonfigurowaniu opcji pobierania modułów kliknij Zakończ.
Pamiętaj, że wtyczka Androida do obsługi Gradle nie obsługuje uruchamiania lint z modułów funkcji dynamicznych. Uruchamianie linta z odpowiedni moduł aplikacji będzie uruchamiał lint na swoich modułach funkcji dynamicznych i uwzględnij wszystkie problemy w raporcie lint w aplikacji.
Dodawanie opcji dostarczania warunkowego do istniejącego modułu funkcji
Możesz łatwo dodawać opcje dostarczania warunkowego do istniejących funkcji za pomocą pliku manifestu modułu. Najpierw jednak przeczytaj zgodności opcji dostarczania warunkowego z innymi opcje wyświetlania, które zostały już włączone.
Aby rozpocząć, musisz najpierw przenieść swój plik manifestu do nowej
<dist:delivery>
element. Fragment kodu poniżej zawiera przykład starszej wersji
składnia:
<!-- This is the old syntax. -->
<dist:module
dist:title="@string/feature_title" dist:onDemand="true">
<dist:fusing dist:include="true"/>
</dist:module>
Powyższe opcje dostawy zostały określone w następujący sposób.
<dist:module
dist:title="@string/feature_title">
<dist:delivery>
<dist:on-demand/>
</dist:delivery>
<dist:fusing dist:include="true"/>
</dist:module>
Następnie możesz uwzględnić opcje przesyłania warunkowego oparte na funkcjach urządzenia, co dalej.
<dist:module
dist:title="@string/feature_title">
<dist:delivery>
<dist:on-demand/>
<dist:install-time>
<dist:conditions>
<!-- Requires that the device support AR to download the module at
app install-time. -->
<dist:device-feature dist:name="android.hardware.camera.ar"/>
</dist:conditions>
</dist:install-time>
</dist:delivery>
<dist:fusing dist:include="true"/>
</dist:module>
W sekcjach poniżej omawiamy inne opcje dostarczania warunkowego, takie jak: według kraju lub minimalnego poziomu interfejsu API.
Zgodność z innymi opcjami pobierania modułów
Ponieważ moduły cech mają wiele opcji – gdy użytkownik jest dostarczany na urządzenie, trzeba zrozumieć, na opcje dostarczania warunkowego wpływają inne ustawienia. Tabela poniżej podsumowuje zgodność przesyłania warunkowego z innymi modułami do pobrania .
Opcja pobierania modułu | Zgodność z dostarczaniem warunkowym |
---|---|
Scalanie (<dist:fusing dist:include="true"/> ) |
Jeśli moduł ma wartość Prawda, Google Play nie uwzględnia opcji dostarczania warunkowego, które określasz podczas wdrażania aplikacji na urządzeniach z interfejsem API na poziomie 19 lub niższym. Oznacza to, że moduły funkcji, które umożliwiają fusing, są zawsze uwzględniane podczas instalacji w przypadku urządzeń z interfejsem API na poziomie 19 lub niższym. |
Z obsługą wyszukiwania dynamicznego (<dist:module dist:instant="true"/> ) |
Opcje dostarczania warunkowego nie są obsługiwane w przypadku modułów funkcji z obsługą wersji błyskawicznej. |
Na żądanie (<dist:on-demand/> ) |
Domyślnie, jeśli określisz opcje przesyłania warunkowego, moduł będzie też dostępny na żądanie. |
Określ warunki na podstawie kraju
W ramach przesyłania warunkowego możesz też określić, w których krajach wykluczyć (lub uwzględnić) możliwość pobierania modułu w momencie instalowania aplikacji. Określenie tego warunku może być przydatne, jeśli na przykład moduł korzysta z formy płatności, która jest niedostępna w niektórych regionach.
W tym kontekście kraj urządzenia jest zwykle określany na podstawie adresu rozliczeniowego zarejestrowanego na koncie Google Play.
Aby określić kraje dla modułu, umieść w polu funkcji w pliku manifestu modułu.
<dist:conditions>
<!-- Set to "true" to specify countries to exclude from downloading
this module at app install-time. By default, modules are available
for download to all user countries. -->
<dist:user-countries dist:exclude="true">
<!-- Specifies the two-letter CLDR country code for regions that should
not download the module at app install-time. -->
<dist:country dist:code="CN"/>
<dist:country dist:code="HK"/>
</dist:user-countries>
</dist:conditions>
Określ warunki dla poziomu interfejsu API
Określenie warunku na podstawie poziomu interfejsu API urządzenia może być przydatne, jeśli zależy od interfejsów API, które są dostępne tylko jednego z wielu wersji platformy Androida.
Aby ustawić warunek na podstawie minimalnego lub maksymalnego poziomu interfejsu API urządzenia, dołącz parametr który znajdziesz w pliku manifestu modułu funkcji.
<dist:conditions> <!-- Specifies the minimum API level that the device must satisfy in order to download your module at app install-time. The API level you specify must be greater or equal to the module's own minSdkVersion. --> <dist:min-sdk dist:value="21"/> <!-- Specifies the maximum API level that the device cannot exceed in order to download your module at app install-time. The API level you specify must be less than or equal to the module's own maxSdkVersion. --> <dist:max-sdk dist:value="24"/> </dist:conditions>