Zmniejszanie rozmiaru aplikacji

Niewielki rozmiar aplikacji ma bezpośredni wpływ na powodzenie pobierania, zwłaszcza na rynkach wschodzących, gdzie połączenia sieciowe na urządzenia są słabe lub słabe. Może to prowadzić do spadku wskaźników korzystania z aplikacji, co z kolei zmniejsza zasięg i zasięg Twoich odbiorców. Jest jednak kilka sposobów na zmniejszenie rozmiaru aplikacji.

Sprawdzone metody

Prześlij aplikację jako pakiet Android App Bundle

Najprostszym sposobem na natychmiastowe zmniejszenie rozmiaru aplikacji podczas publikowania w Google Play jest przesłanie jej w postaci pakietu Android App Bundle. Jest to nowy format publikowania, który obejmuje cały skompilowany kod i zasoby aplikacji oraz opóźnia generowanie plików APK i podpisywanie ich w Google Play.

Zmniejsz rozmiar kodu środowiska wykonawczego

Poszukaj kodu, którego aplikacja nie używa w czasie działania, np. dużych klas czy kodu generowanego automatycznie. Optymalizatory kodu, np. R8, pomagają optymalizować i zmniejszać rozmiar kodu, ale nie są w stanie poradzić sobie z kodem chronionym przez stałe czasy działania. Zastąp flagi kontrolne stałymi podczas kompilacji, aby jak najlepiej wykorzystać różne narzędzia do optymalizacji. Możesz włączyć zmniejszanie kodu i zasobów w pliku konfiguracji Gradle:

android {
    buildTypes {
        getByName("release") {
            isMinifyEnabled = true
            isShrinkResources = true
        }
    }
}

Usuń niepotrzebne układy

Scal nieużywane układy z niewielkimi zmianami w interfejsie i usuń zbędne układy, aby zmniejszyć ogólny rozmiar kodu aplikacji. Dodatkowo, gdy tylko jest to możliwe, układy i widoki są renderowane dynamicznie. Dzięki temu unikniesz rysowania szablonów statycznych i zastosowania alternatywnych układów bez dodatkowych nakładów technicznych.

Ponowna ocena rzadko używanych funkcji

W szczególności zoptymalizuj je pod kątem Androida (wersja Go), wyłączając funkcje o niskiej liczbie aktywnych użytkowników dziennie. Może to być na przykład usunięcie złożonych animacji, dużych plików GIF czy innych estetycznych dodatków, które nie są niezbędne do skutecznego działania aplikacji.

Skorzystaj z dynamicznego przesyłania

Play Feature Delivery wykorzystuje zaawansowane możliwości pakietów aplikacji, które umożliwiają dostarczanie niektórych funkcji aplikacji warunkowo lub pobieranie na żądanie. Do niestandardowego przesyłania możesz używać modułów funkcji. Wyjątkową zaletą modułów funkcji jest możliwość dostosowania sposobu i czasu pobierania różnych funkcji aplikacji na urządzenia z Androidem 5.0 (poziom interfejsu API 21) lub nowszym.

Zmniejsz rozmiar ciągu tekstowego możliwego do translacji

Za pomocą właściwości resConfigs Gradle na Androida możesz usuwać alternatywne pliki zasobów, których Twoja aplikacja nie potrzebuje. Jeśli używasz biblioteki, która zawiera zasoby językowe (np. AppCompat lub Usługi Google Play), aplikacja będzie zawierać wszystkie przetłumaczone ciągi tekstowe wiadomości z biblioteki niezależnie od jej tłumaczenia. Jeśli chcesz zachować tylko języki, które są oficjalnie obsługiwane przez Twoją aplikację, możesz je określić za pomocą właściwości resConfig. Wszystkie zasoby dla niewymienionych języków zostaną usunięte.

Aby ograniczyć dostęp do zasobów językowych do wersji angielskiej i francuskiej, możesz edytować defaultConfig w ten sposób:


android {
    defaultConfig {
        ...
        resConfigs "en", "fr"
    }
}

Użyj tłumaczenia selektywnego

Jeśli dany ciąg nie jest widoczny w interfejsie aplikacji, nie musisz go tłumaczyć. Ciągi tekstowe na potrzeby debugowania, komunikatów o wyjątkach lub adresów URL powinny być literałami ciągów znaków w kodzie, a nie zasobami.

Na przykład nie tłumacz adresów URL.

<string name="car_frx_device_incompatible_sol_message">
  This device doesn\'t support Android Auto.\n
  &lt;a href="https://support.google.com/androidauto/answer/6395843"&gt;Learn more&lt;/a&gt;
</string>

Poznasz znaki &lt; i &gt, ponieważ są to znaki zmiany znaczenia w językach < i >. Są one tutaj potrzebne, ponieważ jeśli umieścisz tag <a> w tagu <string>, kompilator zasobów Androida usunie je, ponieważ nie rozpozna tagu. Oznacza to jednak, że tagi HTML i adres URL tłumaczysz na 78 języków. Zamiast tego możesz usunąć kod HTML:

<string name="car_frx_device_incompatible_sol_message">
         This device doesn\'t support Android Auto.
</string>

Połącz natywne pliki binarne z typowymi zależnościami

Jeśli Twoja aplikacja ma różne implementacje JNI (Java Native Interface) z typowymi zależnościami, różne pliki binarne zwiększają rozmiar pliku APK przy użyciu nadmiarowych komponentów. Możesz połączyć kilka plików binarnych JNI w jeden plik binarny JNI, rozdzielając pliki Java i JNI. Może to znacznie zmniejszyć rozmiar pliku APK.