Tạo gói ứng dụng có hỗ trợ phiên bản tức thì

Bạn tạo trải nghiệm Google Play Instant bằng cách đưa trải nghiệm này vào Android App Bundle. Gói như vậy được gọi là gói ứng dụng có hỗ trợ phiên bản tức thì. Tài liệu này trình bày cách thiết lập môi trường phát triển cho gói ứng dụng có hỗ trợ phiên bản tức thì, cũng như cách định cấu hình, tạo, kiểm thử và phát hành gói ứng dụng có hỗ trợ phiên bản tức thì.

Nếu bạn hiện có một dự án ứng dụng tức thì sử dụng trình bổ trợ tính năng không dùng nữa (com.android.feature), hãy tìm hiểu cách di chuyển ứng dụng tức thì để hỗ trợ Android App Bundle.

Thiết lập môi trường phát triển

Để cung cấp trải nghiệm tức thì trong một gói ứng dụng, bạn cần có quyền truy cập vào SDK phát triển tức thì của Google Play. Bạn có thể cài đặt SDK này bằng một trong các phương thức sau:

  • Cài đặt Android Studio 3.6 trở lên. Sau khi mở Android Studio, hãy tải Google Play Instant Development SDK xuống từ thẻ SDK Tools (Bộ công cụ SDK) trong SDK Manager (Trình quản lý SDK).
  • Cài đặt qua dòng lệnh:

    cd path/to/android/sdk/tools/bin && \
      ./sdkmanager 'extras;google;instantapps'
    

Ngoài ra, nếu bạn muốn kiểm thử trải nghiệm tức thì trên thiết bị, hãy truy cập vào thiết bị thực hoặc ảo.

Tìm hiểu về các điều kiện thực thi bắt buộc

Google Play Instant chạy các gói ứng dụng có hỗ trợ phiên bản tức thì trong một loại hộp cát SELinux đặc biệt để tăng cường bảo mật. Hộp cát này cho phép một số ít quyền, cũng như giới hạn các loại tương tác với các ứng dụng khác. Các phần sau sẽ giải thích chi tiết hơn về các đặc điểm của hộp cát này.

Các quyền và thao tác được hỗ trợ

Các gói ứng dụng có hỗ trợ phiên bản tức thì chỉ có thể sử dụng các quyền trong danh sách sau:

Xử lý các quyền phổ biến không được hỗ trợ

Sau đây là danh sách các quyền phổ biến, không được hỗ trợ mà bạn phải xoá khỏi ứng dụng và đường dẫn di chuyển đề xuất cho từng quyền:

  • ACCESS_WIFI_STATE: Sử dụng ACCESS_NETWORK_STATE để cung cấp thông tin tương tự như ACCESS_WIFI_STATE.
  • BILLING: Đây là quyền không còn được dùng nữa. Hãy sử dụng Thư viện Google Play Billing. Thư viện này không còn yêu cầu quyền com.android.vending.BILLING nữa.
  • READ/WRITE_EXTERNAL_STORAGE: Ứng dụng tức thì không có quyền truy cập vào bộ nhớ ngoài; hãy sử dụng bộ nhớ trong.
  • com.google.android.c2dm.permission.RECEIVEpermission.C2D_MESSAGE: C2DM không được dùng nữa. Di chuyển sang Giải pháp gửi thông báo qua đám mây của Firebase (FCM). FCM không cần thêm bất kỳ quyền nào để hoạt động.

Ngoài ra, gói ứng dụng có hỗ trợ phiên bản tức thì không thể làm những việc sau:

Quyền truy cập vào ứng dụng đã cài đặt

Khi phát triển trải nghiệm tức thì, hãy lưu ý rằng trải nghiệm đó không thể tương tác với các ứng dụng cần cài đặt trên thiết bị, trừ phi một trong những điều sau là đúng:

  • Một hoặc nhiều hoạt động trong ứng dụng cần cài đặt đã đặt phần tử android:visibleToInstantApps thành truePhần tử này có sẵn cho các ứng dụng chạy Android 8.0 (API cấp 26) trở lên.
  • Ứng dụng đã cài đặt chứa bộ lọc ý định bao gồm CATEGORY_BROWSABLE.
  • Trải nghiệm tức thì gửi một ý định bằng thao tác ACTION_SEND, ACTION_SENDTO hoặc ACTION_SEND_MULTIPLE.

Định cấu hình dự án của bạn cho trải nghiệm tức thì

Để tương thích với Google Play Instant, bạn phải định cấu hình kỹ một số khía cạnh của gói ứng dụng có hỗ trợ phiên bản tức thì. Các phần sau đây mô tả những điểm cần cân nhắc này.

Khai báo các phần phụ thuộc của dự án

Để sử dụng API Google Play Instant trong ứng dụng, hãy đưa nội dung khai báo sau vào tệp cấu hình build.gradle của mô-đun ứng dụng:

Groovy

implementation "com.google.android.gms:play-services-instantapps:17.0.0"

Kotlin

implementation("com.google.android.gms:play-services-instantapps:17.0.0")

Xác định đúng mã phiên bản

Mã phiên bản của trải nghiệm tức thì ứng dụng phải nhỏ hơn mã phiên bản của ứng dụng có thể cài đặt. Kỳ vọng là người dùng sẽ chuyển từ trải nghiệm Google Play Instant sang tải và cài đặt ứng dụng trên thiết bị của họ. Khung Android coi quá trình chuyển đổi này là một bản cập nhật ứng dụng.

Để đảm bảo bạn tuân thủ lược đồ tạo phiên bản mà người dùng mong đợi, hãy làm theo một trong các chiến lược sau:

  • Khởi động lại mã phiên bản đối với trải nghiệm Google Play Instant tại 1.
  • Tăng mã phiên bản của tệp APK có thể cài đặt lên một con số lớn, chẳng hạn như 1000, để đảm bảo có đủ khoảng giá trị để tăng mã phiên bản của ứng dụng tức thì .

Bạn có thể phát triển ứng dụng tức thì và ứng dụng có thể cài đặt trong hai dự án Android Studio riêng biệt. Tuy nhiên, nếu làm như vậy, bạn phải làm như sau để phát hành ứng dụng lên Google Play:

  1. Sử dụng cùng một tên gói trong cả hai dự án Android Studio.
  2. Trong Google Play Console, hãy tải cả hai biến thể lên cùng một ứng dụng.

Để biết thêm thông tin chi tiết về cách đặt phiên bản của ứng dụng, hãy xem phần Lập phiên bản ứng dụng.

Cập nhật phiên bản sandbox mục tiêu

Bạn cần cập nhật tệp AndroidManifest.xml của ứng dụng tức thì để nhắm đến môi trường hộp cát mà Google Play Instant hỗ trợ. Bạn có thể hoàn tất quy trình cập nhật này bằng cách thêm thuộc tính android:targetSandboxVersion vào phần tử <manifest> của ứng dụng, như minh hoạ trong đoạn mã sau:

<manifest
   xmlns:android="http://schemas.android.com/apk/res/android"
  ...
   android:targetSandboxVersion="2" ...>

Để biết thêm thông tin, hãy xem tài liệu về thuộc tính targetSandboxVersion.

Khai báo mô-đun ứng dụng có hỗ trợ phiên bản tức thì

Bạn có thể khai báo rằng gói ứng dụng của mình hỗ trợ trải nghiệm tức thì bằng một trong các phương thức sau:

  • Nếu đang có một gói ứng dụng hiện chỉ chứa một mô-đun cơ sở, thì bạn có thể hỗ trợ phiên bản tức thì của gói ứng dụng đó như sau:

    1. Mở bảng điều khiể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.
    2. Nhấp chuột phải vào mô-đun cơ sở, thường có tên là "app" (ứng dụng), rồi chọn Refactor > Enable Instant Apps Support (Tái cấu trúc > Bật chế độ hỗ trợ Ứng dụng tức thì).
    3. Trong hộp thoại xuất hiện, hãy chọn mô-đun cơ sở trên trình đơn thả xuống.
    4. Nhấp vào OK.

    Android Studio thêm nội dung khai báo sau vào tệp kê khai của mô-đun:

    <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
        <dist:module dist:instant="true" />
        ...
    </manifest>
    
  • Nếu đang có một gói ứng dụng chứa nhiều mô-đun, bạn có thể Tạo một mô-đun tính năng hỗ trợ phiên bản tức thì. Quá trình này cũng hỗ trợ tức thì mô-đun cơ sở của ứng dụng, cho phép bạn hỗ trợ nhiều điểm truy cập tức thì trong ứng dụng.

Thêm tính năng hỗ trợ đăng nhập

Nếu trải nghiệm tức thì cho phép người dùng đăng nhập, thì gói ứng dụng hỗ trợ phiên bản tức thì của bạn phải hỗ trợ Smart Lock cho Mật khẩu trên Android. Nếu đang xây dựng trò chơi"Chơi tức thì", bạn nên sử dụng tính năng đăng nhập bằng Dịch vụ trò chơi của Google Play.

Hỗ trợ môi trường thực thi

Để tương thích với hộp cát SELinux nơi chạy trải nghiệm tức thì, hãy lưu ý những điều sau khi tạo gói ứng dụng hỗ trợ phiên bản tức thì:

  • Không chia sẻ giá trị của myUid(), UID do quy trình ứng dụng chỉ định.
  • Nếu ứng dụng của bạn nhắm đến Android 8.1 (API cấp 27) trở xuống, hãy tạo tệp Network Security Config và đặt cleartextTrafficPermitted thành false. Trải nghiệm tức thì không hỗ trợ lưu lượng truy cập HTTP. Đối với những ứng dụng nhắm đến Android 9 trở lên, lưu lượng truy cập qua văn bản thô sẽ bị vô hiệu hoá theo mặc định.
  • Ứng dụng tức thì vẫn được tải xuống trên thiết bị của người dùng cho đến khi bộ nhớ đệm của ứng dụng tức thì bị xoá. Điều này xảy ra ở một trong các trường hợp sau:

    • Bộ nhớ đệm phiên bản trải nghiệm tức thì bị thu hồi trong quá trình dọn rác do thiết bị sắp hết bộ nhớ còn trống.
    • Người dùng khởi động lại thiết bị.

    Nếu một trong hai quá trình đó xảy ra, người dùng phải tải lại phiên bản tức thì xuống để có thể tương tác với trò chơi.

  • Nếu hệ thống sắp hết dung lượng lưu trữ, thì có thể dữ liệu người dùng của phiên bản trải nghiệm tức thì bị xoá khỏi bộ nhớ trong. Do đó, bạn nên đồng bộ hoá dữ liệu người dùng với máy chủ của ứng dụng theo định kỳ để tiến trình của người dùng được giữ nguyên.

Thêm logic cho quy trình làm việc của phiên bản trải nghiệm tức thì

Sau khi bạn định cấu hình gói ứng dụng để hỗ trợ trải nghiệm tức thì, hãy thêm logic được hiển thị trong các phần sau.

Kiểm tra xem ứng dụng có đang chạy phiên bản trải nghiệm tức thì hay không

Nếu một số logic của ứng dụng phụ thuộc vào việc người dùng có tương tác với trải nghiệm tức thì hay không, hãy gọi phương thức isInstantApp(). Phương thức này trả về true nếu quá trình hiện đang chạy là trải nghiệm tức thì.

Hiển thị lời nhắc cài đặt

Nếu bạn đang tạo phiên bản dùng thử của ứng dụng hoặc trò chơi, thì Google Play Instant sẽ cho phép bạn hiển thị lời nhắc trong trải nghiệm tức thì, mời người dùng cài đặt toàn bộ trải nghiệm trên thiết bị của họ. Để hiển thị lời nhắc này, hãy sử dụng phương thức InstantApps.showInstallPrompt() như minh hoạ trong đoạn mã sau đây:

Kotlin

class MyInstantExperienceActivity : AppCompatActivity {
    // ...
    private fun showInstallPrompt() {
        val postInstall = Intent(Intent.ACTION_MAIN)
                .addCategory(Intent.CATEGORY_DEFAULT)
                .setPackage(your-installed-experience-package-name)

        // The request code is passed to startActivityForResult().
        InstantApps.showInstallPrompt(this@MyInstantExperienceActivity,
                postInstall, request-code, /* referrer= */ null)
    }
}

Java

public class MyInstantExperienceActivity extends AppCompatActivity {
    // ...
    private void showInstallPrompt() {
        Intent postInstall = new Intent(Intent.ACTION_MAIN)
                .addCategory(Intent.CATEGORY_DEFAULT)
                .setPackage(your-installed-experience-package-name);

        // The request code is passed to startActivityForResult().
        InstantApps.showInstallPrompt(MyInstantExperienceActivity.this,
                postInstall, request-code, /* referrer= */ null);
    }
}

Chuyển dữ liệu sang trải nghiệm đã cài đặt

Nếu người dùng thích trải nghiệm tức thì, họ có thể quyết định cài đặt ứng dụng của bạn. Để mang lại trải nghiệm tốt cho người dùng, điều quan trọng là dữ liệu của người dùng phải được chuyển từ phiên bản trải nghiệm tức thì sang phiên bản đầy đủ của ứng dụng.

Nếu người dùng đang sử dụng một thiết bị chạy Android 8.0 (API cấp 26) trở lên và nếu ứng dụng của bạn chỉ định targetSandboxVersion2, thì dữ liệu của người dùng sẽ tự động được chuyển sang phiên bản đầy đủ của ứng dụng. Nếu không, bạn phải chuyển dữ liệu theo cách thủ công. Để làm điều này, hãy sử dụng một trong các API sau:

  • Đối với người dùng sử dụng thiết bị chạy Android 8.0 (API cấp 26) trở lên, hãy sử dụng Cookie API – ứng dụng mẫu
  • Nếu người dùng có thể tương tác với trải nghiệm của bạn trên các thiết bị chạy Android 7.1 (API cấp 25) trở xuống, hãy thêm tính năng hỗ trợ cho Storage API – ứng dụng mẫu

Tạo gói ứng dụng

Bạn có thể sử dụng Android Studio hoặc giao diện dòng lệnh để tạo gói ứng dụng có hỗ trợ phiên bản tức thì.

Android Studio

Khi sử dụng Android Studio, bạn có thể tạo gói ứng dụng bằng cách chọn Build > Build Bundle(s)/APK(s) > Build Bundle(s) (Tạo > Tạo gói/APK >Tạo gói ứng dụng). Để biết thêm thông tin về cách tạo dự án, hãy xem bài viết Tạo dự án.

Giao diện dòng lệnh

Bạn cũng có thể tạo gói ứng dụng từ dòng lệnh bằng Gradle.

Hỗ trợ kiến trúc 64 bit

Các ứng dụng được phát hành trên Google Play cần hỗ trợ kiến trúc 64 bit. Việc thêm phiên bản 64 bit cho ứng dụng của bạn sẽ cải thiện hiệu suất và giúp bạn đáp ứng các thiết bị chỉ có phần cứng 64 bit. Tìm hiểu thêm về dịch vụ hỗ trợ kiến trúc 64 bit.

Kiểm thử trải nghiệm tức thì

Trước khi phát hành gói ứng dụng có hỗ trợ phiên bản tức thì, bạn có thể kiểm thử trải nghiệm tức thì tại một trong những vị trí sau để xác minh chức năng:

Android Studio

Để kiểm thử trải nghiệm tức thì của ứng dụng trên máy cục bộ bằng Android Studio, hãy hoàn thành các bước sau:

  1. Nếu bạn đã cài đặt một phiên bản ứng dụng trên thiết bị kiểm thử, hãy gỡ cài đặt phiên bản đó.
  2. Trong Android Studio, từ các tuỳ chọn cài đặt xuất hiện trên thẻ General (Chung) của hộp thoại Run/Debug Configurations (Cấu hình chạy/gỡ lỗi), hãy bật hộp đánh dấu Deploy as instant app (Triển khai dưới dạng ứng dụng tức thì).
  3. Chọn Run > Run (Chạy > Chạy) trong thanh trình đơn hoặc nhấp vào biểu tượng Chạy trên thanh công cụ, sau đó chọn thiết bị mà bạn muốn kiểm thử trải nghiệm tức thì của ứng dụng. Trải nghiệm tức thì của ứng dụng sẽ tải trên thiết bị kiểm thử mà bạn đã chọn.

Giao diện dòng lệnh

Để kiểm thử trải nghiệm tức thì của ứng dụng trên máy cục bộ bằng dòng lệnh, hãy hoàn thành các bước sau:

  1. Nếu bạn đã cài đặt một phiên bản ứng dụng trên thiết bị kiểm thử, hãy gỡ cài đặt phiên bản đó.
  2. Tải không qua cửa hàng và chạy ứng dụng tức thì trên thiết bị kiểm thử bằng cách nhập lệnh sau:
ia run output-from-build-command

Kênh kiểm thử nội bộ

Để kiểm thử trải nghiệm tức thì của ứng dụng trên Cửa hàng Play hoặc biểu ngữ trên trang web, hãy phát hành ứng dụng lên kênh kiểm thử nội bộ trên Play Console.

Để xuất bản ứng dụng lên kênh kiểm thử nội bộ, hãy hoàn thành các bước sau:

  1. Tải gói ứng dụng của bạn lên bằng cách làm theo các bước trong hướng dẫn Tải gói ứng dụng lên Play Console.
  2. Chuẩn bị gói đã tải lên cho bản phát hành lên kênh kiểm thử nội bộ. Để biết thêm thông tin, hãy xem bài viết hỗ trợ về cách Chuẩn bị và ra mắt bản phát hành.
  3. Đăng nhập vào tài khoản người kiểm thử nội bộ trên thiết bị, sau đó chạy trải nghiệm tức thì qua một trong những nền tảng sau:

    • Nút Try now (Thử ngay) tại trang thông tin của ứng dụng trên Cửa hàng Play.
    • Đường liên kết trong biểu ngữ trên trang web của ứng dụng.

Phát hành gói ứng dụng lên kênh phát hành công khai

Để phát hành gói ứng dụng có hỗ trợ phiên bản tức thì, hãy hoàn tất các bước sau:

  1. Nếu bạn chưa thực hiện, hãy ký gói ứng dụng bằng khoá phát hànhtải gói ứng dụng lên Play Console.
  2. Trong Play Console, hãy mở phần Quản lý bản phát hành > Ứng dụng Android tức thì, sau đó chuyển đến kênh phát hành ứng dụng tức thì.
  3. Chọn Cập nhật từ thư viện, sau đó chọn gói ứng dụng có hỗ trợ phiên bản tức thì mà bạn đã tải lên.

Chọn nơi xuất bản trải nghiệm tức thì

Bạn có thể phát hành trải nghiệm tức thì cho ứng dụng tại một số quốc gia và khu vực nơi mọi người có thể cài đặt ứng dụng của bạn. Tính năng này rất hữu ích trong trường hợp bạn muốn quảng bá trải nghiệm tức thì của ứng dụng cho người dùng cư trú ở một nhóm quốc gia và khu vực cụ thể.

Tài nguyên khác

Để tìm hiểu thêm về cách tạo trải nghiệm tức thì và Android App Bundle, hãy xem các tài nguyên sau:

Video: Tích hợp một ứng dụng vào gói tức thì
Tìm hiểu cách thêm trải nghiệm tức thì vào Android App Bundle trong phiên hội nghị Nhà phát triển Android 2018 này.
Video: Phát hành ứng dụng có kích thước nhỏ hơn nhờ Android App Bundle
Tìm hiểu cách gói ứng dụng giúp bạn phát triển ứng dụng nhanh hơn và tạo tệp APK nhỏ hơn cho người dùng.
Lớp học lập trình: Android App Bundle đầu tiên của bạn
Hướng dẫn từng bước để tạo Android App Bundle và thêm các tính năng vào Android App Bundle.
Định dạng Android App Bundle
Tìm hiểu thêm về cách chương trình dòng lệnh bundletool sắp xếp một gói ứng dụng dựa trên mã nguồn và tài nguyên của ứng dụng.