Намерете начин да намалите размера на apk

необходимост

Същата функция, колкото по-малък е apk, толкова по-добре и потребителят има по-голяма мотивация за изтегляне

Разберете състава на apk

  • classes.dex: java байт код файл, генериран след компилация на изходния код на java
  • resources.arsc: компилиран файл за оформление
  • AndroidManifest.xml
  • активи: Директорията може да съхранява някои конфигурационни файлове
  • Поддиректорията armeabi под директорията lib съхранява някои файлове или пакети от jar
  • Информацията за подписа се съхранява в директорията META-INF, за да се осигури целостта на apk пакета и сигурността на системата
  • res: apk ресурс за изображения

Разберете процеса на генериране на apk

стъпки

Спомагателни инструменти за анализ

  • nimbledroid: може да знае използването на паметта на приложението, използването на мрежата, въвеждане/извеждане на диска, размера на файла и други данни, които NimbleDroid счита за важни;
    • Официален уебсайт: https: //nimbledroid.com/ (Няма нужда да се преобръща стената, достъпът е по-бавен)
    • регистриран
    • Влизам
    • Качете apk
    • Ефектна картина: "Bubble News_File Analysis.png"

Стъпки за отслабване

0. Начален размер -> 19039kb
1. Включете minifyEnabled (включете замъгляването, изтрийте безполезни java файлове), прегледайте обърканите бележки Proguard използвайте увагу_били -> 18447kb

Бележка Proguard

Грешка при преобразуване на типа, трябва да се обърне внимание на използването на Gson и други подобни

Има взаимодействие между js и локалния код в webview, пазете Bridge да не се бърка

Пакетите на трети страни не са объркани

Общи пакети на трети страни

2. Включете shrinkResources (премахнете безполезни ресурси) и премахнете проекта Временно изображение -> 17121kb

3. Изтрийте безполезни езикови ресурси -> намалете около 100kb

4. Използвайте компресия със загуба на tinypng

  • TinyPNG използва интелигентна технология за компресиране със загуби (чрез намаляване на броя на цветовете в изображението, за да намали данните, необходими за съхраняване на изображението), за да намали размера на PNG изображението. Този вид компресия има малък ефект върху картината, но може значително да намали размера на картината и да запази алфа прозрачността на PNG
  • Тъй като TinyPNG компресира PNG изображения в 8-битови PNG (вместо в 24-битови), степента му на компресия е много висока, поне 50% или повече степен на компресия, някои дори могат да достигнат 70%, а компресираното изображение и оригиналът Човешкото око трудно виждам разликата.

  • Официален уебсайт: http://tinypng.com/(Не е необходимо да се преобръща стената, по-бавен достъп)
  • Употреба 1: Плъзнете, компресирайте, изтеглете
  • Използвайте метод втори (клиент на tinypng, неуспех на теста): използвайте външен инструмент, кандидатствайте за код за оторизация, използвайте TinyPngWrapper (http://blog.csdn.net/visualcatsharp/article/details/17137405)
  • Използвайте метод трети (ps плъгин, не е тестван): http: //www.zcool.com.cn/article/ZMTE2MTQw.html

5. За големи непрозрачни изображения jpg ще има значително предимство пред размера на png. Много разумен избор е да използвате jpg в областта на показване на големи изображения като стартови страници, активни страници и др. -> 15615kb
* Използвайте фабричен формат за преобразуване
* Разберете обичайните формати на изображения: http: //baike.baidu.com/link? Url = MGe8RiFIw8NjAnrE7 ETrr_LTm3y9fRdcjKAa2TSKLiknlGx6vopk8TyzfuFIPaTze9oM4Ljn4lPOCfgIaRC5KCK # 16

6. Използвайте webp формат -> 15541
* Разберете формата на webp: http: //isux.tencent.com/introduction-of-webp.html (WebP Explore the way)
* Той се поддържа от Android 4.0+, но не поддържа прозрачност, докато Android 4.2.1+ не поддържа показване на webp с прозрачност, обърнете специално внимание, когато го използвате
* Използвайте фабричен формат за преобразуване
* webp използва ниска версия, съвместима с NDK (не е тествана): http: //blog.csdn.net/jiwangkailai02/article/details/17015451

7. Изтрийте или заменете някои безполезни снимки в пакета за съвместимост (v4 v7 v13)
* Изтриване на drawable-ldrtl: е съкращението на layout-direction-right-to-left, което означава, че оформлението е отдясно наляво, главно за адаптиране към арабски. Това трябва да е API17, което е нова функция на Android 4.2

  • Заменете безполезни изображения в v4, v7 и v13_optional
    • Можете да използвате изображения 1x1 пиксела, за да замените някои графични ресурси в v4, v7, v13

8. Обърнете внимание, за да изтриете голямата картина, използвана в библиотеката на трета страна aar_note ситуацията

9. Така че изтриване на библиотека: Препоръчително е действителната работна конфигурация да поддържа само so файловете под armable и x86, което е компромисно решение.

10. Чрез DrawableCompat в пакета v4, завършете селекторния ефект чрез схемата за оцветяване, справка

11. Използвайте шейпфайлове, за да замените картинки

12. Използвайте набор от снимки за изрязване на снимки, обърнете се към клиента на Meituan, набор от drawable-xhdpi, използван от Meituan

13. Поставете файла so в Интернет или в sdcard, вижте https://segmentfault.com/a/1190000004062899

14. Използвайте векторна графика с vectorDrawable (проблеми със съвместимостта, налични само след 5.0)