Thống kê lượng method dùng trong file .apk

Đây là bài chia sẻ đầu tiên của mình trên viblo, trong loạt bài đầu tiên này mình muốn chia sẻ với mọi người cách mình sử dụng thư viện trong android cũng như việc tối ưu từng thư viện sử dụng.Trong quá trình code việc sử dụng thư viện do các lập trình viên khác viết là hoàn toàn bình thường và tiện lợi, tuy nhiên việc sử dụng quá nhiều thư viện thường gay ra rất nhiều khó khăn trong việc quản lí code, tối ưu code , cũng như maintain fixbug sau này do đó cần tối ưu được các thư viện ngay từ khi mới sử dụng sao cho hợp lí nhất. Với kinh nghiệm của mình trong loạt bài về lib mình sẽ chia sẻ 1 số bài như sau :

  • Dex method count : công cụ thống kê mothod, cấu trúc code
  • Tối ưu thư viện google play service.
  • Thư viện xử lí ảnh.
  • Thư viện download ….

Bài đầu tiên mình sẽ giới thiệu về tool mình rất hay dùng dex mothod count.

Giới thiệu chung :

Dex method count là một tool khá đơn giản thống kê số lượng method sử dụng trong 1 file apk sau khi được build xong. Có lẽ nhiều bạn thắc mắc: “tại sao lại thống kê số lượng method để làm gì?”, hoặc “method cần thì dùng thôi, thống kê làm gì nhỉ?” , hiện nay Android đa số được dev trên ide Android studio đã suport khá tốt việc build -multi-dex thế nhưng lỗi

lại là 1 lỗi ám ảnh tôi (và có lẽ rât nhiều dev android sử dụng eclip). Việc xử lí bug trên khá phức tạp vì phải optimize lại source code, giảm tải lượng method để eclip có thể build okie chính vì vậy tool method count này hỗ trợ dev rất nhiều trong việc thống kê, cũng như hệ thống lại source code của mình.

Hướng dẫn cài đặt và sử dụng

( Các bạn có thể lấy source code cũng như hướng dẫn khá chi tiết trên github tại địa chỉ https://github.com/mihaip/dex-method-counts ).

  • B1 : các bản tải suorce code trên githup : https://github.com/mihaip/dex-method-counts
  • B2 : Các bạn tạo 1 project java trên eclip.
  • B3 : copy toàn bộ source code trong folder : /src của thư mục bạn vừa tải vào thư mục /src của project bạn vừa tạo.
  • B4 : export project thành file runable (.jar)
  • B5 : mở cmd tại thư mục bin của java/jdk. sau đó thực hiện câu lệnh để hiện số lượng method :

ví dụ :

Khi đó trên màn hình cmd của bạn sẽ hiện ra thống kê số lượng method

  • Ngoài ra bạn có các lựa chọn :
    • –count-fields: Thay đếm method chuyển sang đếm fields
    • –include-classes: Treat classes as packages and provide per-class method counts. One use-case is for protocol buffers where all generated code in a package ends up in a single class.
    • –package-filter=…: chỉ đếm package có bắt đầu bằng..
    • –max-depth=…: giới hạn độ sâu cây method
    • –filter=[all|defined_only|referenced_only]: Whether to count all methods (the default), just those defined in the input file, or just those that are referenced in it. Note that referenced methods count against the 64K method limit too.
    • –output-style=[flat|tree]: hiển thị kết quả dạng cây thư mục hay thẳng hàng.

Ví dụ

Ngoài ra bạn có thể thay đổi 1 số logic trong file main.java, output.java để có thể xuất kết quả ra file hoặc thay đổi cấu trúc cây method như bạn muốn.(vấn đề custom này mình nghĩ các bạn tự khám phá sẽ vui và thú vị hơn rất nhiều :). )

Kết luận

Có công cụ này trong tay giờ bạn thử tạo 1 project android nhỏ chỉ có 1 view đơn giản, trong đó import 2 bộ thư viện sau : android suport.v7, và google play service . (Thử dùng tool này xem 2 thư viện trên ngốn của bạn bao nhiêu method nhé, so sánh với con số 65k method max mà eclip có thể build cho bạn, sẽ có 1 bất ngờ lớn đó :D.) Bất ngờ ra sao, và giải quyết nó như thế nào mình sẽ giải đáp kĩ hơn ở bài sau :Tối ưu thư viện google play service . Rất mong các bạn ủng hộ :D.

ITZone via Viblo

Chia sẻ bài viết ngay