bundletool
là công cụ cơ bản mà Android Studio, trình bổ trợ Android cho Gradle và Google Play sử dụng để tạo Android App Bundle. bundletool
có thể chuyển đổi gói ứng dụng thành nhiều tệp APK được triển khai đến thiết bị.
Gói Android SDK (ASB) và các APK của chúng được xây dựng bằng bundletool
. Công cụ này cũng có sẵn dưới dạng công cụ dòng lệnh, do đó bạn có thể tự tạo gói ứng dụng và gói SDK và tạo lại bản dựng phía máy chủ của Google Play cho APK của ứng dụng hoặc tệp APK của SDK hỗ trợ thời gian chạy.
Tải bundletool
xuống
Nếu bạn chưa có, hãy tải bundletool
xuống qua kho lưu trữ GitHub.
Tạo và kiểm thử gói ứng dụng
Bạn có thể sử dụng Android Studio hoặc công cụ dòng lệnh bundletool
để tạo Android App Bundle và kiểm thử viêc tạo tệp APK qua gói ứng dụng này.
Tạo gói ứng dụng
Sử dụng Android Studio và trình bổ trợ Android cho Gradle để tạo và ký một tệp Android App Bundle.
Tuy nhiên, nếu không thể sử dụng IDE (chẳng hạn do đang sử dụng máy chủ bản dựng liên tục), bạn cũng có thể tạo gói ứng dụng qua dòng lệnh rồi ký gói ứng dụng đó bằng cách sử dụng jarsigner
.
Để biết thêm thông tin về việc tạo gói ứng dụng bằng bundletool
, hãy xem bài viết Tạo gói ứng dụng bằng bundletool.
Tạo một tập hợp tệp APK từ gói ứng dụng của bạn
Sau khi tạo tệp Android App Bundle, bạn nên kiểm thử cách Google Play sử dụng định dạng này để tạo các tệp APK và cách các tệp APK đó hoạt động khi được triển khai đến thiết bị.
Có hai cách để kiểm thử gói ứng dụng:
- Sử dụng công cụ dòng lệnh
bundletool
cục bộ. - Tải gói của bạn lên Play Console thông qua Google Play bằng cách sử dụng kênh kiểm thử.
Phần này giải thích cách sử dụng bundletool
để kiểm thử cục bộ gói ứng dụng.
Khi bundletool
tạo các tệp APK qua gói ứng dụng, công cụ này sẽ đưa các tệp APK được tạo vào một vùng chứa có tên là APK set archive (Kho lưu trữ tập hợp tệp APK) với đuôi tệp là .apks
. Để tạo một tập hợp tệp APK cho tất cả cấu hình thiết bị mà ứng dụng của bạn hỗ trợ từ gói ứng dụng, hãy sử dụng lệnh bundletool build-apks
như minh hoạ dưới đây.
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Nếu muốn triển khai các tệp APK đến một thiết bị, bạn cũng cần đưa vào đó thông tin ký của ứng dụng, như được trình bày trong lệnh sau. Nếu bạn không chỉ định thông tin ký, bundletool
sẽ cố ký tệp APK của bạn bằng khoá gỡ lỗi.
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks --ks=/MyApp/keystore.jks --ks-pass=file:/MyApp/keystore.pwd --ks-key-alias=MyKeyAlias --key-pass=file:/MyApp/key.pwd
Bảng sau đây mô tả chi tiết hơn các cờ và tuỳ chọn bạn có thể thiết lập khi sử dụng lệnh bundletool build-apks
:
Bảng 1. Các tuỳ chọn cho lệnh bundletool build-apks
Cờ | Nội dung mô tả |
---|---|
--bundle=path |
(Bắt buộc) Chỉ định đường dẫn đến gói ứng dụng mà bạn đã tạo bằng Android Studio. Để tìm hiểu thêm, hãy đọc phần Xây dựng dự án của bạn. |
--output=path |
(Bắt buộc) Chỉ định tên của tệp đầu ra .apks , chứa tất cả cấu phần phần mềm APK cho ứng dụng. Để kiểm thử các cấu phần phần mềm trong tệp này trên một thiết bị, hãy làm theo các bước trong phần nội dung về cách triển khai tệp APK sang một thiết bị đã kết nối.
|
--overwrite |
Ghi đè mọi tệp đầu ra hiện thời bằng đường dẫn mà bạn chỉ định bằng cách sử dụng tuỳ chọn --output . Nếu không đưa cờ này vào và tệp đầu ra đã tồn tại, sẽ xảy ra lỗi bản dựng.
|
--aapt2=path |
Chỉ định một đường dẫn tùy chỉnh đến AAPT2.
Theo mặc định, bundletool bao gồm phiên bản riêng của AAPT2.
|
--ks=path |
(Tuỳ chọn) Chỉ định đường dẫn đến kho khoá triển khai được dùng để ký các tệp APK. Nếu bạn không đưa cờ này vào, bundletool sẽ tìm cách ký các tệp APK của bạn bằng khoá ký gỡ lỗi.
|
--ks-pass=pass:password hoặc --ks-pass=file:/path/to/file |
Chỉ định mật khẩu cho kho khoá của bạn. Nếu bạn chỉ định mật khẩu ở dạng văn bản thuần tuý, hãy hạn định mật khẩu đó bằng pass: .
Nếu bạn chuyển đường dẫn đến một tệp chứa mật khẩu, hãy hạn định tệp đó bằng file: . Nếu bạn chỉ định một kho khoá bằng cờ --ks mà không chỉ định --ks-pass , thì bundletool sẽ nhắc bạn nhập mật khẩu qua dòng lệnh.
|
--ks-key-alias=alias |
Chỉ định bí danh của khoá ký mà bạn muốn sử dụng. |
--key-pass=pass:password hoặc --key-pass=file:/path/to/file |
Chỉ định mật khẩu cho khoá ký. Nếu bạn chỉ định mật khẩu ở dạng văn bản thuần tuý, hãy hạn định mật khẩu đó bằng pass: .
Nếu bạn chuyển đường dẫn đến một tệp chứa mật khẩu, hãy hạn định tệp đó bằng file: . Nếu mật khẩu này giống với mật khẩu kho khoá, bạn có thể bỏ qua cờ này. |
--connected-device |
Hướng dẫn bundletool tạo các tệp APK nhắm đến cấu hình của một thiết bị đã kết nối. Nếu bạn không đưa cờ này vào, bundletool sẽ tạo các tệp APK cho tất cả cấu hình thiết bị mà ứng dụng của bạn hỗ trợ.
|
--device-id=serial-number |
Nếu bạn có nhiều thiết bị được kết nối, hãy sử dụng cờ này để chỉ định mã sê-ri của thiết bị mà bạn muốn triển khai ứng dụng. |
--device-spec=spec_json |
Cung cấp một đường dẫn đến tệp .json chỉ định cấu hình thiết bị mà bạn muốn nhắm đến. Để tìm hiểu thêm, hãy xem phần hướng dẫn cách Tạo và sử dụng tệp JSON chứa thông số kỹ thuật của thiết bị.
|
--mode=universal |
Đặt chế độ này thành universal . Sử dụng tuỳ chọn này nếu bạn muốn bundletool tạo một tệp APK duy nhất chứa tất cả mã và tài nguyên của ứng dụng để tệp APK đó tương thích với tất cả các cấu hình thiết bị mà ứng dụng của bạn hỗ trợ.
Lưu ý: Vui lòng lưu ý các tệp APK này có kích thước lớn hơn các tệp APK được tối ưu hoá cho một cấu hình thiết bị cụ thể. Tuy nhiên, bạn có thể chia sẻ các tệp APK này một cách dễ dàng với người kiểm thử nội bộ, để kiểm thử ứng dụng của bạn trên nhiều cấu hình thiết bị. |
--local-testing
|
Bật gói ứng dụng của bạn để kiểm thử cục bộ.
Việc kiểm thử nội bộ cho phép các chu kỳ kiểm thử được lặp lại nhanh chóng mà không cần phải tải lên máy chủ Google Play.
Để biết ví dụ về cách kiểm thử việc cài đặt mô-đun bằng cờ |
Triển khai tệp APK đến thiết bị đã kết nối
Sau khi bạn tạo một tập hợp tệp APK, bundletool
có thể triển khai tổ hợp các tệp APK phù hợp từ tập hợp đó đến thiết bị được kết nối.
Ví dụ: nếu bạn có một thiết bị đã kết nối đang chạy Android 5.0 (API cấp 21) trở lên, thì bundletool
sẽ đẩy tệp APK cơ sở, APK mô-đun tính năng và các tệp APK cấu hình cần có để chạy ứng dụng của bạn trên thiết bị đó. Ngoài ra, nếu thiết bị được kết nối của bạn đang chạy Android 4.4 (API cấp 20) trở xuống, bundletool
sẽ tìm kiếm một tập hợp tệp APK tương thích để triển khai cho thiết bị của bạn.
Để triển khai ứng dụng từ tập hợp tệp APK, hãy sử dụng lệnh install-apks
và chỉ định đường dẫn của tập hợp tệp APK bằng cách sử dụng cờ --apks=/path/to/apks
, như minh hoạ trong lệnh sau. Nếu bạn có nhiều thiết bị đã kết nối, hãy chỉ định một thiết bị mục tiêu bằng cách thêm cờ --device-id=serial-id
.
bundletool install-apks --apks=/MyApp/my_app.apks
Tạo một tập hợp APK dành riêng cho thiết bị
Nếu không muốn tạo một tập hợp tệp APK cho tất cả các cấu hình thiết bị mà ứng dụng hỗ trợ, bạn có thể tạo các tệp APK chỉ nhắm đến cấu hình của một thiết bị được kết nối bằng cách sử dụng tuỳ chọn --connected-device
, như lệnh dưới đây.
Nếu bạn có nhiều thiết bị đã kết nối, hãy chỉ định một thiết bị mục tiêu bằng cách thêm cờ --device-id=serial-id
.
bundletool build-apks --connected-device --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Tạo và sử dụng tệp JSON chứa thông số kỹ thuật của thiết bị
bundletool
có thể tạo một tập hợp tệp APK nhắm đến một cấu hình thiết bị do tệp JSON chỉ định. Trước hết, để tạo tệp JSON cho thiết bị được kết nối, hãy chạy lệnh sau:
bundletool get-device-spec --output=/tmp/device-spec.json
bundletool
tạo tệp JSON cho thiết bị của bạn trong thư mục của công cụ. Sau đó, bạn có thể chuyển tệp này đến bundletool
để tạo một tập hợp tệp APK chỉ nhắm đến cấu hình được mô tả trong tệp JSON đó, như sau:
bundletool build-apks --device-spec=/MyApp/pixel2.json --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Tạo tệp JSON chứa thông số kỹ thuật của thiết bị theo cách thủ công
Nếu bạn không có quyền truy cập vào thiết bị nơi bạn muốn tạo tập hợp tệp APK đích (chẳng hạn, nếu bạn muốn thử ứng dụng của mình trên một thiết bị mà bạn không có sẵn), bạn có thể tạo tệp JSON theo cách thủ công bằng cách sử dụng định dạng sau:
{
"supportedAbis": ["arm64-v8a", "armeabi-v7a"],
"supportedLocales": ["en", "fr"],
"screenDensity": 640,
"sdkVersion": 27
}
Sau đó, bạn có thể chuyển JSON này đến lệnh bundle extract-apks
, như mô tả trong phần trước.
Trích xuất các tệp APK dành riêng cho thiết bị cụ thể từ một tập hợp tệp APK hiện có
Nếu bạn hiện có một tập hợp tệp APK và muốn trích xuất từ đó một tập hợp con tệp APK nhắm đến một cấu hình thiết bị cụ thể, bạn có thể sử dụng lệnh extract-apks
và chỉ định một tệp thông số kỹ thuật JSON của thiết bị, như sau:
bundletool extract-apks --apks=/MyApp/my_existing_APK_set.apks --output-dir=/MyApp/my_pixel2_APK_set.apks --device-spec=/MyApp/bundletool/pixel2.json
Đo lường kích thước ước tính khi tải xuống của các tệp APK trong một tập hợp tệp APK
Để đo lường kích thước ước tính khi tải xuống của các tệp APK trong một tập hợp tệp APK như chúng sẽ được phân phát nén trên đường dây, hãy sử dụng lệnh get-size total
:
bundletool get-size total --apks=/MyApp/my_app.apks
Bạn có thể sửa đổi hành vi của lệnh get-size total
bằng cách sử dụng các cờ sau:
Bảng 2. Các tuỳ chọn cho lệnh get-size total
Cờ | Nội dung mô tả |
---|---|
--apks=path |
(Bắt buộc) Chỉ định đường dẫn tới tệp tập hợp tệp APK hiện có với kích thước được đo lường khi tải xuống. |
--device-spec=path |
Chỉ định đường dẫn đến tệp thông số kỹ thuật của thiết bị (từ get-device-spec hoặc được tạo thủ công) để dùng cho việc so khớp.
Bạn có thể chỉ định một đường dẫn một phần để đánh giá một tập hợp cấu hình.
|
--dimensions=dimensions
| Chỉ định các kích thuớc được sử dụng khi ước tính về kích thước. Chấp nhận
danh sách được phân tách bằng dấu phẩy gồm: SDK , ABI ,
SCREEN_DENSITY và LANGUAGE . Để đo lường trên tất cả các phương diện, chỉ định ALL .
|
--instant |
Đo lường kích thước khi tải xuống của các tệp APK hỗ trợ phiên bản tức thì (instant-enabled) thay vì tệp APK có thể cài đặt. Theo mặc định, bundletool sẽ đo lường kích thước khi tải xuống của tệp APK có thể cài đặt.
|
--modules=modules |
Chỉ định danh sách được phân tách bằng dấu phẩy gồm các mô-đun trong tập hợp APK để xem xét
trong hoạt động đo lường. Lệnh bundletool tự động đưa mọi mô-đun phụ thuộc vào tập hợp đã chỉ định. Theo mặc định, lệnh này sẽ đo kích thước khi tải xuống của tất cả các mô-đun được cài đặt trong lần tải xuống đầu tiên.
|
Tạo gói ứng dụng bằng phần phụ thuộc gói SDK (thử nghiệm)
Bạn có thể xây dựng Android App Bundle bằng phần phụ thuộc gói Android SDK (ASB) qua dòng lệnh rồi ký bằng jarsigner.
Mỗi mô-đun gói ứng dụng bao gồm một tệp Mô-đun vùng đệm giao thức (.pb
): runtime_enabled_sdk_config.pb
. Tệp này chứa danh sách các SDK cần có cho mô-đun gói ứng dụng. Để biết định nghĩa đầy đủ về tệp này, hãy xem tệp runtime_enabled_sdk_config.proto
.
Để tạo một gói ứng dụng với phần phụ thuộc gói SDK, làm theo các bước trong phần hướng dẫn về cách tạo gói ứng dụng bằng bundletool và thêm một tệp runtime_enabled_sdk_config.pb
vào tệp zip của mỗi mô-đun ứng dụng với mã và tài nguyên đã biên dịch.
Một số trường đáng chú ý trong tệp runtime_enabled_sdk_config.pb
:
Thông báo chứng chỉ: thông báo SHA-256 của chứng chỉ cho khoá được sử dụng để ký các APK của SDK. Điều này tương ứng với chứng chỉ trong tệp
SdkMetadata.pb
ở định dạng Lưu trữ SDK Android.Mã gói tài nguyên: mã gói mà tất cả tài nguyên trong SDK này sẽ được liên kết lại khi tạo APK để nhúng SDK vào ứng dụng. Việc này nhằm kích hoạt khả năng tương thích ngược.
SDK chỉ có thể xuất hiện trong một mô-đun. Nếu nhiều mô-đun phụ thuộc vào cùng một SDK, thì phần phụ thuộc này phải được loại bỏ trùng lặp và chuyển sang mô-đun cơ sở. Các mô-đun khác nhau không thể phụ thuộc vào các phiên bản khác nhau của SDK.
Tạo tệp APK từ gói ứng dụng có phần phụ thuộc gói SDK (thử nghiệm)
Để tạo tệp APK từ gói ứng dụng của bạn, hãy làm theo các bước trong phần về cách tạo một tập hợp tệp APK từ gói ứng dụng hoặc phần về cách tạo tập hợp tệp APK dành cho thiết bị cụ thể và cung cấp lệnh bundletool build-apks
với SDK mà ứng dụng phụ thuộc vào đó. Bạn có thể cung cấp các SDK này ở định dạng gói SDK hoặc định dạng Lưu trữ SDK.
Bạn có thể cung cấp các SDK dưới dạng gói SDK bằng cách thêm cờ --sdk-bundles
như dưới đây:
bundletool build-apks --bundle=app.aab --sdk-bundles=sdk1.asb,sdk2.asb \ --output=app.apks
Bạn có thể cung cấp các SDK dưới dạng tệp lưu trữ SDK bằng cách thêm cờ --sdk-archives
như dưới đây:
bundletool build-apks --bundle=app.aab --sdk-archives=sdk1.asar,sdk2.asar \ --output=app.apks
Tạo APK từ một gói ứng dụng có phần phụ thuộc gói SDK cho những thiết bị không hỗ trợ thư viện SDK
Các thiết bị chạy trước Android 13 không hỗ trợ cài đặt thư viện SDK hoặc chạy các thư viện đó trong thời gian chạy SDK. Bundletool giúp ẩn độ phức tạp về khả năng tương thích ngược và tạo ra nhiều biến thể của tệp APK được đặt từ cùng một gói ứng dụng khi bạn chạy bundletool build-apks
với tuỳ chọn --sdk-bundles
hoặc --sdk-archives
.
Nhiều biến thể nhắm đến các thiết bị có khả năng khác nhau:
- Có một biến thể dành cho các thiết bị mới hơn, trong đó SDK được cài đặt dưới dạng một gói riêng biệt với ứng dụng, đồng thời các tệp APK ứng dụng không chứa bất kỳ nội dung SDK nào.
- Có một hoặc nhiều biến thể dành cho các thiết bị cũ, trong đó các tệp APK SDK được thêm vào tệp APK ứng dụng được đặt dưới dạng phần phân tách APK bổ sung. Các APK SDK thuộc về gói ứng dụng. Trong trường hợp này, thời gian chạy SDK được mô phỏng trong thời gian chạy ứng dụng trên thiết bị.
Tương tự như cách bạn tạo tệp APK cho các gói ứng dụng không có phần phụ thuộc SDK, bundletool extract-apks
và bundletool install-apks
sẽ trả về một tập hợp tệp APK đã lọc từ biến thể phù hợp nhất cho thiết bị được kết nối hoặc cho cấu hình thiết bị được cung cấp.
Đối với các trường hợp sử dụng nâng cao mà bạn chỉ muốn tạo phần phân tách APK từ kho lưu trữ SDK cho một ứng dụng cụ thể cho các thiết bị cũ, hãy sử dụng lệnh bundletool build-sdk-apks-for-app
như sau:
bundletool build-sdk-apks-for-app --app-properties=app-properties.json \ --sdk-archive=sdk.asar --output=sdk.apks
Tệp app-properties
phải chứa các trường được mô tả trong tệp runtime_enabled_sdk_config.proto
. Tệp app-properties
sẽ hiển thị như sau:
{
"package_name": "com.my.app",
"version_code": 1234,
"min_sdk_version": 21,
"resources_package_id": 0x7e
}
Lệnh bundletool build-sdk-apks-for-app
tạo ra tập hợp con tệp APK ứng dụng tương ứng với nội dung SDK dưới tên gói ứng dụng. Bạn có thể kết hợp các tệp APK này với các tệp APK khác chứa nội dung ứng dụng. Ví dụ: nếu bạn tạo các bản dựng riêng biệt và tăng dần, sau đó cài đặt cùng nhau trên một thiết bị không hỗ trợ thời gian chạy SDK.
Tạo và thử nghiệm gói SDK (thử nghiệm)
Bạn có thể sử dụng bundletool
để tạo ASB và kiểm thử việc tạo các tệp cần thiết để cài đặt và phân phối.
Tạo gói SDK
Bạn có thể tạo ASB qua dòng lệnh rồi ký tệp ASB đó bằng jarsigner.
Để tạo một gói SDK, hãy làm theo các bước dưới đây:
Tạo tệp kê khai và tài nguyên của gói SDK ở định dạng proto bằng cách làm theo các bước tương tự như đối với gói ứng dụng.
Kết hợp mã và tài nguyên đã biên dịch của SDK vào một tệp zip cơ sở, như cách bạn sẽ làm với một mô-đun ứng dụng.
Tạo tệp
SdkModulesConfig.pb.json
và tệpSdkBundleConfig.pb.json
, khớp với định dạng được mô tả trong thông số kỹ thuật của gói Android SDK.Tạo ASB bằng lệnh
bundletool build-sdk-bundle
như dưới đây:
bundletool build-sdk-bundle --sdk-bundle-config=SdkBundleConfig.pb.json \ --sdk-modules-config=SdkModulesConfig.pb.json \ --modules=base.zip --output=sdk.asb
Bảng sau đây mô tả chi tiết hơn về các cờ và tuỳ chọn mà bạn có thể thiết lập khi sử dụng lệnh bundletool build-sdk-bundle
.
Bảng 3. Các tuỳ chọn cho lệnh bundletool build-sdk-bundle
Cờ | Nội dung mô tả |
---|---|
--modules |
(Bắt buộc) Tệp mô-đun mà bạn muốn tạo ASB cuối cùng từ đó. |
--output |
(Bắt buộc) Đường dẫn đến nơi bạn muốn tạo ASB. |
--sdk-modules-config |
(Bắt buộc) Đường dẫn đến tệp JSON mô tả cấu hình của các mô-đun SDK. Để tìm hiểu cách định dạng tệp JSON, hãy xem phần Thông số kỹ thuật của gói SDK Android. |
--sdk-bundle-config |
Đường dẫn tới tệp JSON mô tả cấu hình của gói SDK. Để tìm hiểu cách định dạng tệp JSON, hãy xem phần Thông số kỹ thuật của gói SDK Android. |
--metadata-file |
Tệp để thêm siêu dữ liệu cho ASB.
Định dạng của giá trị gắn cờ là <bundle-path>:<physical-file> , trong đó <bundle-path> biểu thị vị trí tệp bên trong thư mục siêu dữ liệu của gói SDK, và <physical-file> là một tệp hiện chứa dữ liệu thô cần lưu trữ. Bạn có thể lặp lại cờ này.
|
--overwrite |
Nếu được đặt, tuỳ chọn này sẽ ghi đè mọi đầu ra hiện có trước đó. |
Tạo tệp APK từ gói SDK
Sau khi tạo ASB, bạn có thể cục bộ kiểm thử gói SDK bằng cách tạo tệp APK với lệnh bundletool build-sdk-apks
như trong mã sau:
bundletool build-sdk-apks --sdk-bundle=sdk.asb --output=sdk.apks
Khi bundletool
tạo các tệp APK từ gói SDK, công cụ này sẽ đưa các tệp APK vào một vùng chứa có tên là APK set archive (Kho lưu trữ tập hợp tệp APK) với đuôi tệp là .apks
. bundletool
tạo một tệp APK độc lập từ gói SDK nhắm đến mọi cấu hình thiết bị.
Nếu muốn triển khai ASB cho một thiết bị, bạn cũng cần đưa thông tin ký của ứng dụng vào, như trong lệnh sau.
bundletool build-sdk-apks --sdk-bundle=sdk.asb --output=sdk.apks \ --ks=keystore.jks \ --ks-pass=file:/keystore.pwd \ --ks-key-alias=KeyAlias \ --key-pass=file:/key.pwd
Bảng sau đây mô tả chi tiết hơn về các cờ và tuỳ chọn mà bạn có thể thiết lập khi sử dụng lệnh bundletool build-sdk-apks
.
Bảng 4. Các tuỳ chọn cho lệnh bundletool build-sdk-apks
Cờ | Nội dung mô tả |
---|---|
--sdk-bundle |
(Bắt buộc) Đường dẫn đến gói SDK. Phải có phần mở rộng .asb .
|
--output |
(Bắt buộc) Theo mặc định, đường dẫn nơi bạn muốn tạo kho lưu trữ tập hợp tệp APK. Ngoài ra, nếu bạn sử dụng --output-format=DIRECTORY , đây sẽ là đường dẫn đến thư mục nơi bạn muốn lưu trữ các tệp APK được tạo.
|
--ks |
Đường dẫn đến kho khoá mà bạn muốn sử dụng để ký các tệp APK được tạo. |
--ks-key-alias |
Bí danh của khoá sẽ dùng trong kho khoá để ký các tệp APK được tạo. |
--key-pass |
Mật khẩu của khoá trong kho khoá dùng để ký các tệp APK đã tạo. Nếu chuyển mật khẩu dưới dạng văn bản rõ ràng, bạn phải thêm tiền tố giá trị bằng Nếu không đặt cờ này thì mật khẩu kho khoá sẽ được thử. Nếu không thành công, thiết bị đầu cuối của dòng lệnh sẽ nhắc bạn nhập một mật khẩu. |
--ks-pass |
Mật khẩu của kho khoá dùng để ký các tệp APK được tạo. Nếu chuyển mật khẩu dưới dạng văn bản rõ ràng, bạn phải thêm tiền tố giá trị bằng Nếu không đặt cờ này thì thiết bị đầu cuối dòng lệnh sẽ nhắc bạn nhập một mật khẩu. |
--aapt2 |
Đường dẫn tới tệp nhị phân AAPT2 để sử dụng. |
--output-format |
Định dạng đầu ra cho các tệp APK được tạo. Theo mặc định, tuỳ chọn này được đặt thành APK_SET và nó sẽ xuất các tệp APK vào kho lưu trữ tập hợp tệp APK được tạo. Nếu được đặt thành DIRECTORY , nó sẽ xuất tệp APK vào thư mục do --output chỉ định. |
--verbose |
Nếu được đặt, tuỳ chọn này sẽ in thêm thông tin về quá trình thực thi lệnh trong dữ liệu đầu ra tiêu chuẩn. |
--version-code |
Mã phiên bản SDK. Đây là mã phiên bản mà nền tảng Android sử dụng để cài đặt APK, không phải phiên bản SDK. Tuỳ chọn này có thể được đặt thành một giá trị bất kỳ. Nếu không được đặt thì hệ thống sẽ mặc định đặt giá trị là 0. |
--overwrite |
Nếu được đặt, tuỳ chọn này sẽ ghi đè mọi đầu ra hiện có trước đó. |
Triển khai, trích xuất và đo lường kích thước tệp APK SDK
Bạn có thể làm theo các bước tương tự được dùng cho các ứng dụng để triển khai tệp APK cho một thiết bị được kết nối, trích xuất tệp APK dành riêng cho thiết bị từ một tập hợp tệp APK hiện có và đo lường kích thước ước tính khi tải xuống của các tệp APK trong một tập hợp tệp APK.
Tạo kho lưu trữ SDK từ gói SDK
Sau khi bạn tải ASB lên kênh phân phối của mình, chẳng hạn như Google Play, ASB sẽ được chuyển đổi thành Android SDK Archive (.asar
) để phân phối cho các nhà phát triển ứng dụng thông qua Maven. Để biết thêm thông tin chi tiết về định dạng, hãy xem phần Thông số kỹ thuật của định dạng SDK Archive.
Sau khi tạo ASB, bạn có thể kiểm thử việc tạo SDK Android Archive cục bộ bằng lệnh bundletool build-sdk-asar
, như trong đoạn mã sau:
bundletool build-sdk-asar --sdk-bundle=sdk.asb --output=sdk.asar \ --apk-signing-key-certificate=keycert.txt
Bảng sau đây mô tả chi tiết hơn về các cờ và tuỳ chọn mà bạn có thể thiết lập khi sử dụng lệnh bundletool build-sdk-asar
.
Bảng 5. Các tuỳ chọn cho lệnh bundletool build-sdk-asar
Cờ | cờ |
---|---|
--apk-signing-key-certificate |
(Bắt buộc) Đường dẫn đến chứng chỉ ký tệp APK SDK. Đây là chứng chỉ tương ứng với khoá mà bạn đã dùng để ký các tệp APK trong lệnh build-sdk-apks .
|
--output |
(Bắt buộc) Đường dẫn nơi bạn muốn tạo tệp .asar .
|
--sdk-bundle |
(Bắt buộc) Đường dẫn đến gói SDK. Phải có phần mở rộng .asb .
|
--overwrite |
Nếu được đặt, tuỳ chọn này sẽ ghi đè mọi đầu ra hiện có trước đó. |
Định dạng SDK hỗ trợ thời gian chạy (thử nghiệm)
SDK hỗ trợ thời gian chạy giới thiệu hai định dạng tệp Android:
- Gói SDK Android (
.asb
), được dùng để phát hành SDK có hỗ trợ thời gian chạy lên cửa hàng ứng dụng. - SDK Android Archive (
.asar
), được dùng để phân phối SDK hỗ trợ thời gian chạy trên Maven.
Định dạng gói Android SDK
Gói SDK là một định dạng phát hành dành cho các SDK hỗ trợ thời gian chạy. Gói này chứa tất cả mã và tài nguyên SDK, bao gồm cả mã từ bất kỳ thư viện nào mà SDK phụ thuộc vào. Gói này không bao gồm mã và tài nguyên của các SDK hỗ trợ thời gian chạy khác mà SDK phụ thuộc vào.
Gói Android SDK (ASB) là một tệp zip đã ký có đuôi .asb
. Mã SDK và tài nguyên trong đó được sắp xếp tương tự như nội dung bạn sẽ tìm thấy trong APK. ASB cũng chứa một số tệp cấu hình giúp tạo các tệp APK có thể cài đặt.
![](https://developer.android.com/static/studio/images/command-line/asb-format.png?authuser=6&hl=vi)
Danh sách sau đây mô tả chi tiết hơn một số tệp ASB:
SdkBundleConfig.pb
: Tệp cấu hình ở định dạng proto, chứa danh sách các SDK hỗ trợ thời gian chạy mà SDK của bạn phụ thuộc vào. Để tìm hiểu về khái niệm đầy đủ, vui lòng xem tệpsdk_bundle_config.proto
.modules.resm
: Một tệp zip chứa tất cả dữ liệu cần thiết để tạo APK từ SDK.SdkModulesConfig.pb
: Một tệp cấu hình ở định dạng proto. Tệp này chứa tên SDK, phiên bản và tên lớp của điểm truy cập SDK cho khung (SandboxedSdkProvider
). Để tìm hiểu khái niệm đầy đủ, hãy xem tệpsdk_modules_config.proto
.base/
: Mô-đun duy nhất chứa mã và tài nguyên SDK.manifest/
: Tệp kê khai của SDK ở định dạng proto.dex/
: Mã được biên dịch ở định dạng DEX. Bạn có thể cung cấp nhiều tệp DEX.res/
,lib/
,assets/
: Các thư mục này giống với các thư mục trong tệp APK thông thường. Đường dẫn trong các thư mục này được giữ nguyên khi tạo APK của SDK.root/
: Thư mục này lưu trữ các tệp sau đó được chuyển sang thư mục gốc của APK SDK. Ví dụ như SDK này có thể bao gồm các tài nguyên dựa trên Java mà SDK của bạn sẽ tải bằng phương thứcClass.getResource()
. Các đường dẫn trong thư mục này cũng được giữ nguyên.
BUNDLE-METADATA
: Thư mục này bao gồm các tệp siêu dữ liệu chứa thông tin hữu ích cho các công cụ hoặc cửa hàng ứng dụng. Các tệp siêu dữ liệu như vậy có thể bao gồm liên kết ProGuard và danh sách đầy đủ các tệp DEX của SDK. Các tệp trong thư mục này không được đóng gói thành tệp APK cho ứng dụng.
Định dạng gói lưu trữ SDK Android
Android SDK Archive là định dạng phân phối của SDK hỗ trợ thời gian chạy trên Maven. Đây là một tệp zip có đuôi tệp .asar
. Tệp này chứa tất cả thông tin mà các công cụ tạo ứng dụng cần để tạo tệp Android App Bundle phụ thuộc vào SDK hỗ trợ thời gian chạy của bạn.
![](https://developer.android.com/static/studio/images/command-line/asar-format.png?authuser=6&hl=vi)
Danh sách sau đây mô tả chi tiết hơn một số tệp Android SDK Archive:
SdkMetadata.pb
: Tệp cấu hình ở định dạng proto, chứa tên SDK, phiên bản và thông báo chứng chỉ cho khoá được dùng để ký các tệp APK được tạo cho SDK này. Để tìm hiểu khái niệm đầy đủ, hãy xem tệpsdk_metadata.proto
.modules.resm
: Một tệp zip chứa tất cả dữ liệu cần thiết để tạo APK từ SDK. Tệp này giống với tệp.resm
trong gói Android SDK.AndroidManifest.xml
: Tệp kê khai của SDK ở định dạng XML văn bản.
Tài nguyên khác
Để tìm hiểu thêm về cách sử dụng bundletool
, hãy xem nội dung Gói ứng dụng: Kiểm thử các gói bằng bundletool và Play Console.