So sánh kích thước file APK khi build bằng Flutter, React Native, Kotlin và Java
Bài đăng này đã không được cập nhật trong 6 năm
Chào mọi người, hôm nay nhân dịp lên đọc được một bài phân tích trên Medium khá hay đã trả lời thắc mắc của mình bấy lâu, đó là "không biết kích cỡ của file apk khi build bằng một số các framework như React Native, Flutter thì có khác gì so với việc sử dụng cách truyền thống dùng code native như Java hay Kotlin không?". Mình xin dịch lại bài viết này cho mọi người cùng đọc nhé.
Bạn có thể đọc bài viết gốc tại đây: https://android.jlelse.eu/comparing-apk-sizes-a0eb37bb36f
Như các bạn đã biết, hiện nay có rất nhiều cách để có thể tạo ra một ứng dụng mobile ngoài việc sử dụng các công cụ và ngôn ngữ chính thức của hệ điều hành đó (Java, Kotlin cho Android, Obj-C hay Swift cho iOS) như sử dụng React Native của Facebook, Electrode Native của Walmart, Ionic Framework, Unity, và mới nhất là flutter.io framework vừa được chính Google công bố.
Có bao giờ bạn thắc mắc là những thư viện và frameworks này có ảnh hưởng như nào đến kích thước ứng dụng của bạn?
Ta hãy cùng phân tích các file apk sau khi được build bằng các công cụ này nhé. Ứng dụng ta sử dụng để test sẽ khá đơn giản, chỉ chứa một title ở phía trên và một đoạn text ở giữa màn hình như ảnh dưới đây:
- Trong bài test này, tôi sẽ build ứng dụng này bằng 4 cách đó là sử dụng Java, Kotlin, React Native và Flutter. (Android API 27)
- File apk này được build release sử dụng Android Studio với Java và Kotlin, sử dụng cli (dòng lệnh) với React Native và Flutter.
- Sử dụng cấu hình proguard mặc định.
- Các file apk này sẽ được phân tích sử dụng thông qua chức năng
Analyze APK
của Android Studio.
Java (539 KB)
Bắt đầu với cách đơn giản nhất - Java
.
Như bạn cũng có thể đoán được, đây là kích thước nhỏ nhất với chỉ có Java, Android framework và với chỉ một dependency là Android Support Library
để tạo ra ứng dụng.
Bạn có thể thấy ở dưới đây phần android support chiếm khá nhiều dung lượng trong file:
Ta cũng có thể giảm dung lượng của file này hơn nữa bằng cách bỏ phần dependency này đi và sử dụng Activity
thay vì AppcompatActivity
.
Kotlin (550 KB)
Tiếp theo đó là Kotlin
.
Một file apk dùng Kotlin sẽ chứa toàn bộ những thành phần mà chúng ta đã thấy ở file apk build bằng Java, ngoài ra thêm một phần nhỏ chứa các câu lệnh của Kotlin.
React Native (7 MB)
Nếu bạn là một web developer và muốn làm một ứng dụng mobile sử dụng javascript thì React Native chính là sự lựa chọn cho bạn.
Ngoài ra nó cũng khá là hữu ích nếu bạn muốn làm lại một tính năng mà không cần phải release lại app cho những thay đổi nhỏ.
File apk tạo ra bởi React Native có một vài class trong file classes.dex
chưa tới 12193 referenced methods
Nó cũng thêm vào một vài native dependencies trong thư mục lib
cho x86
hoặc armeabi-v7a
. Tổng dung lượng 2 phần đó lên tới 6.4MB.
Flutter.io (7.5 MB)
App được build bởi Flutter có chứa phần C/C++ và Dart VM chiếm phần lớn file apk.
Ứng dụng chạy trực tiếp bằng tập lệnh này và không dùng trình phiên dịch.
Tổng Kết
Trong mỗi cách viết ứng dụng thì đều có ưu và nhược điểm, việc chọn cách nào thì phụ thuộc vào từng trường hợp và tuỳ thuộc vào công ty của bạn.
Bạn cũng có thể kết hợp các framework này lại để tạo là một phần riêng cho ứng dụng của bạn.
Ví dụ, nếu bạn muốn thử sử dụng React Native và bạn muốn nó có thể chạy được trên cả Android và iOS thì bạn có thể sử dụng React Native hoặc Flutter. Và nếu bạn chỉ muốn tập trung vào Android và làm cho kích cỡ của ứng dụng của mình nhỏ nhất có thể thì Java hoặc Kotlin là một sự lựa chọn đúng đắn
Cảm ơn các bạn đã theo dõi bài viết!
All rights reserved