Карлос Міллан

28 вересня 2018 р. 7 хв читання

Я люблю Android, я роками користуюся цією чудовою операційною системою Google, у мене є безліч різноманітних додатків у Google Play Store, і є з чого вибрати (я більше не висловлююся з моєї точки зору). Однією з речей, на яку я дивлюся перед завантаженням програми, є її розмір, оскільки з такою великою кількістю програм вам не вистачає місця для зберігання, і вам потрібно вирішити, яку програму ви використовуєте менше, щоб видалити її. Іншими міркуваннями є те, що багато разів у нас немає під рукою мережі Wi-Fi, і нам доводиться завантажувати додаток із тарифним планом, внаслідок чого ми швидко закінчуємо дорогоцінний МБ, який ми маємо (тепер це вже не безлад, тому що точки розміщення або пункти безкоштовного Wi-Fi збільшуються в різних частинах, таких як торгові центри, транспортна станція тощо).

файлу

Я бачив цю статтю англійською мовою, і хочу поділитися нею з вами іспанською мовою для тих, хто досі не справляється з північноамериканською мовою. Вкажіть кілька порад щодо зменшення розміру наших програм, які ми пишемо, щоб усі могли ними насолоджуватися. В кінці залишаю першоджерело.

ProGuard - провідний підсилювач байт-кодів Java. Оптимізуйте байт-код і видаліть невикористані інструкції. Перейменуйте класи, поля та методи, використовуючи безглузді короткі імена, що робить ваш код більш безпечним, ніж зворотне проектування. Робить ваші програми Java та Android на 90% меншими та на 20% швидшими. Ви можете отримати більше інформації про програму https://www.guardsquare.com/en/proguard.

Щоб увімкнути proguard, ми робимо наступне:

Відкрийте файл build.gradle в Android Studio і додайте рядки: minifyEnabled true і shrinkResources true.

Але пам’ятайте, що процес зменшення коду уповільнює час складання. Отже, ви повинні використовувати його лише тоді, коли збираєтеся запустити свій додаток, або якщо ви віддаєте його на тестування.

minifyEnabled відповідає за зменшення файлів коду (наприклад, Java). Це головна особливість ProGuard і допомагає зменшити ваш APK, а також ускладнити зворотне проектування.

shrinkResources Застосовується для видалення невикористаних файлів ресурсів (таких як зображення та інші активи). Наприклад, якщо ви будуєте з бібліотекою Android, але ви не використовуєте деякі зображення в цій бібліотеці Android, вони не будуть включені в остаточну збірку.

2. Векторні малюнки

Як випливає з назви, векторні малюнки базуються на векторній графіці, на відміну від растрової графіки. Це схоже на файл SVG. В Android Vector Drawable вони створюються за допомогою XML-файлів. Перш ніж додати Vector Drawable в Android SDK, розробник повинен був створити кілька версій зображень з різною роздільною здатністю екрану. Це займає більше часу для створення додаткових активів і споживає більше місця, що збільшує розмір Apk.
Тепер немає необхідності розробляти зображення різного розміру для mdpi, hdpi, xhdpi тощо. У програмі Vector Drawable вам потрібно створити зображення лише один раз як файл xml, і ви можете масштабувати його для всіх точок на дюйм та для різних пристроїв. Це також не економить простір, але також спрощує обслуговування. Ви можете дізнатися, як створити векторні малюнки на http://www.androidtutorialshub.com/android-vector-drawable-example-using-appcompat-support-library/

3. Служби Google Play

У версіях 6.5 Служб Google Play вам потрібно було скомпілювати весь пакет API у вашому додатку. У деяких випадках це ускладнювало підтримку кількості методів у вашому додатку (включаючи API-інтерфейси, бібліотечні методи та власний код) у межах 65 536.
Починаючи з версії 6.5, ви можете вибірково компілювати API служб Google Play у своїй програмі. Наприклад, щоб включити лише API Google Map та Android Wear, замініть наступний рядок у файлі build.gradle:

за допомогою цих рядків:

компілювати 'com.google.android.gms: play-services-maps: 10.2.0'

компілювати 'com.google.android.gms: play-services-wearable: 10.2.0'

Тут ви можете побачити більше про API служб Google Play:

Налаштування служб Google Play | API Google для Android | Розробники Google

Оскільки кожна програма використовує сервіси Google Play по-різному, ви самі вирішуєте, яке саме місце у вашому додатку буде ...

developers.google.com

Часто один APK створюється для підтримки всіх цільових пристроїв, коли це можливо, що може призвести до дуже великого APK через файли, необхідні для підтримки множинної щільності екрану або двійкових інтерфейсів додатків (ABI). Одним із способів зменшити розмір вашого файлу .apk є створення декількох файлів .apk, які містять файли для певних ABI або щільності екрану. Gradle може створювати окремі файли .apk, які містять лише конкретний код та ресурси для кожної щільності або ABI. Щоб дізнатися, як налаштувати свою збірку для генерації декількох файлів .apk, перейдіть за цим посиланням https://developer.android.com/studio/build/configure-apk-splits.html

5. Оптимізуйте зображення у форматі PNG

Чудовим способом покращити продуктивність програми є оптимізація розміру зображень. Менші розміри зображень вимагають менше використання пам'яті, дискового простору, часу завантаження, а головне, зменшення розміру Apk. Зображення PNG можна зменшити у розмірі файлу, не втрачаючи якості. Для цього використовуйте такий інструмент, як OptiPNG або PNGCrush. Обидва вони чудово підходять для зменшення розміру файлів PNG, забезпечуючи при цьому якість зображення. Ви також можете скористатися деякою послугою оптимізації зображень TinyPng.

6. 9-патч-зображення

9-патч PNG - це спеціальний формат для PNG, який можна використовувати для фонів. Дев'ять зображень патчів особливо корисні при розробці кнопок. Замість того, щоб визначити звичайний растровий малюнок, який використовуватиметься як фон, 9-патч визначає дев'ять сегментів для кожного з чотирьох кутів, чотирьох країв та центру. Для отримання додаткової інформації про 9-патч-зображення https://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch
а щоб дізнатися, як намалювати 9-патч-інструмент, включений редактор WYSIWYG, включений до Android Studio https://developer.android.com/studio/write/draw9patch.html

7. Рекомендовані мультимедійні формати

8. Повторне використання ресурсів

Повторне використання речей - це, мабуть, одна з перших важливих оптимізацій, яку ви вивчаєте, починаючи розробку на мобільних пристроях. Це навіть не зменшить розмір вашого apk, але це також заощадить час для того, щоб розробляти одне і те ж знову і знову.
Наприклад, ви можете включити окремий ресурс для варіантів зображення, таких як тоновані, затінені або повернені версії того самого зображення. Але рекомендується повторно використовувати той самий набір ресурсів та налаштовувати їх за потреби під час виконання.
Android надає кілька утиліт для зміни кольору об’єкта, використовуючи атрибути android: tint і tintMode в Android 5.0 (рівень API 21) і вище. Для нижчих версій платформи використовуйте клас ColorFilter.
У наведеному нижче фрагменті коду наведено приклад перетворення стрілки "розгорнути" в піктограму стрілки "згортання", просто повернувши оригінальне зображення на 180 градусів:

9. Видалити інформацію про налагодження

Настійно рекомендується видалити з програми всі функції налагодження. Додаток, як правило, не бачить і не використовує ці дані, а операційна система Android не вимагає від нього запуску програми. Отже, інформація про налагодження просто витрачає простір і її потрібно видалити.

10. Lint Tool

Proguard оптимізує лише код Java. На жаль, це не виглядає з боку ресурсів. Наприклад, якщо у вас є зображення з назвою icon_arrow.png у res/drawable, і воно ніде не використовується, Proguard просто видаляє посилання в класі R, але замість цього зберігає пов'язане зображення.
Інструмент Lint, статичний аналізатор коду, що входить до складу Android Studio, виявляє ресурси у папці res/folder, на які ваш код не посилається. Коли інструмент «пух» виявляє потенційно невикористаний ресурс у вашому проекті, він друкує повідомлення, як у наступному прикладі.

Готовий, сподіваюся, ці поради дуже корисні для вас. Незабаром з’являться інші статті про Android Studio.