Này các cậu! Tôi hy vọng rằng mọi người đang làm tốt.
Vì vậy, hôm nay tôi quyết định chia sẻ một trong những phương pháp phát hành ứng dụng
quan trọng nhất mà tôi đã học được trong hành trình phát triển ứng dụng Android của mình.
Nó có thể giúp bạn tiết kiệm rất nhiều thời gian và cũng tiết kiệm cho người dùng cuối một
số MB và bạn sẽ có được tỷ lệ tải xuống hàng ngày được cải thiện.
Hãy bắt đầu nhanh bằng cách cho thấy tầm quan trọng của việc tối ưu hóa ứng dụng
Android của bạn. Kích thước thực sự quan trọng, đặc biệt là đối với các ứng dụng nhắm
mục tiêu đến người dùng ở thị trường các nước đang phát triển (đặc biệt là Sudan).
Một nghiên cứu gần đây cho thấy gần 70% người dùng cân nhắc kích thước ứng dụng trước
khi cài đặt chúng.
Về mặt kỹ thuật, tác động đang được thể hiện đối với tốc độ tải của ứng dụng, dung lượng bộ nhớ sử dụng và lượng điện năng tiêu thụ.
Trước tiên, bạn nên tìm hiểu tình hình phân phối kích thước ứng dụng hiện tại của mình trên các thành phần ứng dụng, vì sẽ dễ dàng hơn trong việc lập kế hoạch các bước tối ưu hóa của bạn…
Để bắt đầu, bạn phải phân tích bản dựng ứng dụng của mình bằng cách sử dụng công cụ Analyze APK trên Android Studio, công cụ này chấp nhận cả định dạng .apk và .aab
Giờ đây, bạn đã có tầm nhìn rõ ràng về mức độ đóng góp của mỗi thành phần trên ứng
dụng vào kích thước xây dựng ứng dụng, vì vậy… Hãy bắt đầu
1. Code Shrinking
Remove Unused Libraries
Trình phân tích sẽ giúp bạn biết chính xác cách "triển khai" libs đang đóng góp vào kích
thước bản phát hành ứng dụng vì sẽ dễ dàng hơn khi đưa ra quyết định loại bỏ những
phần không sử dụng.
Use Proguard
Vì vậy, từ bây giờ, tôi sẽ giả sử bạn đã xóa tất cả các lib không cần thiết mà bạn không
muốn, bạn chỉ giữ lại những lib cần thiết, nhưng một số lib vẫn có kích thước đáng kể? Đây
là một trong những vấn đề mà Proguard ở đây để giải quyết.
Proguard có 2 mục tiêu chính:
1- Thu nhỏ: Xóa mã không sử dụng trong ứng dụng của bạn
2- Code obfuscation: Đổi tên / rút ngắn tên của các lớp, phương thức, biến, v.v., điều này
cũng rất được khuyến khích vì lý do bảo mật!
Chỉ cần thay đổi minifyEnabled thành true trong tệp build.gradle của bạn.
Những lưu ý khi sử dụng Proguard:
Đảm bảo rằng bạn biết mình sẽ làm gì, điều này có thể dẫn đến ứng dụng bị hỏng nếu không được sử dụng đúng cách, bạn phải thiết lập các quy tắc phù hợp bằng cách kiểm tra từng yêu cầu quy tắc của thư viện bên thứ ba Proguard.
Nếu bạn không sử dụng các tên được tuần tự hóa trên các mô hình phản hồi HTTP của mình, bạn nên loại trừ các mô hình này để Proguard xử lý.
Tìm hiểu thêm về Proguard: https://developer.android.com/studio/build/shrink-code
2. Optimize app resources
USE Vector Drawable
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ể.
Để bắt đầu sử dụng Vector Drawable, bạn chỉ muốn làm việc với UI Sheets, sau đó bạn chỉ cần nhập tất cả các biểu tượng cần thiết ở định dạng SVG, sau đó sử dụng Vector Asset sẽ chuyển đổi nó từ SVG sang Vector Drawable.
USE WEBP Images format
Định dạng hình ảnh WebP là định dạng ưu tiên cho các ứng dụng Android đang được Google phát triển và rất khuyến khích.
Điều này có thể được thực hiện đơn giản bằng cách chuyển đổi nội dung hình ảnh hiện có từ PNG / JPG thành WEBP vì nó có thể tối ưu hóa kích thước ứng dụng ở mức thấp nhất lên đến 60% kích thước ban đầu trong khi vẫn giữ chất lượng hình ảnh gần như tương tự, trong trường hợp của tôi, một trong những các trường hợp sử dụng chính: là chuyển đổi hình ảnh toàn màn hình mà có thể được sử dụng nhiều nhất trên màn hình giới thiệu ứng dụng.
Compress Images
Đôi khi bạn sẽ thấy ứng dụng của mình vẫn đang sử dụng PNG, vì vậy bạn nên nén
chúng bằng các công cụ chất lượng hình ảnh như TinyPNG.
Ship only the languages your app is using
Hãy xem các thành phần ứng dụng ở trên, theo mặc định, hệ thống xây dựng đang gửi
nhiều thư mục giá trị “localized resources”cho mỗi ngôn ngữ, điều này sẽ ảnh hưởng đến
kích thước ứng dụng bằng cách nào đó bằng cách xóa tất cả tài nguyên ngôn ngữ không
sử dụng.
Bạn chỉ phải ghi đè các cấu hình resconfigs mặc định bằng cách thêm các resconfigs phù
hợp như được hiển thị bên dưới vào phần cấu hình mặc định của bạn.
Shrink resources
Thao tác này sẽ xóa tất cả các tài nguyên không được sử dụng trong dự án, áp dụng nó bằng cách thêm shrinkResources true vào loại bản phát hành của bạn.
Use Lottie Animation instead of GIF files
Sử dụng Gifs cho các cảnh đồ họa hoạt hình trong SplashScreen là một việc làm rất tệ thay vì kích thước khổng lồ của nó, nó tiêu tốn nhiều tài nguyên bộ nhớ hơn và mang lại chất lượng rất tệ, bạn nên tránh điều đó, thay vào đó, bạn nên sử dụng hoạt ảnh Lottie.
Bạn có thể tìm thấy một vài hoạt ảnh tạo sẵn trực tuyến hoặc tốt hơn là yêu cầu nhà thiết kế UI / UX của bạn tùy chỉnh một cái phù hợp bằng cách sử dụng Adobe Effects, sau đó hoạt ảnh có thể được xuất ở định dạng JSON nhỏ có thể được hiển thị bằng cách sử dụng thư viện hoạt ảnh Lottie.
https://github.com/airbnb/lottie-android
3. Advanced Tips and Tricks
Woah Xin chúc mừng! Bạn đã cố gắng tối ưu hóa kích thước ứng dụng của mình một cách
tốt nhất để phần thưởng bạn sẽ tìm thấy dưới đây là hai Pro tips.
Điều đầu tiên sẽ cho bạn biết cách tốt hơn để cung cấp ứng dụng của bạn cho người dùng cuối.
Cái thứ hai, đó là một mẹo hay mà tôi học được từ một bài báo về kỹ thuật TikTok bằng cách
sử dụng một công cụ do ByteDance viết.
Implementing Multi-Module app architecture: Dynamic Feature:
- Case Scenario: GO
Tại GO, chúng tôi đang triển khai điều này trong 2 mô-đun khác nhau mà không nhất thiết
phải được vận chuyển trong gói tải xuống ban đầu từ cửa hàng Google play, chúng tôi đã
sử dụng để đóng gói hai mô-đun, Mô-đun xếp hạng và trình xem trước ảnh toàn cảnh 360 “xử
lý ảnh toàn cảnh 360 cho xem trước trạm xe buýt ”vì chúng phụ thuộc vào một vài biểu
tượng cảm xúc hoạt hình và tệp nhị phân chiếm gần 2,5 MB, hai tính năng này có thể được
tải xuống sau sau khi người dùng cài đặt thành công ứng dụng cơ sở.
https://play.google.com/store/apps/details?id=com.goteclabs.customer
- Case Scenario: Mobile Games
Tôi đang phát triển một số trò chơi dành cho thiết bị di động và tôi đang xem xét một lý do
chính đã giúp tôi rất nhiều để đạt được hơn 1 triệu lượt tải xuống là kích thước tải xuống
trò chơi, vâng, chắc chắn đó là một lợi thế cạnh tranh, trường hợp ở đây là tại một số thời
điểm tôi đã sử dụng tính năng trò chuyện thoại và kết quả của việc triển khai nó sẽ ảnh
hưởng đến kích thước trò chơi tổng thể khoảng gần 70% vì việc triển khai phát trực tuyến
bằng giọng nói phụ thuộc vào các tệp nhị phân nặng, thách thức ở đây là giải quyết vấn đề
này mà không phải hy sinh kích thước tải xuống ban đầu của trò chơi như Tôi đã đề cập ở
phần giới thiệu vì nó sẽ ảnh hưởng ngay đến tốc độ tải xuống hàng ngày.
https://play.google.com/store/apps/details?id=klma.online.ayman
Việc triển khai mô-đun Dynamic Feature nhằm giải quyết những vấn đề này.
Tôi sẽ không đi sâu vào chi tiết triển khai của nó, nhưng điểm chính ở đây, tính năng động của bạn sẽ chỉ được yêu cầu tải xuống một lần vào thời điểm người dùng cuối cần.
Resources obfuscation: using aabResGuard:
AabResGuard là một công cụ xáo trộn tài nguyên được sử dụng bởi ứng dụng xã hội hàng đầu Tiktok.
Điều này có nghĩa là hoạt động giống như Proguard, nhưng sự khác biệt chính ở đây là Proguard chỉ quan tâm đến bytecode thực thi chứ không phải tài nguyên ứng dụng “/res”
Hehehe, Về tối ưu hóa kích thước ứng dụng của bạn, đây sẽ là gạch đầu dòng cuối cùng của bạn!
Nó sẽ giúp bạn giảm kích thước ứng dụng của mình đối với một số KB và trong hầu hết
các trường hợp, không quá 200 KB, tốt hơn nên đề cập rằng nó cũng rất được khuyến khích
vì lý do bảo mật, tôi đã triển khai nó trên nhiều dự án mà tôi đang thực hiện.
Nguồn: https://github.com/bytedance/AabResGuard
Results?
Trước một vài tháng, tôi tham gia một công ty khởi nghiệp ở UAE có tên là Aleem, sau khi hoàn thành quá trình chuyển giao vì việc triển khai mã được viết tốt, tôi quyết định bắt đầu tối ưu hóa kích thước tải xuống hiện tại từ gần 8MB lên 5 MB, điều này đã tăng tốc đáng kể lượt tải xuống ứng dụng từ 500+ đến 10K+ trong vài tuần.
Tôi đảm bảo bạn bằng cách làm theo các bước sau có thể giúp bạn rất nhiều để giữ cho ứng dụng của bạn ở mức trung bình 5 ~ 10 Mb kích thước tải xuống.
Hẹn gặp lại các bạn trong những bài viết tiếp theo 😄❤️
Cảm ơn bạn!
Nhận xét
Đăng nhận xét