Zmniejszanie rozmiaru aplikacji błyskawicznej

Aplikacja błyskawiczna w Google Play zapewnia zaawansowane, natywne funkcje dostępne na wyciągnięcie ręki . Użytkownicy mogą korzystać z aplikacji bez wcześniejszej instalacji. Dzięki temu i ich lepsze zaangażowanie. Aby aplikacja błyskawiczne ładowała się jak najszybciej jak w przypadku typowej strony mobilnej, musisz jednak utworzyć i wydajną aplikację błyskawiczną. Im mniejszy plik binarny aplikacji błyskawicznej, tym szybszy będzie się wczytywać płynniej i szybciej.

W tym dokumencie opisujemy sprawdzone metody zarządzania strukturą aplikacji i rozmiar binarny zapewniający płynne działanie aplikacji błyskawicznej. Możesz zastosować te same ustawienia z korzyścią dla aplikacji instalacyjnej.

Refaktoryzacja na wiele modułów funkcji

Największa poprawa rozmiaru pliku binarnego aplikacji następuje po refaktoryzacji do wielu modułów funkcji. Zacznij od funkcji podstawowej , a potem wyodrębniać powiązane tematycznie przepływy pracy do osobnych modułów funkcji. Przypisz do każdego modułu funkcji początkowe działanie i unikalny URL, aby użytkownicy może pomyślnie wykonać działanie modułu.

Podczas tworzenia modułów funkcji podstawowy moduł funkcji powinien być mały jak to tylko możliwe. Zwróć szczególną uwagę na te części aplikacji, które wymagają dostępu do bibliotek zależnych. Jeśli tylko jeden moduł funkcji korzysta z modułu w danej bibliotece, zaimportuj ją do samego modułu funkcji, a nie do z modułu funkcji. Pamiętaj, że jeśli chcesz opublikować aplikację błyskawiczną na dany określonego modułu funkcji, łączny rozmiar tej funkcji, i moduł funkcji podstawowych muszą być mniejsze niż 15 MB.

Sprawdzone metody

Podczas refaktoryzacji aplikacji pamiętaj o tych sprawdzonych metodach:

Użyj tej samej bazy kodu w przypadku obu typów aplikacji
Aby uprościć proces zarządzania projektami w aplikacji, użyj tego samego modułowa baza kodu do tworzenia zarówno aplikacji instalowanych, jak i aplikacji błyskawicznych.
Projektowanie pod kątem wielu modułów funkcji
Nawet jeśli Twoja aplikacja ma tylko jeden przepływ pracy i wymaga tylko jednej funkcji na razie warto jednak projektować je z myślą o wielu modułach funkcji. Dzięki temu możesz dodawać do aplikacji istniejące moduły, nie zmieniając do rozmiaru tego modułu.
Nie skupiaj się na początku limitu rozmiaru modułu funkcji
Limity rozmiaru modułów funkcji nie dotyczą lokalnie utworzonych plików binarnych. Dostępne opcje opublikuj też aplikację błyskawiczną na ścieżce testu wewnętrznego, która wymusza i ograniczyć 15 MB rozmiaru modułów funkcji. Tylko alfa oraz ścieżki produkcyjne wymuszają limit 15 MB.

Aktualizowanie zasobów aplikacji

Niektóre aplikacje, zwłaszcza te, które mają dłuższą historię baz kodu, zawierają zasobów, których pliki binarne Twojej aplikacji nie są już używane. Jeśli szukasz sposobów na do mniejszych modułów aplikacji, weź pod uwagę poniższe typowe źródła zbędnych źródeł. w kodzie.

Zmniejszanie rozmiaru pliku z obrazami

Możesz znacznie zmniejszyć całkowity rozmiar elementów rysowanych w aplikacji, używając WebP, w formacie PNG, a nie PNG. Aplikacja błyskawiczna w Google Play zapewnia pełną obsługę dla WebP, w tym przezroczystość i bezstratna kompresja, dzięki której pozostaje bez zmian.

Jeśli to możliwe, usuń wszystkie wymagania dotyczące zgodności wstecznej związane z używaniem innych plików PNG obrazów. Jeśli musisz używać obrazów PNG, umieść je w module, który służy do: utworzyć i zainstalować aplikację.

Usuń nieużywane języki

Jeśli Twoja aplikacja obsługuje wiele języków, ogranicz ich liczbę jak to możliwe. Ten krok jest szczególnie przydatny, jeśli korzystasz z „aplikacji kompatybilny Biblioteka, np. android.support.v7.appcompat. Ta biblioteka zawiera wiadomości w wielu językach, z których niektóre mogą nie są obsługiwane.

Aby dowiedzieć się więcej, przeczytaj, jak usunąć nieużywane alternatywy , a w szczególności nieużywanych języków.

Usuń dodatkowe pliki

Aplikacja może już nie używać niektórych zasobów zaimportowanych do do swojego projektu. Aby ułatwić usunięcie tych zasobów, w Android Studio dostępna jest funkcja kontroli Lint w tej konkretnej sytuacji. Aby użyć narzędzia, wykonaj te czynności:

  1. Naciśnij Control + Alt + Shift + I (Command + Alt + Shift + I w systemie Mac OS).
  2. W wyświetlonym oknie dialogowym wpisz "unused resources".
  3. Wybierz opcję Nieużywane zasoby, aby rozpocząć korzystanie z zasobów procesu inspekcji.

Jeśli w aplikacji pozostaną duże zasoby, zastanów się, czy możesz wypakuj je z aplikacji i pobierz jako samodzielne pliki po użytkownik zaczyna wchodzić w interakcję z aplikacją. Takie opóźnienie wczytywania obrazów zwykle wymaga zmiany kodu, ale może znacznie skrócić rozmiaru pliku aplikacji, pobierając tylko te zasoby, które użytkownik wyraźnie żądań.

Usuń nieużywane biblioteki

Rozwój aplikacji może wymagać zaskakujących zależności, zwłaszcza tych typów:

  • Biblioteki natywne: biblioteki zawierające kod natywny, Aplikacja nigdy się nie uruchamia.
  • Zależności przejściowe: biblioteki, do których została zaimportowana aplikacja. do różnych bibliotek.

Android Studio zawiera kilka przydatnych narzędzi do identyfikowania niepotrzebnych elementów, zależności w projekcie aplikacji:

Biblioteki zewnętrzne

Widok Projekt w Android Studio zawiera sekcję Biblioteki zewnętrzne.

Ta sekcja zawiera wszystkie biblioteki używane w aplikacji, w tym biblioteki natywne i wszystkich zależności pośrednich. W tym widoku poszukaj elementów nieużywanych lub zduplikowanych bibliotek, których Twoja aplikacja nie potrzebuje.

Analizator plików APK

Aby porównać pliki, możesz użyć Analizatora plików APK różne kompilacje, w tym kompilacje aplikacji błyskawicznej.

Gdy ustalisz, których bibliotek nie potrzebuje Twoja aplikacja, wyklucz je za pomocą dodaj wiersze podobne do tych poniżej w pliku kompilacji Gradle:

<feature_module>/build.gradle

Odlotowe

dependencies {
    implementation('some-important-but-large-library') {
        exclude group: 'com.example.imgtools', module: 'native'
    }
}

Kotlin

dependencies {
    implementation('some-important-but-large-library') {
        exclude(group = "com.example.imgtools", module = "native")
    }
}

Aby uzyskać więcej informacji o zmniejszeniu całkowitego rozmiaru importu zależności znajdziesz w przewodniku Gradle po zależności Zarządzanie.

Wdrażanie dostarczania zasobów do chmury

Jeśli chcesz jeszcze bardziej zmniejszyć rozmiar, konieczne może być dostarczanie zasobów do chmury.