Поставете 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, но не и изображение.