Поставете APK файловете си на диета

В предишната статия говорихме за това как да намалим размера на приложение за Android, като премахнем неизползваните ресурси. В блога на Кирил Мотие намерих много интересна статия с няколко съвета за намаляване на размера на APK и оптимизиране на кода в производството. След това продължаваме да превеждаме важните части.

12 м. (2413 думи.)

поставете

Александър кмет

Учен по данни и компютърен учен. Създател на този блог.

В предишната статия говорихме за това как да намалим размера на приложение за Android, като премахнем неизползваните ресурси. В блога на Кирил Мотие Намерих много интересна статия с няколко съвета за намаляване на размера на APK и оптимизиране на кода в производството. След това продължаваме да превеждаме важните части:

Не е тайна, че приложенията заемат все повече място. Първите приложения използваха няколко 2MB в началните версии на Android. Сега е доста често да се виждат приложения, които тежат между 10 и 20MB. Това увеличаване на размера е пряка последица както от очакванията на потребителите, така и от придобиването на опит от разработчиците. Основните причини за увеличаването на размера на APK файлове са:

  • Още dpi категории ([l | m | tv | h | x | xx | xxx] dpi).
  • Еволюцията на платформата Android, инструментите за разработка и екосистемата на библиотеката.
  • Непрестанните очаквания на потребителите за по-висококачествени графични интерфейси (UI).
  • и т.н...

Публикувайте леки приложения в Магазин за игри добра практика е, че всеки добър програмист трябва да обърне внимание при проектирането на приложение. Защо?.

  • Първо, защото е синоним на проста, поддържаема и надеждна кодова база.
  • Второ, защото програмистите обикновено предпочитат да останат под текущия лимит на Play Store, 50MB на APK ако не искате да използвате допълнителни файлове за изтегляне.
  • И накрая, защото живеем в свят на ограничения:
    • Ограничена честотна лента.
    • Ограничено дисково пространство.
    • и т.н.

Колкото по-малък е размерът на APK, толкова по-бърза е скоростта на изтегляне, толкова по-малко е разочарованието на потребителите и най-важното е по-добрите оценки.

В много (ако не всички) случаи нарастването на размера е задължително, за да отговори на изискванията и очакванията на потребителите. въпреки това, Кирил е убеден, че теглото на APK нараства като цяло по-бързо от очакванията на потребителите. Всъщност повечето приложения в Магазин за игри те заемат два пъти или повече, отколкото би трябвало. Някои техники/правила, които могат да се използват за намаляване на крайния размер на приложението, ще бъдат разгледани по-долу.

Преди да направите каквато и да е оптимизация, е важно да разберете APK формата. Най-общо казано, а APK това е архивиран файл, съставен от няколко файла в компресирана форма. Като програмист можете лесно да видите съдържанието му, като го разархивирате с командата unzip .

Това е APK след стартиране на разархивиране:

Повечето от горното съдържание трябва да са познати на всеки програмист. Той отразява структурата на проекта, която може да се наблюдава по време на разработката./активи,/lib,/res, AndroidManifest.xml. classes.dex съдържа компилираната версия (dex) на кода в Java и resources.arsc предварително компилираните ресурси, например двоичен XML (стойности, XML чертежи и т.н.).

Защото APK това е прост архивиран файл, това означава, че има два размера, компресиран и декомпресиран размер. И двете са важни, но в тази статия ще се спрем на компресирания размер. Колкото по-малък е APK, толкова по-малка е разархивираната версия.

Това може да се направи с най-различни техники. Тъй като всяко приложение е различно, няма абсолютно правило за "отслабване" до a APK. както и да е APK Състои се от 3 компонента, върху които можем да действаме:

  • Изходен код на Java.
  • Ресурси/активи
  • Роден код

Съветите по-долу са да се сведе до минимум количеството пространство, използвано от всеки от тези компоненти. По този начин минимизирате размера на APK файла.

Имайте код с добра хигиена

Вероятно е много очевидно, но навикът да имате чист код е първата стъпка за намаляване на размера на крайното приложение. „Познавайте кода си като гърба си.“ Отървете се от всички неизползвани библиотеки на зависимости. Правете кода по-добър ден след ден. Почиствайте го непрекъснато. Фокусирането върху поддържането на чиста и актуална кодова база обикновено е най-добрият начин за създаване APK файлове по-малък, съдържащ само това, което е строго необходимо за приложението.

Постигането на това обикновено е по-лесно, когато стартирате проект от нулата. По-трудно е срещу по-стария проект. Всъщност проектите с голям исторически опит са склонни да се справят с мъртви и/или практически безполезни парчета код. За щастие има някои инструменти, които да ни помогнат да изперем ...

Стартирайте Proguard

Proguard е изключително полезен инструмент, който замъглява, оптимизира и свива кода по време на компилация. Една от основните му характеристики за намаляване на размера е Разтърсването на дървета. Proguard като цяло той преминава през всички директории с код, за да открие парчета, които не се използват. Всичко, което намерите (т.е. неизползваните), се премахва от APK финал. Proguard също така преименувайте полета, класове и интерфейси, за да направите кода възможно най-лек.

Както се досещате Proguard той е изключително полезен и ефективен. Но с голяма сила идва и голямата отговорност. Много разработчици помислят Proguard много досаден инструмент, защото по подразбиране той разбива приложения, които разчитат силно на отражението. Разработчиците трябва да конфигурират Proguard за да посочите в кои класове, полета и т.н. можете да извършвате оптимизации.

Използвайте Lint широко

Proguard работи от страна на Java. За съжаление, той не работи от страна на ресурсите. В резултат на това, ако изображение my_image в res/drawable не се използва, Proguard просто премахнете вашата референция в клас R, но не и изображение.