Nếu vẫn đang dùng trình bổ trợ Tính năng Android cho Gradle (com.android.feature
) không dùng nữa cho các mô-đun Ứng dụng Android tức thì, bạn cần chuyển sang sử dụng trình bổ trợ ứng dụng cơ sở (com.android.application
) và trình bổ trợ Tính năng động (com.android.dynamic-feature
).
Trên trình bổ trợ Android cho Gradle 3.3.0 trở lên, trình bổ trợ ứng dụng cơ sở có tính năng hỗ trợ trải nghiệm tức thì. Tức là nếu mô-đun ứng dụng cơ sở đáp ứng các yêu cầu để trở thành trải nghiệm tức thì, thì bạn sẽ tự đ��ng được hưởng lợi ích. Sau đó, bạn có thể đưa vào các tính năng bổ sung mà người dùng có thể tải xuống theo yêu cầu dưới dạng trải nghiệm tức thì bằng cách sử dụng trình bổ trợ Tính năng động. Cách thiết lập này giúp bạn dễ dàng hỗ trợ cả trải nghiệm ứng dụng cần cài đặt và ứng dụng tức thì trong một dự án duy nhất, đồng thời cho phép bạn hưởng lợi từ việc phát hành bằng Android App Bundle.
Bảng sau đây mô tả rõ hơn những trình bổ trợ mà bạn sẽ di chuyển sang:
Mô tả mô-đun | Trình bổ trợ cũ | Trình bổ trợ hiện tại |
---|---|---|
Mô-đun bao gồm mã, tài nguyên và chức năng cơ bản cho trải nghiệm ứng dụng tức thì hoặc đã cài đặt. | com.android.feature (với baseFeature = true )
|
com.android.application
Lưu ý: Mô-đun này bao gồm tất cả tệp kê khai và thông tin ký cần thiết để tạo và đóng gói ứng dụng dưới dạng Android App Bundle hoặc APK. |
Các tính năng bổ sung, theo mô-đun mà người dùng có thể tải xuống theo yêu cầu | com.android.feature |
com.android.dynamic-feature (với dist:instant="true" và dist:onDemand="false" trong tệp kê khai của mô-đun) |
Mã và tài nguyên cho một tính năng chỉ có sẵn cho phiên bản đã cài đặt của ứng dụng. | com.android.application |
com.android.dynamic-feature (với dist:instant="false" và dist:onDemand="false" trong tệp kê khai của mô-đun) |
Trang này cho bạn biết cách di chuyển dự án ứng dụng tức thì hiện có để tạo Android App Bundle hỗ trợ phiên bản tức thì. Bài viết này cũng mô tả cách tạo, thử nghiệm và phát hành Android App Bundle có hỗ trợ phiên bản tức thì.
Nếu bạn đang tạo trải nghiệm tức thì mới cho ứng dụng, hãy đọc bài viết Tạo mô-đun tính năng hỗ trợ phiên bản tức thì.
Tìm hiểu các thay đổi
Khi bạn di chuyển dự án để sử dụng trình bổ trợ Tính năng động, Android App Bundle cung cấp một cách thức mới để tạo và phát hành ứng dụng, giúp đơn giản hoá việc phân phối các tệp APK đã tối ưu hoá cho người dùng.
Gói ứng dụng đơn giản hoá việc phân phối bằng cách đóng gói tất cả tài nguyên và mã đã biên dịch của ứng dụng để tải lên, nhưng trì hoãn việc tạo tệp APK và đăng nhập vào Google Play. Sau đó, mô hình phân phát ứng dụng mới của Google Play sẽ sử dụng gói ứng dụng của bạn để tạo và phân phát các tệp APK được tối ưu hoá cho cấu hình thiết bị của từng người dùng. Nhờ vậy, họ chỉ cần tải mã và tài nguyên cần thiết để chạy ứng dụng của bạn. Bạn không còn phải tạo, ký và quản lý nhiều tệp APK để hỗ trợ nhiều loại thiết bị, đồng thời người dùng sẽ có được các tệp tải xuống nhỏ hơn và tối ưu hơn.
Khi sử dụng trình bổ trợ tính năng hiện không được dùng nữa, việc tạo ứng dụng tức thì đòi hỏi bạn phải tạo mô-đun tính năng cơ sở. Mô-đun này chứa mã và tài nguyên dùng chung cho tất cả các mô-đun, bao gồm cả mô-đun ứng dụng tức thì. Phần còn lại của mã được đưa vào nhiều mô-đun tính năng không phải cơ sở, trong đó có các điểm truy cập cho trải nghiệm tức thì. Đối với phiên bản đã cài đặt của ứng dụng, dự án có thể bao gồm một mô-đun ứng dụng riêng biệt, trong đó chứa mã và các hoạt động chỉ bắt buộc đối với ứng dụng đã cài đặt.
Khi bạn di chuyển ứng dụng để hỗ trợ Android App Bundle, mô-đun ứng dụng của bạn sẽ lấy lại vai trò của mô-đun cơ sở, đồng thời bạn sắp xếp thêm trải nghiệm cài đặt hoặc trải nghiệm tức thì dưới dạng mô-đun tính năng. Điều này nghĩa là dự án của bạn giờ đây đã gần giống với một dự án ứng dụng tiêu chuẩn hơn, với một mô-đun cơ sở có hỗ trợ phiên bản tức thì và khả năng bao gồm thêm các trải nghiệm tức thì theo mô-đun.
Để di chuyển dự án ứng dụng tức thì hiện có và áp dụng mô hình phân phối được tối ưu hoá hơn của Android App Bundle, hãy làm theo các bước được mô tả trong các phần dưới đây.
Chuyển đổi mô-đun tính năng cơ sở thành mô-đun ứng dụng
Trước tiên, bạn cần chỉnh sửa tệp build.gradle
của mô-đun tính năng cơ sở trước khi chuyển đổi tệp đó thành mô-đun ứng dụng chính, như sau:
- Xoá dòng
baseFeature true
. Xoá mọi phần phụ thuộc sử dụng cấu hình phần phụ thuộc
feature
hoặcapplication
.Groovy
dependencies { ... // delete any lines that look like // feature project(":foo") // feature project(":bar") // application project(":app") }
Kotlin
dependencies { ... // delete any lines that look like // feature(project(":foo")) // feature(project(":bar")) // application(project(":app")) }
Di chuyển
applicationId
cùng với mọi cấu hình tập lệnh bản dựng khác mà bạn muốn nằm trong mô-đun ứng dụng cơ sở, từ mô-đuncom.android.application
hiện tại sang mô-đuncom.android.feature
. Bạn có thể xem một số ví dụ dưới đây. Đối với bước này, tuỳ thuộc vào cách thiết lậpbuild.gradle
cụ thể, bạn có thể dễ dàng sao chép và dán khốiandroid
củabuild.gradle
từ mô-đun ứng dụng trước vào tệpbuild.gradle
của mô-đun ứng dụng mới. Tuy nhiên, bạn nên thận trọng khi làm như vậy.Groovy
android { ... defaultConfig { // You need to move the application ID from the app module // to your feature module. applicationId "com.example.myapp" ... } // Some additional build configurations you might want to // copy from your current ‘app’ module may include ProGuard // rules and code shrinking settings. buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile( 'proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
Kotlin
android { ... defaultConfig { // You need to move the application ID from the app module // to your feature module. applicationId = "com.example.myapp" ... } // Some additional build configurations you might want to // copy from your current ‘app’ module may include ProGuard // rules and code shrinking settings. buildTypes { getByName("release") { minifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } }
Đánh dấu mô-đun tính năng là được kích hoạt tức thì bằng cách thêm các thẻ phân phối gói thích hợp vào tệp kê khai, như minh hoạ dưới đây.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="true" /> ... </manifest>
Chuyển đổi mô-đun tính năng thành mô-đun ứng dụng cơ sở bằng cách thay đổi loại trình bổ trợ thành
com.android.application
:Groovy
// Replace "plugins { id 'com.android.feature' }" // with the following plugins { id 'com.android.application' }
Kotlin
// Replace "plugins { id("com.android.feature") }" // with the following plugins { id("com.android.application") }
Chuyển đổi mô-đun ứng dụng cũ thành mô-đun tính năng tại thời điểm cài đặt
Nếu không có mã hoặc tài nguyên trong mô-đun ứng dụng cũ, bạn chỉ cần xoá mô-đun đó vì các bước bạn đã thực hiện trong phần trước đã chuyển đổi mô-đun tính năng thành mô-đun ứng dụng cơ sở của ứng dụng.
Tuy nhiên, nếu có mã và tài nguyên trong mô-đun ứng dụng cũ thể hiện chức năng mà bạn muốn người dùng cung cấp khi họ cài đặt ứng dụng, hãy làm theo các bước trong phần này để chuyển đổi mô-đun ứng dụng thành mô-đun tính năng.
Việc tạo mô-đun tính năng bao gồm việc thay đổi loại trình bổ trợ từ com.android.application
thành com.android.dynamic-feature
, cùng với một số thay đổi khác về build.gradle
như sau:
Thay đổi loại trình bổ trợ từ
com.android.application
thànhcom.android.dynamic-feature
.Groovy
// Replace "plugins { id 'com.android.feature' }" // with the following: plugins { id 'com.android.dynamic-feature' }
Kotlin
// Replace "plugins { id("com.android.application") }" // with the following: plugins { id("com.android.dynamic-feature") }
Như mô tả trong phần trước, hãy đảm bảo bạn đã di chuyển các cấu hình bản dựng mà trình bổ trợ
com.android.application
yêu cầu sang mô-đun ứng dụng cơ sở, chẳng hạn như các quy tắcapplicationId
hoặcproguardFiles
.Đổi tên mô-đun thành "install_feature" như sau:
- Mở ngăn Project (Dự án) bằng cách chọn View > Tool Windows > Project (Xem > Cửa sổ công cụ > Dự án) trên thanh trình đơn.
- Nhấp chuột phải vào mô-đun tính năng rồi chọn Refactor > Rename (Tái cấu trúc > Đổi tên).
- Trong hộp thoại xuất hiện, hãy chọn Đổi tên mô-đun rồi nhấp vào OK.
- Nhập tên mới cho mô-đun rồi nhấp vào OK.
Tương tự như bước 3, hãy đổi tên mô-đun ứng dụng mới mà bạn đã tạo ở phần trước thành "app" (ứng dụng).
Thêm phần phụ thuộc triển khai vào mô-đun "app" trong tệp
build.gradle
của mô-đun tính năng, như minh hoạ dưới đây.Groovy
dependencies { ... // In the feature module, add an implementation dependency // on the base app module. implementation project(":app") }
Kotlin
dependencies { ... // In the feature module, add an implementation dependency // on the base app module. implementation(project(":app")) }
Thêm tính năng này vào tệp
build.gradle
của mô-đun ứng dụng mới.Groovy
android { ... // In the base app module, specify each feature module. dynamicFeatures = [":installed_feature"] }
Kotlin
android { ... // In the base app module, specify each feature module. dynamicFeatures.addAll(listOf(":installed_feature")) }
Trong tệp kê khai của mô-đun tính năng, hãy đánh dấu mô-đun tính năng là mô-đun có thể cài đặt bằng cách thêm các thẻ phân phối gói thích hợp vào tệp kê khai.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="false" dist:onDemand="false" dist:title="@string/title_dynamic_feature"> <dist:fusing dist:include="true" /> </dist:module> ... </manifest>
Chuyển đổi các mô-đun tính năng khác thành mô-đun tính năng hỗ trợ phiên bản tức thì
Nếu đã mô-đun hoá chức năng bổ sung của ứng dụng thành nhiều mô-đun Tính năng, bạn cần làm theo các bước trong phần này để chuyển đổi những mô-đun đó thành mô-đun tính năng hỗ trợ phiên bản tức thì.
Đối với mỗi mô-đun tính năng còn lại trong dự án, hãy tiến hành như sau để chuyển đổi mô-đun đó thành các tính năng hỗ trợ phiên bản tức thì:
Thay đổi loại trình bổ trợ trong tệp
build.gradle
thànhcom.android.dynamic-feature
, như minh hoạ dưới đây:Groovy
// Replace 'com.android.feature' with 'com.android.dynamic-feature' plugins { id 'com.android.dynamic-feature' }
Kotlin
// Replace "com.android.feature" with "com.android.dynamic-feature" plugins { id("com.android.dynamic-feature") }
Đánh dấu từng mô-đun tính năng là hỗ trợ phiên bản tức thì bằng cách thêm đoạn mã sau vào tệp kê khai.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="true" dist:onDemand="false" dist:title="@string/title_dynamic_feature"> <dist:fusing dist:include="true" /> </dist:module> ... </manifest>
Thêm mô-đun tính năng vào tệp
build.gradle
của mô-đun ứng dụng mới. Tại đây, bạn đã thêminstalled_feature
vào danh sách các mô-đun tính năng.Groovy
android { ... dynamicFeatures = [":installed_feature", ":feature_1", ":feature_2"] // or whichever name exists for the instant enabled feature module }
Kotlin
android { ... dynamicFeatures.addAll(listOf(":installed_feature", ":feature_1", ":feature_2")) // or whichever name exists for the instant enabled feature module }
Tạo, thử nghiệm và xuất bản gói ứng dụng mới có hỗ trợ phiên bản tức thì
Sau khi hoàn tất các bước trên trang này, dự án của bạn có thể tạo một cấu phần phần mềm duy nhất (Android App Bundle) mà bạn có thể sử dụng để phát hành cả phiên bản cài đặt và phiên bản tức thì của ứng dụng lên Google Play Console, đồng thời ra mắt riêng cho kênh tức thì và kênh cần cài đặt. Ngoài ra, với gói ứng dụng, bạn sẽ được hưởng lợi từ việc phân phát các tệp APK được tối ưu hoá cho cấu hình thiết bị của từng người dùng. Nhờ đó, họ chỉ cần tải mã và tài nguyên cần thiết xuống để chạy ứng dụng của bạn. Tức là bạn không còn phải tạo, ký và quản lý nhiều tệp APK để hỗ trợ nhiều loại thiết bị, đồng thời người dùng sẽ nhận được tệp tải xuống nhỏ hơn và tối ưu hoá hơn.
Để bắt đầu tạo và kiểm thử gói ứng dụng có hỗ trợ phiên bản tức thì, hãy chuyển đến phần Tạo gói ứng dụng.