Di chuyển ứng dụng tức thì để hỗ trợ Android App Bundle

Nếu bạn vẫn đang sử dụng trình bổ trợ Feature Android cho Gradle không dùng nữa (com.android.feature) cho mô-đun Ứng dụng Android tức thì của mình, bạn cần phải 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ó hỗ trợ cho trải nghiệm tức thì. Tức là nếu mô-đun ứng dụng cơ sở đáp ứng theo các yêu cầu của trải nghiệm tức thì thì bạn sẽ tự động được hưởng lợi ích. Sau đó, bạn có thể bao gồm 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. Chế độ thiết lập này giúp dễ dàng hơn trong việc hỗ trợ cả trải nghiệm ứng dụng được cài đặt và trải nghiệm ứng dụng tức thì từ một dự án và cho phép bạn hưởng lợi từ việc xuất bản 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 cần cài đặt hoặc ứng dụng tức thì. 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 của bạn dưới dạng Android Gói ứng dụng 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"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 ứng dụng của bạn. com.android.application com.android.dynamic-feature (với dist:instant="false"dist:onDemand="false" trong tệp kê khai của mô-đun)

Trang này hướng dẫn bạn cách di chuyển dự án ứng dụng tức thì hiện có để tạo Android App Bundle có hỗ trợ phiên bản tức thì. Tài liệu này cũng mô tả cách xây dựng, 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 Tạo mô-đun tính năng hỗ trợ phiên bản tức thì.

Tìm hiểu những thay đổi

Khi bạn di chuyển dự án của mình sang sử dụng plugin Tính năng động, Android App Bundle mang đến một cách thức mới để xây dựng và phát hành ứng dụng của bạn, giúp đơn giản hoá đáng kể việc phân phối APK được 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ả mã đã biên dịch của ứng dụng và tài nguyên để tải lên, nhưng trì hoãn việc tạo APK và đăng nhập vào Google Play. Sau đó, mô hình phân phối ứng dụng mới của Google Play sử dụng gói ứng dụng để tạo và phân phát tệp APK được tối ưu hoá cho từng thiết bị của người dùng để chúng chỉ 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 xây dựng, ký và quản lý nhiều APK để hỗ trợ nữa các thiết bị khác nhau và người dùng có được các tệp tải xuống nhỏ hơn và được tối ưu hoá hơn.

Khi sử dụng trình bổ trợ tính năng hiện không được dùng nữa, bạn cần tạo một ứng dụng tức thì tạo một mô-đun tính năng cơ sở, trong đó chứa mã và các tài nguyên dùng chung cho tất cả các mô-đun của bạn, 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ở, có chứa đ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 cần thiết chỉ đối với ứng dụng đã cài đặt của bạn.

Khi bạn di chuyển ứng dụng để hỗ trợ Android App Bundle, mô-đun ứng dụng của bạn lấy lại vai trò của mô-đun cơ sở và bạn sắp xếp các liên kết đã cài đặt hoặc trải nghiệm tức thì dưới dạng mô-đun tính năng. Điều đó có nghĩa là dự án của bạn bây giờ nhiều hơn gần giống với dự án ứng dụng chuẩn, có mô-đun cơ sở hỗ trợ phiên bản tức thì và khả năng đưa trải nghiệm tức thì bổ sung theo mô-đun.

Để di chuyển dự án ứng dụng tức thì hiện có và áp dụng Android App Bundle mô hình phân phối được tối ưu hoá hơn, hãy làm theo các bước được mô tả trong phần bên dưới.

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 chuyển đổi mô-đun đó thành mô-đun ứng dụng chính, như sau:

  1. Xoá dòng baseFeature true.
  2. Xoá mọi phần phụ thuộc sử dụng phần phụ thuộc feature hoặc application .

    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"))
    }
    
  3. 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 sẽ nằm trong mô-đun ứng dụng cơ sở của bạn, từ mô-đun mô-đun com.android.application sang mô-đun com.android.feature. Hơi nhiều ví dụ được trình bày dưới đây. Đối với bước này, tùy thuộc vào chỉ số cụ thể của bạn Khi thiết lập build.gradle, bạn có thể dễ dàng sao chép và dán android hơn khối build.gradle từ mô-đun ứng dụng trước đó vào ứng dụng mới tệp build.gradle của mô-đun. Tuy nhiên, bạn nên thận trọng khi thực hiện vì 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"
                )
            }
        }
    }
    
  4. Đánh dấu mô-đun tính năng là hỗ trợ phiên bản tức thì bằng cách thêm gói thích hợp thẻ phân phối vào tệp kê khai, như được thể hiện dưới đây.

    <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
        <dist:module dist:instant="true" />
        ...
    </manifest>
    
  5. Chuyển đổi mô-đun tính năng thành mô-đun ứng dụng cơ sở bằng cách thay đổi trình bổ trợ của mô-đun đó nhập 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 xóa nó—vì các bước bạn đã làm theo trong phần trước đã chuyển đổi mô-đun tính năng vào mô-đun ứng dụng cơ sở của ứng dụng.

Tuy nhiên, nếu bạn có mã và tài nguyên trong mô-đun ứng dụng cũ đại diện cho chức năng bạn muốn cung cấp cho người dùng khi họ cài đặt ứng dụng của bạn, 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.

Để tạo mô-đun tính năng, bạn cần thay đổi loại trình bổ trợ từ com.android.application đến com.android.dynamic-feature, cùng với một vài các thay đổi khác của build.gradle như sau:

  1. Thay đổi loại trình bổ trợ từ com.android.application thành com.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")
    }
    
  2. Như đã mô tả trong phần trước, hãy đảm bảo bạn đã di chuyển bản dựng các cấu hình mà trình bổ trợ com.android.application yêu cầu cho mô-đun ứng dụng cơ sở, chẳng hạn như quy tắc applicationId hoặc proguardFiles.

  3. Đổi tên mô-đun thành "installed_feature" (cài đặt_tính năng) như sau:

    1. Mở ngăn Project (Dự án) bằng cách chọn View > (Xem >) Cửa sổ công cụ > Project (Dự án) từ thanh trình đơn.
    2. Nhấp chuột phải vào mô-đun tính năng rồi chọn Tái cấu trúc > Đổi tên.
    3. 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.
    4. Nhập tên mới cho mô-đun và nhấp vào OK.
  4. Tương tự như bước 3, hãy đổi tên mô-đun ứng dụng mới mà bạn đã tạo ở trên thành một phần như "ứng dụng".

  5. Thêm phần phụ thuộc triển khai vào mô-đun "app" trong tính năng tệp build.gradle của mô-đun, như được hiển thị 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"))
    }
    
  6. Thêm tính năng 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"))
    }
    
  7. 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ột 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 các mô-đun tính năng hỗ trợ phiên bản tức thì

Nếu bạn đã mô-đun hoá chức năng bổ sung của ứng dụng thành nhiều Tính năng mô-đun, bạn cần làm theo các bước trong phần này để chuyển đổi các mô-đun đó thành các 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 thành các tính năng hỗ trợ phiên bản tức thì:

  1. Thay đổi loại trình bổ trợ trong tệp build.gradle thành com.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")
    }
    
  2. Đá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>
    
  3. Thêm mô-đun tính năng vào tệp build.gradle của mô-đun ứng dụng mới nơi bạn thêm installed_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 bạn hoàn tất các bước trên trang này, dự án của bạn có thể tạo 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 tức thì và đã cài đặt của ứng dụng lên Google Play Console riêng biệt cho phiên bản tức thì và phiên bản cài đặt. Ngoài ra, với ứng dụng gói, bạn sẽ được hưởng lợi từ việc phân phối APK được tối ưu hoá cho cấu hình thiết bị của từng người dùng, do đó họ chỉ tải mã xuống và cần thiết để chạy ứng dụng của bạn. Điều đó có nghĩa là bạn không còn phải tạo, ký và quản lý nhiều APK để hỗ trợ các thiết bị khác nhau, đồng thời người dùng sẽ giảm kích thước của mình, nội dung tải xuống được tối ưu hoá hơn.

Để bắt đầu tạo và thử nghiệm gói ứng dụng có hỗ trợ phiên bản tức thì, hãy truy cập Tạo gói ứng dụng.