Omówienie Play Feature Delivery

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 i versionName: 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 funkcji build.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:

  1. Wybierz Uruchom > Edytuj konfiguracje na pasku menu.
  2. W panelu po lewej stronie okna Konfiguracje uruchamiania/debugowania wybierz wybraną konfigurację aplikacji na Androida.
  3. 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.
  4. 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ę:

Zrzut ekranu pokazujący Analizatora plików APK sprawdzający zawartość skompilowanego pliku zasobów.

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 na true 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 MyAppProject/features/ oraz określono „funkcja_dynamiczna1” jako nazwę modułu, IDE dodaje ':features:dynamic_feature1' jako podprojekt w Twoim settings.gradle. Podczas tworzenia pakietu aplikacji Gradle, a następnie wstrzykiwanie <manifest split="dynamic_feature1"> w pliku manifestu modułu.

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 false.

<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 true podczas konfigurowania <dist:on-demand/> Nadal możesz jednak poprosić o pobieranie na żądanie modułów funkcji z obsługą wersji błyskawicznych w postaci aplikacji błyskawicznych za pomocą biblioteki Play Feature Delivery. Gdy użytkownik pobierze i zainstaluje Twoją aplikację, urządzenie pobiera i instaluje moduły funkcji aplikacji błyskawicznej, wraz z podstawowym plikiem APK.

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 module_root/src/source_set/res/values/strings.xml modułu podstawowego .

<dist:fusing dist:include="true | false" />
</dist:module>
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 bundletool do generowania plików APK z pakietu aplikacji, tylko moduły funkcji, które ustawiły tę właściwość na true są dołączone do uniwersalnego pliku APK – monolitycznego pliku APK zawierającego kod i zasoby dla wszystkich konfiguracji urządzeń obsługiwanych przez Twoją aplikację.

<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ść false, narzędzie bundletool łączy moduły czasu instalacji do modułu podstawowego podczas generowania dzielonych plików APK z pakietu. Ze względu na to, że w efekcie połączenia będzie mniej dzielonych plików APK, może poprawić wydajność aplikacji.

Gdy removable ma wartość true: czas instalacji moduły nie będą połączone z modułem podstawowym. Ustaw na true, jeśli zechcesz w przyszłości odinstalować moduły. Pamiętaj jednak, że skonfigurowanie zbyt wielu modułów, które da się odłączyć, może zwiększyć czas jej instalacji.

Domyślna wartość to false. Wystarczy ustawić tę opcję w pliku manifestu, jeśli chcesz wyłączyć fusing dla z modułu funkcji.

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
android:hasCode="true | false">
...
</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):
  1. Ustaw android:hasCode na "false" w w pliku manifestu modułu funkcji.
  2. Do pliku manifestu modułu base dodaj:
    <application
      android:hasCode="true"
      tools:replace="android:hasCode">
      ...
    </application>
    

Dodatkowe materiały

Aby dowiedzieć się więcej o korzystaniu z modułów funkcji, zapoznaj się z tymi materiałami.

Posty na blogu

Filmy

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.