bundletool

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

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 và chuyển đổi một gói ứng dụng thành các nhiều tệp APK được triển khai đến các thiết bị. Gói Android SDK và các APK của chúng cũng được xây dựng với bundletool. bundletool cũng có sẵn cho bạn dưới dạng một công cụ dòng lệnh, do đó bạn có thể tự tạo gói ứng dụng và gói SDK, cũng như 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 APK của SDK hỗ trợ thời gian chạy.

Tải bundletool

Nếu chưa có bundletool, hãy tải xuống qua Kho lưu trữ GitHub.

Tạo và thử nghiệm 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à thử nghiệm APK tạo từ gói ứng dụng này.

Tạo gói ứng dụng

Bạn nên sử dụng Android Studio và Trình bổ trợ Android cho Gradle để tạo và ký một 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 từ dòng lệnh và 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 APK từ gói ứng dụng của bạn

Sau khi tạo 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 triển khai đến thiết bị. Có hai cách mà bạn nên cân nhắc khi kiểm thử gói ứng dụng: sử dụng công cụ dòng lệnh bundletool và thông qua Google Play bằng cách tải gói lên Play Console rồi sử dụng kênh thử nghiệm. 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 này vào trong một vùng chứa có tên là APK set archive (Kho lưu trữ tập hợp APK) với đuôi tệp .apks. Để tạo một tập hợ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 bên dưới. Nếu bạn không chỉ định thông tin ký, bundletool sẽ tìm cách ký tệp APK của bạn bằng một 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 bên dưới mô tả chi tiết hơn về các cờ và tùy chọn mà bạn có thể thiết lập khi sử dụng lệnh bundletool build-apks.

Gắn cờ 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 `.apks` đầu ra, chứa tất cả cấu phần phần mềm APK dành cho ứng dụng của bạn. Để kiểm tra các cấu phần phần mềm trong tệp này trên một thiết bị, hãy vào phần liên quan đến cách triển khai APK đến thiết bị đã kết nối.
--overwrite Hãy đưa cờ này vào nếu bạn muốn ghi đè mọi tệp đầu ra hiện có với đường dẫn mà bạn chỉ định bằng cách sử dụng tùy 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 Chỉ định đường dẫn đến kho khoá triển khai dùng để ký các APK. Cờ này là không bắt buộc. Nếu bạn không đưa khoá vào, bundletool sẽ tìm cách ký các 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 của kho khoá. Nếu bạn đang 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 đang 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 từ 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 đang 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 đang 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 Sử dụng cờ này để cung cấp đường dẫn tới 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 chuyển đến phần liên quan đế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 Thiết lập chế độ này thành universal nếu bạn muốn bundletool chỉ tạo một APK duy nhất chứa tất cả mã và tài nguyên của ứng dụng và APK đó cũng tương thích với mọi cấu hình thiết bị mà ứng dụng của bạn hỗ trợ.

Lưu ý: bundletool chỉ bao gồm các mô-đun tính năng có chỉ định <dist:fusing dist:include="true"/> trong tệp kê khai trong một APK chung. Để tìm hiểu thêm, hãy đọc về Tệp kê khai mô-đun tính năng.

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 những người thử nghiệm nội bộ, để thử nghiệm ứng dụng của bạn trên nhiều cấu hình thiết bị.

--local-testing Sử dụng cờ này để bật gói ứng dụng của bạn khi kiểm thử cục bộ. Việc kiểm thử nghiệm 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ờ --local-testing, hãy xem Cài đặt các mô-đun kiểm thử cục bộ.

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 APK, bundletool có thể triển khai một tổ hợp các 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 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 đế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ợpk APK tương thích và triển khai đến thiết bị của bạn.

Để triển khai ứng dụng từ tập hợp APK, hãy sử dụng lệnh install-apks và chỉ định đường dẫn của tập hợp APK bằng cách sử dụng cờ --apks=/path/to/apks, như được minh hoạ 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 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 APK cho tất cả các cấu hình thiết bị mà ứng dụng của bạn hỗ trợ, bạn có thể tạo các 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 tùy chọn --connected-device, như phần 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 APK nhắm đến cấu hình thiết bị do tệp JSON chỉ định. Ở lần đầu tiên tạo một 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 một tệp JSON cho thiết bị của bạn trong thư mục có chứ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 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ị mà bạn muốn tạo tập hợp APK nhắm đến (chẳng hạn, một người bạn muốn thử ứng dụng của bạn bằng 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ư được mô tả trong mục trước.

Trích xuất các APK dành riêng cho thiết bị từ một tập hợp APK hiện có

Nếu bạn hiện có một tập hợp APK và muốn trích xuất từ đó một tập hợp con 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 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 APK như việc các tệp APK này sẽ được phân phối nén trong định mức, 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:

Gắn cờ Mô tả
--apks=path (Bắt buộc) Chỉ định đường dẫn tới tệp tập hợp APK hiện có (được đo lường kích thước 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_DENSITYLANGUAGE. Để đo lường trên tất cả các thứ nguyên, hãy 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 được 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 và thử nghiệm gói ứng dụng bằng phần phụ thuộc gói SDK (thử nghiệm)

Bạn có thể sử dụng bundletool để tạo Android App Bundle qua phần phụ thuộc gói Android SDK và thử nghiệm việc tạo tệp APK từ đó.

Tạo gói ứng dụng bằng phần phụ thuộc gói SDK

Bạn có thể xây dựng Android App Bundle bằng phần phụ thuộc gói Android SDK từ dòng lệnh và 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, vui lòng 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, hãy làm theo hướng dẫn tương tự để tạo gói ứng dụng bằng bundletool, nhưng lần này hãy đảm bảo bạn sẽ 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 được 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ừ một gói ứng dụng bằng phần phụ thuộc gói SDK

Để tạo các APK từ gói ứng dụng, bạn có thể làm theo các bước tương tự như trong Tạo bộ APK từ gói ứng dụng hoặc Tạo bộ APK dành riêng cho thiết bị, nhưng lần này bạn phải cung cấp lệnh bundletool build-apks cùng với các SDK mà ứng dụng phụ thuộc. 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ư bên dưới:

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ư bên dưới:

bundletool build-apks --bundle=app.aab --sdk-archives=sdk1.asar,sdk2.asar \
    --output=app.apks

Tạo và thử nghiệm gói SDK (thử nghiệm)

Bạn có thể sử dụng bundletool để tạo gói Android SDK và thử nghiệm 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 gói Android SDK (ASB) từ dòng lệnh và ký bằng jarsigner.

Để tạo một gói SDK, hãy làm theo các bước dưới đây:

  1. 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.

  2. 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.

  3. Tạo tệp SdkModulesConfig.pb.json và tệp SdkBundleConfig.pb.json, phù hợp với định dạng được mô tả trong thông số kỹ thuật của gói Android SDK.

  4. Tạo gói SDK bằng lệnh bundletool build-sdk-bundle như bên dưới:

bundletool build-sdk-bundle --sdk-bundle-config=SdkBundleConfig.pb.json \
    --sdk-modules-config=SdkModulesConfig.pb.json \
    --modules=base.zip --output=sdk.asb

Bảng bên dưới mô tả chi tiết hơn về các cờ và tùy chọn mà bạn có thể thiết lập khi sử dụng lệnh bundletool build-sdk-bundle.

Gắn cờ Mô tả
--modules (Bắt buộc) Tệp mô-đun mà bạn muốn tạo gói Android SDK cuối cùng.
--output (Bắt buộc) Đường dẫn đến nơi sẽ tạo gói SDK Android.
--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 bài viết Thông số kỹ thuật của gói SDK Android cho 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 bài viết Thông số kỹ thuật của gói SDK Android cho Android.
--metadata-file Chỉ định tệp đưa vào làm siêu dữ liệu trong gói Android SDK. Đị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, mọi kết quả hiện có trước đó sẽ bị ghi đè.

Tạo APK từ gói SDK

Sau khi tạo gói Android SDK, bạn có thể thử nghiệm gói SDK cục bộ bằng cách tạo tệp APK theo lệnh bundletool build-sdk-apks như trong mã sau.

Khi bundletool tạo các tệp APK qua gói SDK, công cụ này sẽ đưa các tệp APK này vào trong một vùng chứa có tên là APK set archive (Kho lưu trữ tập hợp APK) với đuôi tệp .apks. bundletool tạo một APK độc lập từ gói SDK nhắm mục tiêu tất cả cấu hình thiết bị.

bundletool build-sdk-apks --sdk-bundle=sdk.asb --output=sdk.apks

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ư hiển thị trong lệnh sau. Nếu bạn không chỉ định thông tin ký, bundletool sẽ cố ký APK của bạn bằng khoá gỡ lỗi.

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 bên dưới mô tả chi tiết hơn về các cờ và tùy chọn mà bạn có thể thiết lập khi sử dụng lệnh bundletool build-sdk-apks.

Gắn cờ 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 nơi lưu trữ bộ APK sẽ được tạo. Ngoài ra, nếu bạn sử dụng --output-format=DIRECTORY, đây sẽ là đường dẫn đến thư mục lưu trữ các tệp APK đã tạo.
--ks Đường dẫn đến kho khoá sẽ được dùng để ký các tệp APK đã tạo.
--ks-key-alias Bí danh của khoá sẽ 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ý những tệp APK đã tạo. Nếu đang truyề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 pass:, chẳng hạn như pass:qwerty. Nếu mật khẩu là dòng đầu tiên của tệp, bạn phải thêm tiền tố giá trị bằng file:, chẳng hạn như file:/tmp/myPassword.txt. Nếu bạn 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ý những tệp APK đã tạo. Nếu đang truyề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 pass:, chẳng hạn như pass:qwerty. Nếu mật khẩu là dòng đầu tiên của tệp, bạn phải thêm tiền tố giá trị bằng file:, chẳng hạn như file:/tmp/myPassword.txt. Nếu bạn 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 khẩu.
--aapt2 Đường dẫn tới tệp nhị phân AAPT2 để sử dụng.
--output-format Chỉ định định dạng đầu ra cho các tệp APK đã tạo. Theo mặc định, giá trị này được đặt thành APK_SET, hệ thống sẽ xuất các tệp APK vào kho lưu trữ bộ APK được tạo. Nếu bạn đặt giá trị này thành DIRECTORY, hệ thống sẽ xuất tệp APK vào thư mục do --output chỉ định.
--verbose Nếu bạn đặt giá trị, hãy 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. Giá trị này có thể được đặt thành một giá trị bất kỳ. Nếu bạn không đặt giá trị này thì hệ thống sẽ mặc định đặt giá trị là 0.
--overwrite Nếu được đặt, mọi kết quả hiện có trước đó sẽ bị ghi đè.

Tạo kho lưu trữ SDK từ gói SDK

Sau khi bạn tải gói Android SDK lên kênh phân phối của mình, chẳng hạn như Google Play, gói SDK Android sẽ được chuyển đổi thành Android SDK Lưu trữ (.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, vui lòng xem nội dung Thông số kỹ thuật của định dạng SDK Lưu trữ.

Sau khi tạo gói Android SDK, bạn có thể thử nghiệm việc tạo Bản lưu trữ SDK Android cục bộ bằng lệnh bundletool build-sdk-asar, như hiển thị trong mã sau.

bundletool build-sdk-asar --sdk-bundle=sdk.asb --output=sdk.asar \
    --apk-signing-key-certificate=keycert.txt

Bảng bên dưới mô tả chi tiết hơn về các cờ và tùy chọn mà bạn có thể thiết lập khi sử dụng lệnh bundletool build-sdk-asar.

Gắn cờ Mô tả
--apk-signing-key-certificate (Bắt buộc) Đường dẫn đến chứng chỉ ký APK SDK. Đây là chứng chỉ tương ứng với khoá mà bạn đã dùng để ký các APK trong lệnh build-sdk-apks.
--output (Bắt buộc) Đường dẫn đến nơi 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, mọi kết quả hiện có trước đó sẽ bị ghi đè.

Đị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 Android SDK (.asb) dùng để phát hành SDK hỗ trợ thời gian chạy cho các cửa hàng ứng dụng, và Bản lưu trữ SDK Android (.asar), 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 là tệp zip đã ký có chứa phần mở rộng .asb. Mã SDK và tài nguyên đượ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 dùng để hỗ trợ việc tạo các APK có thể cài đặt.

Hình 1. Nội dung của gói Android SDK.

Danh sách sau đây mô tả chi tiết hơn một số tệp gói Android SDK:

  • 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ệp sdk_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 về khái niệm đầy đủ, vui lòng xem tệp sdk_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ức Class.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

Gói lưu trữ SDK Android 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 chứa đ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 Android App Bundle dựa vào SDK hỗ trợ thời gian chạy của bạn.

Hình 2. Nội dung của Gói lưu trữ SDK Android.

Danh sách sau đây mô tả chi tiết hơn một số tệp gói Android SDK:

  • 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á dùng để ký các tệp APK được tạo cho SDK này. Để tìm hiểu về khái niệm đầy đủ, vui lòng xem tệp sdk_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 thử dùng tài nguyên sau.

Lớp học lập trình

  • Android App Bundle đầu tiên của bạn, một lớp học lập trình khám phá các nguyên tắc cơ bản của Android App Bundle và cho bạn biết cách nhanh chóng bắt đầu xây dựng ứng dụng của riêng mình bằng Android Studio. Lớp học lập trình này cũng giúp khám phá cách kiểm thử các gói ứng dụng của bạn bằng cách sử dụng bundletool.