Tinder giảm 47% số lần khởi động nguội ứng dụng nhờ Trình phân tích cấu hình R8 mới
4 phút đọc
Tinder có sứ mệnh thúc đẩy và truyền cảm hứng cho những mối quan hệ thực sự bằng cách giúp những người độc thân thuộc mọi thế hệ mới gặp gỡ nhau một cách dễ dàng và vui vẻ. Tuy nhiên, khi toàn bộ mã nguồn của ứng dụng Android tăng về quy mô, độ phức tạp cũng tăng theo. Trước khi nỗ lực tối ưu hoá gần đây nhất, khoảng 70% ứng dụng chưa được tối ưu hoá, mang theo 17 tệp dex,trong đó có 3 tệp chỉ dành riêng cho việc khởi động. Mặc dù đã bật R8, nhưng phần lớn tiềm năng tối ưu hoá của công cụ này đã bị chặn do các quy tắc giữ lại và nhóm không thể xác định quy tắc cụ thể nào đang ngăn chặn việc tối ưu hoá. Để giảm thời gian khởi động và giảm số lỗi Ứng dụng không phản hồi (ANR) mà người dùng nhận thấy, Tinder đã sử dụng Trình phân tích cấu hình R8 mới để giải quyết những thách thức này.
Bằng cách sử dụng Trình phân tích cấu hình R8, Tinder đã xác định và loại bỏ thành công các trình chặn tối ưu hoá không mong muốn. Kết quả đạt được ngay lập tức và có tác động lớn: Tinder đã giảm 47% số lần khởi động nguội ứng dụng, giảm 28,98% kích thước tải xuống của ứng dụng (xuống còn 61,5 MB) và giảm 28% số lỗi ANR mà người dùng nhận thấy.
Trình phân tích cấu hình
Trình phân tích cấu hình R8 cho thấy khả năng tối ưu hoá của R8 bằng cách theo dõi điểm số về việc rút gọn, tối ưu hoá và làm rối mã nguồn để cho thấy những khía cạnh có thể tinh chỉnh. Báo cáo này cho thấy các quy tắc giữ lại rộng, thừa hoặc lỗi thời, bao gồm cả các quy tắc từ thư viện bên ngoài để bạn có thể phân tích tác động của quy tắc giữ lại và tinh chỉnh các quy tắc giữ lại.
Các chỉ số chính xuất hiện trong Trình phân tích cấu hình bao gồm:
- Điểm rút gọn: Tỷ lệ phần trăm mã có thể rút gọn bằng R8.
- Điểm tối ưu hoá: Tỷ lệ phần trăm mã có thể tối ưu hoá (ví dụ: nội tuyến phương thức, hợp nhất lớp ngang).
- Điểm làm rối mã nguồn: Tỷ lệ phần trăm các lớp, phương thức và trường mà R8 có thể đổi tên để giảm kích thước.
Sử dụng trình phân tích để kiểm tra các quy tắc giữ lại và tác động của các quy tắc đó:
- Tìm quy tắc chung: Thu hẹp phạm vi của các quy tắc trên toàn gói hạn chế tính năng tối ưu hoá R8, đồng thời xác định các lớp, phương thức và trường cụ thể bị loại trừ khỏi quá trình rút gọn, tối ưu hoá và làm rối mã nguồn.
- Tinh chỉnh quy tắc: Chỉ nhắm đến các lớp/phương thức cụ thể cần phản ánh để tối ưu hoá
- Xoá các quy tắc thừa: Xoá các quy tắc không khớp với lớp, phương thức hoặc trường nào trong bản dựng hiện tại.
- Quy tắc giống hệt nhau: Quy tắc giữ lại giống hệt nhau là quy tắc nhắm đến cùng một lớp, trường và phương thức hoặc nội dung khai báo trùng lặp của quy tắc giữ lại trong cùng một tệp quy tắc giữ lại hoặc trên các tệp quy tắc giữ lại.
- Tìm quy tắc bị gộp: Dọn dẹp các quy tắc cụ thể đã được bao gồm trong các cấu hình rộng hơn.
- Xác định thư viện có vấn đề: Kiểm tra tác động tối ưu hoá kết hợp của các quy tắc giữ lại của bên sử dụng thư viện đã hợp nhất từ tất cả thư viện.
Để hỗ trợ bạn sử dụng Trình phân tích cấu hình R8 bằng các công cụ dựa trên tác nhân, chúng tôi đã phát hành kỹ năng Trình phân tích R8. Kỹ năng này tối ưu hoá quy trình phát triển tự động bằng cách tóm tắt báo cáo của Trình phân tích cấu hình R8 để hiển thị các chỉ số chính: điểm tối ưu hoá, điểm làm rối mã nguồn và điểm rút gọn. Công cụ này cũng nêu bật 5 quy tắc giữ lại có tác động lớn nhất, giúp bạn hiểu rõ những yếu tố cản trở việc tối ưu hoá mã.
Xác định các yếu tố cản trở việc tối ưu hoá
Trước khi tích hợp Trình phân tích cấu hình R8, ứng dụng Android của Tinder đã gặp phải nợ kỹ thuật đáng kể do cơ sở mã chưa được tối ưu hoá nhiều. Việc thiếu tối ưu hoá này trực tiếp làm giảm trải nghiệm người dùng, khiến người dùng gặp phải tình trạng khởi động nguội chậm
Để giải quyết những vấn đề này, nhóm Tinder đã sử dụng Trình phân tích cấu hình R8 để kiểm tra toàn diện cấu hình R8 của họ. Công cụ phân tích cho thấy mức độ tối ưu hoá của R8 đối với toàn bộ mã nguồn là khoảng 28%, ngay cả khi sử dụng chế độ đầy đủ của R8. Nhờ Trình phân tích cấu hình R8, Tinder xác định được rằng một thư viện nội bộ đang áp dụng một quy tắc giữ lại rộng và không có phạm vi.
# Prevents optimization in all public classes along with all of their public and protected members -keep public class * { public protected *; }
Quy tắc "rộng" này vô tình bao gồm nhiều phần phụ thuộc trên toàn bộ ứng dụng, ngăn chặn việc tối ưu hoá trong một số lượng lớn các lớp. Vì quy tắc quá bao quát đã ngăn chặn sự cố trong thời gian chạy, nên các nhà phát triển thường bỏ lỡ việc thêm quy tắc mới cho các tính năng mới sử dụng tính năng phản chiếu, khiến các vấn đề tiềm ẩn ngày càng nghiêm trọng theo thời gian.
Bằng cách tận dụng thông tin chi tiết do Trình phân tích cấu hình R8 cung cấp, nhóm đã theo dõi và phân tích thành công các lớp cụ thể chịu ảnh hưởng của quy tắc giữ lại rộng từ thư viện. Nhóm ngay lập tức phát hiện ra rằng quá trình tối ưu hoá bị chặn trong các lớp lớn hơn, không được gọi động, nơi R8 có thể thực hiện tối ưu hoá. Việc tinh chỉnh quy tắc giữ lại cụ thể này đã giúp Tinder khai thác các chức năng tối ưu hoá quan trọng, gỡ rối các cấu hình cũ và cải thiện đáng kể các chỉ số tối ưu hoá tổng thể, với điểm R8 tăng từ 28% lên 50%, giúp tăng hiệu suất ngay lập tức trên toàn bộ ứng dụng. Nhóm Tinder đang tích cực nỗ lực để cải thiện hơn nữa con số này.
- Tải nhanh hơn: Nhóm đã giảm được 47% số người dùng gặp phải tình trạng khởi động nguội chậm.
- Kích thước nhỏ hơn: Kích thước tải ứng dụng xuống giảm từ 86,6 MB xuống còn 61,5 MB (giảm 28,98%).
- Cải thiện độ ổn định: Tỷ lệ lỗi Ứng dụng không phản hồi (ANR) mà người dùng nhận thấy giảm từ 0,35% xuống 0,28%, gần bằng với số trung vị của các ứng dụng ngang hàng
- Giảm độ phức tạp: Tổng số tệp DEX đã giảm từ 17 xuống còn 11, trong đó chỉ có 2 tệp khởi động.
Ngoài những cải tiến về hiệu suất kỹ thuật, việc tăng cường tối ưu hoá ứng dụng còn trực tiếp mang lại mức tăng trưởng kinh doanh rõ rệt và mức độ tương tác cao hơn của người dùng, đặc biệt là ở những thị trường có nguồn lực hạn chế.
- Mức độ tương tác theo khu vực: Những quốc gia có thiết bị RAM thấp chiếm phần lớn thị trường là những quốc gia có mức tăng tương tác lớn nhất. Việc giảm tỷ lệ ANR là yếu tố then chốt để cải thiện mức độ tương tác ở thị trường rộng lớn này.
- Mức tăng về mức độ tương tác: Mức độ tương tác đã tăng 3% kể từ khi tăng mức độ tối ưu hoá ứng dụng.
Bảo vệ hiệu suất trong tương lai bằng tính năng tích hợp liên tục
Việc giải quyết vấn đề rút gọn mã không chỉ là một giải pháp khắc phục một lần mà còn đòi hỏi bạn phải liên tục theo dõi. Lấy cảm hứng từ những lợi ích to lớn đạt được thông qua Trình phân tích cấu hình R8, nhóm Android của Tinder đã chủ động tích hợp tính năng giám sát tối ưu hoá vào quy trình làm việc hằng ngày để ngăn chặn tình trạng hồi quy.
Nhóm của Tinder đã thêm một công việc mới vào quy trình CI/CD để báo cáo các thay đổi trong số liệu thống kê tối ưu hoá, nhờ đó mọi người có thể thấy mức độ đóng góp của họ ảnh hưởng đến việc tối ưu hoá. Khi tư vấn cho các nhà phát triển khác đang cân nhắc việc tích hợp cấu hình R8, nhóm nhấn mạnh tầm quan trọng của việc kiểm tra các phần phụ thuộc nội bộ. Mặc dù hầu hết các thư viện bên thứ ba phổ biến đều có các quy tắc được xác định rõ ràng, nhưng các dự án nội bộ của công ty được coi là "ổn định" thực sự có thể đưa ra các quy tắc rộng rãi ảnh hưởng tiêu cực đến việc tối ưu hoá tổng thể.
Những điểm chính cần ghi nhớ
Đối mặt với một toàn bộ mã nguồn chưa được tối ưu hoá và một lượng lớn tệp DEX, Tinder cần một cách để kiểm tra rõ ràng các quy tắc rút gọn của ứng dụng. Trình phân tích cấu hình R8 cung cấp công cụ lý tưởng cần thiết để xác định các quy tắc thư viện nội bộ quá rộng, các lớp chịu ảnh hưởng của quy tắc giữ lại, giúp nhóm tự tin tối ưu hoá toàn bộ mã nguồn của mình. Nhờ đó, Tinder đã giảm thành công gần một nửa số lượt khởi động nguội, giảm hơn 28% kích thước tệp APK và xây dựng một nền tảng lành mạnh, hiệu quả hơn cho người dùng. Nhóm của Tinder cũng đang tích cực nỗ lực để cải thiện hơn nữa những con số này.
Cách sử dụng Trình phân tích cấu hình R8
Bạn có thể sử dụng Trình phân tích cấu hình R8 và các tính năng độc lập của trình này dựa trên phiên bản Trình bổ trợ Android cho Gradle (AGP) hiện tại:
1. Bản phát hành AGP 9.3: Trình phân tích cấu hình R8 được tích hợp đầy đủ và phát hành cùng với AGP 9.3. Khi chạy bản phát hành R8, báo cáo sẽ được tạo trong thư mục `build/outputs/mapping/release/configanalyzer.html`.
2. Tác vụ Gradle độc lập: AGP 9.3 giới thiệu một tác vụ Gradle độc lập cho phép bạn tạo báo cáo của trình phân tích mà không cần chạy bản phát hành đầy đủ, giúp cung cấp vòng hồi tiếp nhanh hơn nhiều khi tinh chỉnh các quy tắc giữ lại trên máy:
./gradlew :app:analyzeReleaseR8Config
Báo cáo được tạo vào lúc build/reports/r8/r8-config-analyzer-release.html.
3. Cách sử dụng trên các phiên bản AGP cũ: Nếu đang sử dụng phiên bản thấp hơn AGP 9.3, bạn không cần di chuyển toàn bộ phiên bản AGP để phân tích cấu hình. Bạn có thể cập nhật riêng phiên bản R8 lên 9.3.7-dev trở lên bằng cách làm theo hướng dẫn Thay thế R8 trong AGP. Để tạo báo cáo trên máy, hãy chạy bản dựng với thuộc tính được chỉ định:
./gradlew assembleRelease -Dcom.android.tools.r8.dumpkeepradiushtmltodirectory=<output_directory>
Để tìm hiểu thêm, hãy xem tài liệu về Trình phân tích cấu hình R8.
-
Nghiên cứu điển hìnhGrab là siêu ứng dụng hàng đầu Đông Nam Á, cung cấp dịch vụ giao hàng, di chuyển và dịch vụ tài chính cho hàng triệu người dùng tại 8 quốc gia thông qua một ứng dụng duy nhất.
Ajesh Pai, Nguyen Van Minh, Tracy Agyemang • Thời gian đọc: 5 phút -
Nghiên cứu điển hìnhWhatsApp là nền tảng nhắn tin lớn nhất thế giới, phục vụ hàng tỷ người dùng trên toàn cầu. Đây là công cụ giao tiếp mặc định cho mọi người ở nhiều khu vực, giúp kết nối người dùng thông qua dịch vụ nhắn tin riêng tư, đáng tin cậy và bảo mật.
Niharika Arora, Tracy Agyemang, Mayank Jain • Đọc trong 8 phút -
Nghiên cứu điển hìnhKarrot là một ứng dụng thị trường ngang hàng theo từng khu vực cụ thể, do cộng đồng xây dựng, cho phép người dùng mua, bán và trao đổi các mặt hàng với những người dùng đã xác minh khác. Kể từ khi ra mắt tại Hàn Quốc vào năm 2015, nền tảng này đã mở rộng sang các thị trường toàn cầu và thu hút hơn 43 triệu người dùng đã đăng ký.
Thomas Ezan, Tracy Agyemang • Thời gian đọc: 2 phút
Nhận thông tin chi tiết mới nhất về hoạt động phát triển Android trong hộp thư đến của bạn hằng tuần.