+2

Những phương pháp giảm size APK trong Android

Giới thiệu

Không người dùng nào muốn tải một APK lớn vì nó có thể tiêu tốn phần lớn băng thông mạng/wifi của user, quan trọng nhất là sẽ ảnh hưởng tới dung lượng của thiết bị của user.

Kích thước APK của bạn có tác động đến tốc độ tải ứng dụng, mức sử dụng bộ nhớ và mức tiêu thụ năng lượng.

Điều quan trọng là tối ưu hóa kích thước của ứng dụng vì điện thoại di động luôn là thiết bị hạn chế về bộ nhớ và không gian. Vì vậy, những cách khác nhau để chúng ta có thể cải thiện kích thước apk của mình trong Phát triển Android là gì? Hãy cùng tìm hiểu trong bài viết này nhé.

Tìm hiểu về Android App Bundles

Android App Bundle là một định dạng xuất bản bao gồm tất cả code và resource được biên soạn trong ứng dụng của bạn, và defers quá trình tạo và ký APK cho Google Play. Google Play sử dụng app bundle của bạn để tạo và cung cấp các file APK được tối ưu hóa cho mỗi cấu hình thiết bị, điều này giúp chỉ tải xuống mã nguồn và tài nguyên cần thiết cho từng thiết bị cụ thể khi chạy ứng dụng của bạn. Bạn không còn phải xây dựng, ký và quản lý nhiều APK để tối ưu hóa hỗ trợ cho các thiết bị khác nhau, và người dùng sẽ nhận được các bản tải xuống nhỏ hơn và được tối ưu hóa hơn.

App Bundles là định dạng xuất bản

Android App Bundles — File Targeting and Serving

  • Làm thế nào Android App Bundles hỗ trợ trong việc định rõ tệp tin? Đơn giản, hãy nói chúng ta có tài nguyên hdpi, xhdpi, xxhdpi trong ứng dụng của chúng ta. Dựa trên thiết bị mà ứng dụng đang được tải về, nếu đó là một thiết bị hdpi (ví dụ), chỉ có các tài nguyên từ thư mục hdpi sẽ được cài đặt trên thiết bị.
  • Nếu ứng dụng đang nhắm mục tiêu nhiều ngôn ngữ (tiếng Anh, tiếng Tây Ban Nha, tiếng Pháp, v.v.), chỉ các tài nguyên chuỗi cụ thể mới được tải xuống thiết bị.
  • Điều này giúp tiết kiệm không gian trên bộ nhớ của thiết bị.

Xây dựng Android App Bundle

  • Xây dựng Android App Bundle là một quy trình trực tiếp. Chỉ cần chọn tùy chọn "Build" từ menu Android Studio và chọn "Build Bundles".

Android Size Analyser

Để hiểu rõ hơn về những tệp tin nào thực sự chiếm nhiều không gian trong ứng dụng, hãy sử dụng plugin Android Size Analyzer trong Android Studio. Để cài đặt plugin

  1. Chọn File > Settings (hoặc trên Mac, Android Studio > Preferences .)
  2. Chọn phần Plugin ở bảng bên trái.
  3. Click vào Marketplace tab.
  4. Tìm kiếm plugin “Android Size Analyzer”.
  5. Nhấp vào nút Install cho plugin phân tích.

Khởi động lại IDE sau khi cài đặt plugin. Bây giờ, để phân tích ứng dụng, điều hướng đến Analyze > Analyze App Size từ thanh menu. Chúng ta sẽ nhận được một cửa sổ tương tự như sau:

Xóa Resource không sử dụng

Như đã thảo luận trước đó, kích thước của tệp APK ảnh hưởng đến tốc độ tải ứng dụng, lượng bộ nhớ mà nó sử dụng và lượng năng lượng mà nó tiêu thụ. Do đó, một trong những điều chính quan trọng có thể thực hiện để giảm kích thước APK là loại bỏ các tài nguyên không sử dụng trong ứng dụng.

Ngoài ra, khuyến nghị sử dụng đối tượng vẽ có thể co dãn (nhập các tài nguyên vector) thay vì các định dạng hình ảnh khác như PNG, JPEG, vv.

Việc sử dụng Vector Drawable là một trong những cách tốt nhất để giảm kích thước đáng kể.

Sử dụng Lint

Lint thực sự hỗ trợ tạo cảnh báo hoặc mã không sử dụng bên trong ứng dụng. Do đó, điều này có thể giúp loại bỏ những phần không cần thiết và từ đó giúp giảm kích thước của ứng dụng.

Giảm kích thước thư viện

Kiểm tra xem bạn có thể giảm kích thước khi sử dụng thư viện hay không. Ví dụ, chỉ sử dụng các thư viện cụ thể của Dịch vụ Google Play. Biên dịch chỉ những thứ cần thiết.

Tái sử dụng code

Lập trình hướng đối tượng đã giải quyết nhiều vấn đề trong thế giới lập trình. Hãy thử tái sử dụng mã càng nhiều càng tốt thay vì sử dụng mã lặp đi lặp lại. Mã lặp lại cũng dẫn đến việc tăng kích thước tệp, ảnh hưởng đến kích thước APK.

Nén PNG and JPEG files

Nếu việc sử dụng các tệp PNG và JPEG là bắt buộc trong dự án của bạn, bạn có thể nén chúng bằng các công cụ chất lượng hình ảnh như TinyPNG.

Trong hầu hết các ứng dụng, hình ảnh được sử dụng để truyền đạt thông điệp hoặc cải thiện trải nghiệm người dùng. Nhưng điều tệ nhất ở đây có thể là việc sử dụng quá nhiều hình ảnh có thể làm tăng kích thước của ứng dụng. Đảm bảo rằng các kỹ thuật Nén Hình ảnh được hiểu và thực hiện để giảm kích thước của APK trước khi phát hành ứng dụng lên cửa hàng Play.

Sử dụng định dạng tệp WebP

Như đã thấy trong hình ảnh được chia sẻ về plugin Android Analyser ở trên, một trong những đề xuất là chuyển đổi tệp PNG sang định dạng tệp WebP.

Sử dụng Proguard

Mỗi khi chúng ta xây dựng một dự án mới, chúng ta thường thấy đoạn mã sau trong tệp build.gradle cấp ứng dụng:

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

ProGuard tạo ra tác động sau đây đối với dự án của chúng ta,

  • Nó làm giảm kích thước của ứng dụng.
  • Nó loại bỏ các lớp và phương thức không sử dụng, góp phần vào giới hạn 64K lượt phương thức của một ứng dụng Android.
  • Nó làm cho ứng dụng trở nên khó khăn khi người khác thực hiện reverse code bằng cách làm tròn mã nguồn.

Tạo nhiều APK

Nếu chúng ta không sử dụng App Bundles, chúng ta có thể tuân theo cách truyền thống. Chúng ta có thể tạo nhiều tệp APK tương tự như Bộ Ứng dụng. Multiple APKs chủ yếu được sử dụng để tạo ra các APK cụ thể cho các mật độ màn hình và kiến trúc CPU khác nhau.

ShrinkResources

Giảm tài nguyên bất cứ nơi nào có thể. Sử dụng thuộc tính shrinkResources trong Gradle sẽ loại bỏ tất cả các tài nguyên không được sử dụng ở bất kỳ đâu trong dự án. Bật tính năng này trong tệp build.gradle cấp ứng dụng của bạn bằng cách thêm dòng sau:

buildTypes {
    release {
        ........
        shrinkResources true
        ........
    }
}

ResConfigs

Loại bỏ các tài nguyên đa ngôn ngữ không cần thiết bằng cách sử dụng resConfigs. Tất cả các thư viện hỗ trợ có thể có các thư mục đa ngôn ngữ cho các ngôn ngữ khác mà chúng ta không cần.

Bộ thu nhỏ tài nguyên Gradle chỉ loại bỏ các tài nguyên mà mã nguồn ứng dụng của bạn không tham chiếu đến, điều này có nghĩa là nó sẽ không loại bỏ các tài nguyên thay thế (đặc thù thiết bị/địa điểm) cho các cấu hình thiết bị khác nhau. Nếu cần, bạn có thể sử dụng thuộc tính resConfigs của plugin Android Gradle để loại bỏ các tệp tài nguyên thay thế mà ứng dụng của bạn không cần.

Đoạn mã sau đây cho biết cách giới hạn tài nguyên ngôn ngữ của bạn chỉ bằng tiếng Anh và tiếng Pháp:

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

Như đã thảo luận, việc có tài nguyên ngôn ngữ không được sử dụng chỉ làm tăng kích thước apk. Do đó điều quan trọng là phải loại bỏ các tập tin và tài nguyên không sử dụng.

DebugImplementation

Xóa mọi thư viện debug bạn có trong ứng dụng. Việc này có thể được thực hiện bằng cách sử dụng debugImplementation trong khi xây dựng testing debug apk.

debugImplementation 'com.amitshekhar.android:debug-db:1.0.1'

Sử dụng R8 để giảm kích thước APK

R8 shrinking là quá trình giảm lượng mã nguồn của ứng dụng, và thông qua quá trình này, kích thước APK tự động giảm đi. R8 thực hiện hầu hết công việc như Proguard. Tại sao chúng ta cần ưu tiên nó? Lý do là nó hoạt động với các quy tắc Proguard và co chấn mã nguồn một cách nhanh chóng trong khi cải thiện kích thước đầu ra.

Kết luận

Cảm ơn các bạn đã đọc tới đây. Hi vọng qua bài viết này có thể cung cấp một số cách giảm size APK cho ứng dụng Android của bạn.

Nguồn tham khảo: https://blog.mindorks.com/how-to-reduce-apk-size-in-android-2f3713d2d662/


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí