Cơ bản về Android App Bundle - định dạng format upload mới lên Google Play
Android App Bundle là định dạng format upload mới lên Google Play. Android App Bundle gồm tất cả source code và resource nhưng chưa tạo thành APK và chưa được ký bởi keystore.
1. Giới thiệu
Android App Bundle là định dạng format upload mới lên Google Play. Model để đóng gói cho Google Play mới này được gọi là Dynamic Delivery
. Dynamic Delivery sẽ sử dụng app bundle nhận được rồi sẽ tạo và tối ưu lại APK phù hợp với mỗi device android. Người dùng lúc này chỉ cần tải source code và resource cần thiết để chạy app.
Lúc này developer sẽ không cần phải build, ký app và quản lý các loại devices khác nhau; người dùng sẽ nhận được app với dung lượng nhỏ hơn và tối ưu hơn.
Ngoài ra, bạn có thể thêm Dynamic Feature Modules
vào project và thêm trong app bundle. Modules này sẽ giúp bạn quyết định phần nào không được thêm vào khi người dùng mới cài lần đầu. Sử dụng Play Core Library
giúp ứng dụng có thể tải những module cần thiết về devices thông qua Dynamic Delivery.
2. Cài đặt
Điều kiện tiên quyết để build ra app bundle thì phải sử dụng Android Studio 3.2 trở lên.
Sau đó bạn tạo project Android bình thường. Kết quả là khi chạy lên sẽ hiển thị “Hello, World!” trên màn hình.
Đối với Android Studio 3.2 trở lên sẽ có 2 chế độ build như sau:
- Đối với
Build APK
thì bạn đã biết. Tất cả source code và resource sẽ được đóng gói thành 1 file apk. Và tất nhiên sẽ được ký bởi keystore của bạn. - Đối với
Build Bundle
thì sẽ xuất ra file dưới định dạng .aab (Android App Bundle) trong app > build > outputs > bundle > debug > app.aab
Khi bạn upload file .aab này lên Google Play thì google play sẽ chỉ cài resource apk tương ứng với devices đó.
Resource tương ứng gồm:
- Chỉ chứa res values theo locale: Ví dụ người dùng để ngôn ngữ mặc định là Japanese thì sẽ chỉ lấy values-jp.
- Chỉ chứa assets theo density của devices: Ví dụ màn hình thuộc loại xxxhdpi thì chỉ có drawable-xxxhdpi sẽ được cài lên máy.
- Nếu module có hỗ trợ kiến trúc CPU x86 và ARM thì khi cài lên device sẽ chỉ cài những thư viện theo kiến trúc CPU trên devices đó.
Chỉ định resource được phân tách
Mở app/build.gradle và thêm đoạn sau vào android {}
Chú ý: mặc định tất cả giá trị đều được gán true. Nên đoạn này sẽ không cần thiết nếu không có thay đổi gì.
ynamic Delivery phân chia APK như thế nào ?
Về Dynamic Delivery sẽ chỉ hoạt động đối với Android 5.0 (API 21) trở lên. Dynamic Delivery sẽ giúp Google Play chia các loại apk tương ứng để phù hợp với từng devices của người dùng.
Khi chia ra như vậy sẽ được phân loại dưới 3 hình thức sau:
Base APK
Sẽ chứa code và resource mà các apk được phân tách khác cũng có thể truy cập và cung cấp các function cơ bản để sử dụng. Khi user tải app về thì loại apk này sẽ luôn được tải về máy.
Configuration APKs
Chỉ bao gồm các thư viện và tài nguyên chuyên biệt cho từng loại devices:
- Locale
- Screen density
- CPU architecture
Dynamic feature APKs
Đây là những thành phần không bắt buộc khi cài app lần đầu tiên nhưng cũng có thể sẽ được tải và cài đặt sau.
Đối với Android 4.4 (API 19) trở xuống
Vì Android 4.4 trở xuống không được hỗ trợ App Bundle, nên Google Play sẽ đóng gói tất cả source code và resource vào trong 1 apk. Cách này về đúng phương thức truyền thống từ trước đến nay.
Do Android dưới 4.4 sẽ tải tất cả về 1 lần nên đối với Dynamic Features Modules
cũng sẽ được tải cùng luôn (còn Android 5.0 trở lên thì Dynamic Features Modules
tải lúc sau cũng được) . Nên bạn cần phải quan tâm đến 1 vài config theo link sau để có thể support tốt nhất Dynamic Feature Modules
3. Cấu trúc Android App Bundle (.aab)
Trong hình dưới đây, những phần màu xanh dương (drawable, values, lib) là phần để cho Google Play tạo config cho APK đối với mỗi modules.
4. Chạy thử Android App Bundle
Android App Bundle phục vụ cho Google Play đóng gói apk tốt hơn. Vậy nên cách đơn giản nhất để kiểm thử là upload file .aab lên Play Console để thử nghiệm.
Nhưng vẫn còn cách khác để bạn kiểm thử là dùng bundletool
Sử dụng bundletool
Các bạn tải file jar trong link sau https://github.com/google/bundletool/releases Hiện tại version mới nhất là 0.9.0. Và tất nhân máy bạn đã phải cài java rồi thì mới chạy được file jar
Sau khi tải xong bạn sẽ được file bundletool-all-0.9.0.jar
.
Cú pháp để build 1 file .aab
thành .apks
như sau: (lưu ý apks chứ không phải là apk nhé )
Lưu ý: các lệnh terminal dưới đây mình đang thực hiện trên macos. Vậy nên trên hệ điều hành khác sẽ có khác đôi chút.
Bước 1: Build file .aab
Các bạn vào Android Studio để build ra file .aab
và folder sẽ là:
Bước 2: build .aab thành .apks
java -jar bundletool-all-0.9.0.jar build-apks --bundle=MyApplication/app/build/outputs/bundle/debug/app.aab --output=out.apks
Lúc này bạn sẽ được file out.apks
Bước 3: Giải nén file .apks thành apk
Tạo folder để chứa tệp tin giải nén
Giải nén file apks vào thư mục apks:
Kết quả chạy sẽ được như sau:
Trong thư mục apks sẽ như sau:
Trong đó:
- splits là thư mục chứa apk được giản nén
- toc.pb (*.pb viết tắt của từ Module Protocol Buffer): để định nghĩa các cấu hình riêng tương ứng với apk nào trong thư mục splits
5. Kết luận
Đến đây bạn đã hiểu cơ bản thế nào là Android App Bundle. Để hiểu rõ hơn về cách tạo Dynamic Feature bạn hãy tham khảo trong ví dụ theo link:
https://github.com/googlesamples/android-dynamic-features
Chúc các bạn thành công!
Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!