Model udostępniania aplikacji w Google Play wykorzystuje aplikację na Androida pakiety służące do generowania i udostępniania zoptymalizowanych plików APK dla poszczególnych użytkowników; w konfiguracji urządzenia, dzięki czemu użytkownicy pobierają tylko kod i zasoby, których potrzebują uruchom aplikację.
Play Feature Delivery korzysta z zaawansowanych możliwości pakietów aplikacji, pewnych funkcji aplikacji, które są udostępniane warunkowo lub pobierane na żądanie. Aby to zrobić, musisz najpierw wyodrębnić te funkcje od aplikacji podstawowej modułów funkcji.
Konfiguracja kompilacji modułu funkcji
Gdy tworzysz nowy moduł funkcji w Android Studio, IDE
stosuje poniższą wtyczkę Gradle do pliku build.gradle
modułu.
// The following applies the dynamic-feature plugin to your feature module.
// The plugin includes the Gradle tasks and properties required to configure and build
// an app bundle that includes your feature module.
plugins {
id 'com.android.dynamic-feature'
}
Wiele obiektów dostępnych dla standardowa wtyczka aplikacji są też dostępne w module funkcji. W poniższych sekcjach opisują właściwości, które należy, a czego nie należy umieszczać w konfiguracji kompilacji modułu funkcji.
Czego nie należy umieszczać w konfiguracji kompilacji modułu funkcji
Każdy moduł funkcji zależy od modułu podstawowego, dlatego
dziedziczy określone konfiguracje. Pomiń więc następujące fragmenty
plik build.gradle
modułu funkcji:
- Konfiguracje podpisywania: pakiety aplikacji są podpisywane przy użyciu podpisywania określonych w module podstawowym.
- Właściwość
minifyEnabled
: możesz włącz zmniejszanie kodu dla całego projektu aplikacji, zaczynając wyłącznie od kompilacji modułu podstawowego konfiguracji. Pomiń tę właściwość w modułów funkcji. Możesz jednak określanie dodatkowych reguł ProGuard dla każdego modułu funkcji. versionCode
iversionName
: podczas tworzenia pakietu aplikacji Gradle używa informacji o wersji aplikacji dostarczanych przez moduł podstawowy. Pomiń te właściwości w kodzie modułu funkcjibuild.gradle
.
Utwórz relację z modułem podstawowym
Gdy Android Studio utworzy moduł funkcji, staje się on widoczny
do modułu podstawowego przez dodanie właściwości android.dynamicFeatures
do parametru
pliku build.gradle
modułu podstawowego, jak pokazano poniżej:
// In the base module’s build.gradle file.
android {
...
// Specifies feature modules that have a dependency on
// this base module.
dynamicFeatures = [":dynamic_feature", ":dynamic_feature2"]
}
Dodatkowo Android Studio dołącza moduł podstawowy jako zależność modułu funkcji, jak pokazano poniżej:
// In the feature module’s build.gradle file:
...
dependencies {
...
// Declares a dependency on the base module, ':app'.
implementation project(':app')
}
Określ dodatkowe reguły ProGuard
Mimo że tylko konfiguracja kompilacji modułu podstawowego może umożliwiać zmniejszanie kodu
dla Twojego projektu aplikacji, możesz podać niestandardowe reguły ProGuard
modułu funkcji za pomocą
proguardFiles
, jak pokazano poniżej.
android.buildTypes {
release {
// You must use the following property to specify additional ProGuard
// rules for feature modules.
proguardFiles 'proguard-rules-dynamic-features.pro'
}
}
Zwróć uwagę, że te reguły ProGuard zostały scalone z regułami z innych modułów (w tym modułu podstawowego) w czasie kompilacji. Każda funkcja może określać nowy zestaw reguł, będą one stosowane do wszystkich modułów projektu aplikacji.
Wdrażanie aplikacji
Podczas tworzenia aplikacji z obsługą modułów funkcji możesz
wdrożyć aplikację na połączonym urządzeniu w normalny sposób, wybierając
Uruchom > Uruchom na pasku menu (lub kliknij Uruchom w
na pasku narzędzi).
Jeśli projekt aplikacji zawiera co najmniej 1 moduł funkcji, możesz: wybierz funkcje, które mają być uwzględniane przy wdrażaniu aplikacji, modyfikując istniejącą konfigurację uruchamiania/debugowania następujące:
- Wybierz Uruchom > Edytuj konfiguracje na pasku menu.
- W panelu po lewej stronie okna Konfiguracje uruchamiania/debugowania wybierz wybraną konfigurację aplikacji na Androida.
- W sekcji Funkcje dynamiczne do wdrożenia na karcie Ogólne sprawdź obok każdego modułu funkcji, który chcesz uwzględnić podczas wdrażanie aplikacji.
- Kliknij OK.
Domyślnie Android Studio nie wdraża aplikacji za pomocą pakietów aplikacji. do aplikacji. Zamiast tego IDE tworzy i instaluje na urządzeniu pliki APK zoptymalizowane pod kątem szybkości wdrażania, a nie rozmiaru pliku APK. Aby skonfigurować w Android Studio kompilowanie i wdrażanie Pliki APK i aplikacje błyskawiczne z pakietu aplikacji – zmień parametry uruchamiania/debugowania
Używanie modułów funkcji do niestandardowego przesyłania
Wyjątkową zaletą modułów funkcji jest możliwość dostosowania sposobu i czasu różne funkcje aplikacji są pobierane na urządzenia z Androidem 5.0. (poziom interfejsu API 21) lub wyższy. Aby na przykład zmniejszyć początkowy rozmiar pobieranego pliku możesz skonfigurować niektóre funkcje do pobrania zależnie od potrzeb na żądanie lub tylko na urządzeniach, które obsługują określone funkcje, takie jak możliwość robienia zdjęć i obsługi funkcji rzeczywistości rozszerzonej.
Chociaż domyślnie po przesłaniu aplikacji uzyskujesz wysoce zoptymalizowane pobieranie są bardziej zaawansowane, i dostosowywane do własnych potrzeb. wymagają dodatkowej konfiguracji i modularyzacji funkcji aplikacji za pomocą moduły funkcji. Oznacza to, że moduły funkcji zapewniają bloki do tworzenia obiektów modułowych, które można konfigurować pobrane w razie potrzeby.
Rozważmy aplikację, która pozwala użytkownikom kupować i sprzedawać towary w internecie platformie handlowej. Każdą z tych funkcji można połączyć w racjonalny sposób aplikacji w osobne moduły funkcji:
- Logowanie i tworzenie konta
- Przeglądanie rynku
- Wystawianie produktu na sprzedaż
- Przetwarzanie płatności
W tabeli poniżej znajdziesz różne opcje wyświetlania dostępne w ramach funkcji obsługi modułów i ich użycia do optymalizacji początkowego pobierania, rozmiaru przykładowej aplikacji z Marketplace.
Opcja dostawy | Działanie | Przykładowy przypadek użycia | Pierwsze kroki |
---|---|---|---|
Dostawa w czasie instalacji | Moduły funkcji, które nie mają skonfigurowanych opcji dostarczania
opisane powyżej są pobierane domyślnie podczas instalacji aplikacji. To jest
co jest bardzo ważne, ponieważ pozwala zastosować
stopniowo dodawać nowe opcje. Na przykład możesz skorzystać z modularyzacji
aplikacji, a także włączyć wyświetlanie na żądanie dopiero wtedy,
implementowanych funkcji pobierania na żądanie za pomocą biblioteki Play Feature Delivery.
Ponadto aplikacja może poprosić o odinstalowanie funkcji w późniejszym czasie. Jeśli więc podczas instalowania aplikacji potrzebujesz pewnych funkcji, a potem nie, możesz zmniejszyć rozmiar instalacyjny, wysyłając prośbę o usunięcie funkcji urządzenia. |
Jeśli aplikacja zawiera określone działania szkoleniowe, na przykład interaktywny przewodnik
kupna i sprzedaży produktów na platformie handlowej, możesz dodać informacje
podczas instalowania aplikacji.
Aby jednak zmniejszyć rozmiar zainstalowanej aplikacji, aplikacja może prosić o zgodę na usuń tę funkcję, gdy użytkownik ukończy trenowanie. |
Dostosuj aplikację za pomocą funkcji
bez konfigurowania zaawansowanych opcji dostarczania.
Aby dowiedzieć się, jak zmniejszyć rozmiar zainstalowanej aplikacji przez usunięcie niektórych modułów funkcji, których użytkownik może już nie potrzebować, przeczytaj Zarządzaj zainstalowane moduły. |
Dostawa na żądanie | Zezwala aplikacji na żądanie i pobieranie modułów funkcji zależnie od potrzeb. | Jeśli tylko 20% użytkowników aplikacji z Marketplace publikuje produkty na sprzedaż,
to dobra strategia zmniejszenia początkowego rozmiaru pobieranych plików dla większości użytkowników
jest umożliwienie robienia zdjęć, w tym
opis i udostępnianie produktu na sprzedaż.
pobierz. Oznacza to, że możesz skonfigurować moduł funkcji tak,
funkcję sprzedawania aplikacji, którą można pobrać tylko wtedy, gdy użytkownik pokazuje
zainteresowane oferowaniem przedmiotów na tej platformie.
Co więcej, jeśli po pewnym czasie użytkownik przestanie sprzedawać produkty, aplikacja może zmniejszyć rozmiar zainstalowanej aplikacji, wysyłając prośbę o odinstalowanie tej funkcji. |
Utwórz moduł funkcji i konfigurować na żądanie . Aplikacja może wtedy używać Play Feature Delivery Library, do których chcesz wysłać prośbę możesz go pobrać na żądanie. |
Wyświetlanie warunkowe | Umożliwia określanie określonych wymagań dotyczących urządzenia użytkownika, na przykład sprzętu. funkcje, język i minimalny poziom interfejsu API do określenia, czy jest pobierana podczas instalowania aplikacji. | Jeśli aplikacja z Marketplace ma globalny zasięg, może być konieczna obsługa formy płatności popularne tylko w niektórych regionach lub krajach. W aby zmniejszyć początkowy rozmiar pobieranej aplikacji, możesz utworzyć moduły funkcji do przetwarzania określonych form płatności instalując je warunkowo na urządzeniu użytkownika na podstawie zarejestrowanym regionem. | Utwórz moduł funkcji i skonfigurować dostarczanie warunkowe. |
Natychmiastowa dostawa | Aplikacja błyskawiczna w Google Play
umożliwia użytkownikom interakcję z aplikacją bez konieczności jej instalowania
na swoim urządzeniu. Zamiast tego mogą korzystać z aplikacji za pomocą funkcji „Wypróbuj
Teraz” w Sklepie Google Play lub przy utworzonym adresie URL. Ta forma
dostarczanie treści pomaga
zwiększać zaangażowanie
.
Szybkie dostarczanie pozwala korzystać z aplikacji błyskawicznej w Google Play, aby umożliwić użytkownikom natychmiastowe korzystanie z niektórych funkcji aplikacji bez instalacji. |
np. gry obejmujące kilka pierwszych poziomów lekkiego modułu funkcji. Możesz natychmiast włączyć ten moduł, aby aby użytkownicy mogli od razu zagrać w grę, korzystając z linku URL. Teraz” bez instalowania aplikacji. | Utwórz moduł funkcji i
konfigurować
natychmiastowa dostawa. Aplikacja może wtedy używać
Play Feature Delivery Library, do których chcesz wysłać prośbę
możesz go pobrać na żądanie.
Pamiętaj o modularyzowaniu funkcji aplikacji za pomocą funkcji to tylko pierwszy krok. Do obsługi Aplikacji błyskawicznych w Google Play rozmiar pobieranego modułu podstawowego aplikacji i danego modułu obsługującego aplikacje błyskawiczne; cecha musi spełniać rygorystyczne ograniczenia rozmiaru. Aby dowiedzieć się więcej, przeczytaj artykuł Włącz aplikacji błyskawicznej, zmniejszając rozmiar aplikacji lub gry. |
Tworzenie identyfikatora URI zasobu
Jeśli chcesz uzyskać dostęp do zasobu przechowywanego w module funkcji za pomocą
możesz wygenerować identyfikator URI zasobu modułu funkcji za pomocą
Uri.Builder()
:
Kotlin
val uri = Uri.Builder() .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE) .authority(context.getPackageName()) // Look up the resources in the application with its splits loaded .appendPath(resources.getResourceTypeName(resId)) .appendPath(String.format("%s:%s", resources.getResourcePackageName(resId), // Look up the dynamic resource in the split namespace. resources.getResourceEntryName(resId) )) .build()
Java
String uri = Uri.Builder() .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE) .authority(context.getPackageName()) // Look up the resources in the application with its splits loaded .appendPath(resources.getResourceTypeName(resId)) .appendPath(String.format("%s:%s", resources.getResourcePackageName(resId), // Look up the dynamic resource in the split namespace. resources.getResourceEntryName(resId) )) .build().toString();
Każda część ścieżki do zasobu jest tworzona w czasie działania, że po wczytaniu podzielonych pakietów APK wygenerowana jest prawidłowa przestrzeń nazw.
Sposób generowania identyfikatora URI obejmuje załóżmy, że masz aplikację moduły cech o tych nazwach:
- Nazwa pakietu aplikacji:
com.example.my_app_package
- Nazwa pakietu zasobów funkcji:
com.example.my_app_package.my_dynamic_feature
Jeśli resId
we fragmencie kodu powyżej odnosi się do zasobu surowego pliku o nazwie
„my_video” w module funkcji, powyższy kod Uri.Builder()
zwraca następujący wynik:
android.resource://com.example.my_app_package/raw/com.example.my_app_package.my_dynamic_feature:my_video
Aplikacja może użyć tego identyfikatora URI, by uzyskać dostęp do zasobu modułu funkcji.
Aby sprawdzić ścieżki w identyfikatorze URI, możesz użyć Analizatora plików APK aby sprawdzić plik APK modułu funkcji i określić jego nazwę:
Rysunek 2. Użyj Analizatora plików APK do sprawdzenia nazwy pakietu w skompilowanym pliku zasobów.
Uwagi dotyczące modułów funkcji
Dzięki modułom funkcji możesz zwiększyć szybkość kompilacji i pracę nad rozwojem aplikacji, a także w znacznym stopniu dostosować sposób dostarczania funkcji aplikacji, aby zmniejszyć jej rozmiar. Podczas korzystania z modułów funkcji pamiętaj jednak o pewnych ograniczeniach i przypadkach skrajnych:
- Instalacja co najmniej 50 modułów funkcji na 1 urządzeniu w ramach warunkowych lub z dostawą na żądanie może spowodować problemy z wydajnością. modułów dostępnych w momencie instalacji, nie są skonfigurowane jako zdejmowane, są automatycznie uwzględniane w bazie modułu i liczą się tylko jako jeden moduł funkcji na każdym urządzeniu.
- Ogranicz liczbę skonfigurowanych jako wymiennych modułów na czas instalacji z dostawą do maksymalnie 10. W przeciwnym razie czas pobierania i instalowania Twojej aplikacji może się wydłużyć.
- Obsługa tylko urządzeń z Androidem 5.0 (poziom interfejsu API 21) lub nowszym pobieranie i instalowanie funkcji na żądanie. Aby udostępnić funkcję do wcześniejszych wersji Androida, włącz Scalanie podczas tworzenia modułu funkcji.
- Włącz SplitCompat, aby aplikacja miała dostęp do pobranych modułów funkcji, które są dostarczane popytu.
- Moduły funkcji nie powinny określać działań w pliku manifestu za pomocą:
android:exported
– ustawiono natrue
Dzieje się tak, ponieważ nie ma gwarancji, że urządzenie pobierze moduł funkcji, gdy inna aplikacja spróbuje uruchomić działania. Aplikacja powinna też potwierdzić, że dana funkcja jest pobrane przed próbą uzyskania dostępu do jego kodu i zasobów. Więcej informacji: Zarządzanie zainstalowanymi modułami - Ponieważ Play Feature Delivery wymaga opublikowania aplikacji za pomocą pakietu aplikacji, sprawdź, czy znasz pakiet aplikacji znanych problemach.
Dokumentacja w pliku manifestu modułu funkcji
Przy tworzeniu nowego modułu funkcji w Android Studio IDE zawiera większość atrybutów manifestu wymaganych do działania modułu taki jak moduł funkcji. Dodatkowo niektóre atrybuty są wstrzykiwane przez systemu kompilowania, więc nie musisz ich określać ani modyfikować samodzielnie. W tabeli poniżej znajdziesz atrybuty pliku manifestu, które są ważne modułów funkcji.
Atrybut | Opis |
---|---|
<manifest |
To typowa
<manifest> . |
xmlns:dist="http://schemas.android.com/apk/distribution" |
Wskazuje nową przestrzeń nazw XML dist: , która jest
opisane poniżej. |
split="split_name" |
Gdy Android Studio tworzy pakiet aplikacji, zawiera:
za Ciebie. Nie należy więc dodawać ani modyfikować
.
Definiuje nazwę modułu określoną przez aplikację podczas wysyłania żądania modułu na żądanie przy użyciu biblioteki Play Feature Delivery. Jak Gradle określa wartość tego atrybutu: Domyślnie, gdy tworzysz moduł funkcji za pomocą Android Studio, IDE korzysta z tego, co określisz jako Nazwa modułu wskazujący, że moduł jest podprojektem Gradle. w plik ustawień Gradle.
Podczas tworzenia pakietu aplikacji Gradle używa ostatniego elementu:
ścieżkę podprojektu, w której chcesz wstawić ten atrybut manifestu w
pliku manifestu. Jeśli na przykład utworzysz nowy moduł funkcji w
katalogu |
android:isFeatureSplit="true | false"> |
Gdy Android Studio tworzy pakiet aplikacji, zawiera
ten atrybut. Nie należy więc dodawać
lub zmodyfikuj go ręcznie.
Określa, że ten moduł jest modułem funkcji.
pliki manifestu w module podstawowym i plikach APK konfiguracji,
pomiń ten atrybut lub ustaw go na |
<dist:module |
Ten nowy element XML definiuje atrybuty określające sposób jest spakowany i rozpowszechniany jako pliki APK. |
dist:instant="true | false" |
Określa, czy moduł ma być dostępny w
Aplikacja błyskawiczna w Google Play jako
aplikację błyskawiczną.
Jeśli aplikacja zawiera co najmniej 1 funkcję z obsługą wersji błyskawicznej modułów, musisz też natychmiast włączyć moduł podstawowy. W przypadku użycia funkcji Android Studio 3.5 lub nowszy, IDE robi to za Ciebie, gdy: utwórz aplikację błyskawiczną . Nie możesz ustawić tego elementu XML na |
dist:title="@string/feature_name" |
Określa tytuł modułu widoczny dla użytkowników. Przykład:
urządzenie może wyświetlić ten tytuł, gdy poprosi o pobranie
z potwierdzeniem.
Musisz dodać do tego tytułu zasób tekstowy
w |
<dist:fusing dist:include="true | false" />
|
Określa, czy moduł ma być uwzględniony w wielu plikach APK, które
kierować użytkowników na urządzenia z Androidem 4.4 (poziom interfejsu API 20) lub starszym.
Dodatkowo, gdy
użyj |
<dist:delivery> |
Obejmuje opcje umożliwiające dostosowanie wyświetlania modułów, jak pokazano poniżej. Pamiętaj, że każdy moduł funkcji może skonfigurować tylko jeden typ tych niestandardowych opcji dostarczania. |
<dist:install-time> |
Określa, że moduł powinien być dostępny w momencie instalacji. To jest
domyślne zachowanie dla modułów funkcji, które nie określają innego
typu niestandardowej opcji dostarczania.
Aby dowiedzieć się więcej o pobieraniu podczas instalacji, przeczytaj artykuł Skonfiguruj dostarczanie w czasie instalacji. Ten węzeł może również określać warunki ograniczające moduł do urządzeń spełniających określone wymagania, takie jak funkcje urządzenia, użytkownik kraju lub minimalnego poziomu interfejsu API. Więcej informacji: Skonfiguruj dostarczanie warunkowe. |
<dist:removable dist:value="true | false" /> |
Gdy zasada jest nieskonfigurowana lub ma wartość Gdy Domyślna wartość to Uwaga: ta funkcja jest dostępna tylko w przypadku korzystania z narzędzia Gradle na Androidzie wtyczki 4.2 lub pakietu SDK w wersji 1.0 z poziomu wiersza poleceń. |
</dist:install-time> |
|
<dist:on-demand/> |
Określa, że moduł powinien być dostępny jako na żądanie.
pobierz. Oznacza to, że moduł nie jest dostępny w momencie instalacji, ale
może poprosić o pobranie jej później.
Więcej informacji o pobieraniu na żądanie znajdziesz na stronie Skonfiguruj wyświetlanie na żądanie. |
</dist:delivery> |
|
<application
|
Jeśli moduł funkcji nie generuje plików DEX – czyli zawiera
żadnego kodu, który będzie później skompilowany do formatu DEX. Musisz wykonać
te czynności (w przeciwnym razie mogą wystąpić błędy czasu działania):
|
Dodatkowe materiały
Aby dowiedzieć się więcej o korzystaniu z modułów funkcji, zapoznaj się z tymi materiałami.
Posty na blogu
- Nowe funkcje, które pomogą Ci rozwijać, publikować i rozwijać swoją firmę w Google Play
- Najnowsze aktualizacje pakietów Android App Bundle, w tym interfejs API dodatkowych języków
- Patchwork Plaid – historia modularyzacji
Filmy
- Dostosowywanie wyświetlania dzięki pakietowi aplikacji i łatwe udostępnianie kompilacji testowych
- Nowe narzędzia do optymalizacji rozmiaru aplikacji i zwiększania liczby instalacji w Google Play
Warunki korzystania z usługi i bezpieczeństwo danych
Korzystając z biblioteki Play Feature Delivery lub korzystając z niej, zgadzasz się na Warunki korzystania z pakietu Play Core Software Development Kit. Przeczytaj i rozumieć wszystkie obowiązujące warunki i zasady, zanim skorzystasz z biblioteki.
Bezpieczeństwo danych
Biblioteki podstawowe Play to interfejs środowiska wykonawczego aplikacji w Sklepie Google Play. Dlatego gdy korzystasz z Play Core w swojej aplikacji, Sklep Play działa automatycznie. procesów, w tym przetwarzania danych w sposób zgodny z Warunki korzystania z usługi Google Play Poniżej znajdziesz informacje o tym, jak biblioteki Google Play obsługują dane w celach: przetwarzania konkretnych żądań z Twojej aplikacji.
Interfejs API dodatkowych języków
Gromadzenie danych o korzystaniu | Lista zainstalowanych języków |
Cel zbierania danych | Zebrane dane są wykorzystywane do dostarczania różnych wersji językowych aplikacji i zachowania zainstalowanych języków po jej aktualizacji. |
Szyfrowanie danych | Dane są zaszyfrowane. |
Udostępnianie danych | Dane nie są przesyłane do żadnych osób trzecich. |
Usuwanie danych | Dane są usuwane po ustalonym okresie przechowywania. |
Play Feature Delivery
Gromadzenie danych o korzystaniu |
Metadane urządzenia Wersja aplikacji |
Cel zbierania danych | Zebrane dane służą do udostępniania odpowiedniego modułu urządzeniu i zachowania zainstalowanych modułów po aktualizacji, utworzeniu kopii zapasowej i przywróceniu. |
Szyfrowanie danych | Dane są zaszyfrowane. |
Udostępnianie danych | Dane nie są przesyłane do żadnych osób trzecich. |
Usuwanie danych | Dane są usuwane po ustalonym okresie przechowywania. |
Zależy nam na maksymalnej przejrzystości, jednak to Ty ponosisz wyłączną odpowiedzialność podejmowania decyzji o tym, jak odpowiedzieć na formularz w sekcji Bezpieczeństwo danych w Google Play związanych ze zbieraniem i udostępnianiem danych użytkownika oraz zasadami w zakresie bezpieczeństwa.