Phân phối ứng dụng Android cho người kiểm thử bằng Gradle

Bạn có thể tích hợp tính năng Phân phối ứng dụng vào quy trình xây dựng Android bằng cách sử dụng trình bổ trợ Gradle cho Phân phối ứng dụng. Trình bổ trợ này cho phép bạn chỉ định người kiểm thử và ghi chú phát hành trong tệp Gradle của ứng dụng, cho phép bạn định cấu hình các bản phân phối cho nhiều loại bản dựng và biến thể của ứng dụng.

Hướng dẫn này mô tả cách phân phối Android App Bundle (AAB) cho người kiểm thử bằng trình bổ trợ Gradle cho Phân phối ứng dụng.

Tính năng Phân phối ứng dụng tích hợp với dịch vụ chia sẻ ứng dụng nội bộ của Google Play để xử lý các tệp AAB mà bạn tải lên và phân phát tệp APK được tối ưu hoá cho cấu hình thiết bị của người kiểm thử. Khi phân phối tệp AAB, bạn có thể làm những việc sau:

  • Chạy các tệp APK được tối ưu hoá (do Google Play phân phát) được tối ưu hoá cho thiết bị của người kiểm thử.

  • Phát hiện và gỡ lỗi các vấn đề cụ thể theo thiết bị.

  • Kiểm thử các tính năng của gói ứng dụng như Play Feature DeliveryPlay Asset Delivery.

  • Giảm kích thước tệp tải xuống cho người kiểm thử.

Các quyền bắt buộc

Để tải tệp AAB lên tính năng Phân phối ứng dụng, bạn phải liên kết ứng dụng Firebase của mình với một ứng dụng trong Google Play. Bạn phải có cấp truy cập cần thiết để thực hiện những thao tác này.

Nếu không có quyền truy cập cần thiết vào Firebase, bạn có thể yêu cầu Chủ sở hữu dự án Firebase chỉ định cho bạn vai trò phù hợp thông qua chế độ cài đặt nguyên tắc quản lý danh tính và quyền truy cập (IAM) trên bảng điều khiển của Firebase. Nếu bạn có thắc mắc về việc truy cập vào dự án Firebase của mình, bao gồm cả việc tìm hoặc chỉ định Chủ sở hữu, hãy xem Câu hỏi thường gặp về"Quyền và quyền truy cập vào dự án Firebase".

Bảng sau đây áp dụng cho việc liên kết ứng dụng Firebase với ứng dụng trong Google Play, cũng như việc tải tệp AAB lên.

Thao tác trong bảng điều khiển của Firebase Quyền quản lý danh tính và quyền truy cập (IAM) bắt buộc (Các) vai trò IAM bao gồm các quyền cần thiết theo mặc định (Các) vai trò bắt buộc khác
Liên kết ứng dụng Firebase với một ứng dụng trong Google Play firebase.playLinks.update Một trong những vai trò sau: Quyền truy cập vào tài khoản nhà phát triển trên Google Play trong vai trò là Quản trị viên
Tải tệp AAB lên tính năng phân phối ứng dụng firebaseappdistro.releases.update Một trong những vai trò sau: ––

Trước khi bắt đầu

  1. Thêm Firebase vào dự án Android của bạn nếu bạn chưa thực hiện. Khi kết thúc quy trình công việc này, bạn sẽ có một Ứng dụng Android của Firebase trong dự án Firebase.

    Nếu không sử dụng bất cứ sản phẩm Firebase nào khác, bạn chỉ cần tạo một dự án và đăng ký ứng dụng của mình. Nếu bạn quyết định sử dụng sản phẩm bổ sung, hãy nhớ hoàn thành tất cả các bước trong bài viết Thêm Firebase vào dự án Android.

  2. Để tạo đường liên kết đến Firebase với Google Play và tải tệp AAB lên, hãy đảm bảo ứng dụng của bạn đáp ứng các yêu cầu sau:

    • Cả ứng dụng trong Google Play và ứng dụng Firebase dành cho Android đều được đăng ký bằng cùng một tên gói.

    • Ứng dụng trong Google Play được thiết lập trên trang tổng quan của ứng dụng và được phân phối đến một trong các kênh Google Play (Kiểm thử nội bộ, Kiểm thử khép kín, Kiểm thử công khai hoặc Phát hành công khai).

    • Quá trình xem xét ứng dụng trên Google Play đã hoàn tất và ứng dụng đã được xuất bản. Ứng dụng được phát hành nếu cột Trạng thái ứng dụng hiển thị một trong các trạng thái sau: Kiểm thử nội bộ (không phải Kiểm thử nội bộ Bản nháp), Kiểm thử khép kín, Kiểm thử công khai hoặc Phát hành công khai.

  3. Liên kết ứng dụng Android trên Firebase với tài khoản nhà phát triển trên Google Play:

    1. Trong bảng điều khiển của Firebase, hãy chuyển đến phần Cài đặt dự án, sau đó chọn thẻ Tích hợp.

    2. Trên thẻ Google Play, hãy nhấp vào Liên kết.
      Nếu bạn đã có đường liên kết đến Google Play, hãy nhấp vào Quản lý.

    3. Làm theo hướng dẫn trên màn hình để bật tính năng tích hợp Phân phối ứng dụng và chọn Ứng dụng Android trên Firebase để liên kết với Google Play.

    Tìm hiểu thêm về cách liên kết với Google Play.

Bước 1. Thiết lập dự án Android

  1. Trong tệp Gradle cấp gốc (cấp dự án) (<project>/build.gradle.kts hoặc <project>/build.gradle), hãy thêm trình bổ trợ Gradle cho Phân phối ứng dụng làm phần phụ thuộc:

    Kotlin

    plugins {
        // ...
        id("com.android.application") version "7.3.0" apply false
    
        // Make sure that you have the Google services Gradle plugin dependency
        id("com.google.gms.google-services") version "4.4.2" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.0.0" apply false
    }
    

    Groovy

    plugins {
        // ...
        id 'com.android.application' version '7.3.0' apply false
    
        // Make sure that you have the Google services Gradle plugin dependency
        id 'com.google.gms.google-services' version '4.4.2' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.0.0' apply false
    }
    
  2. Trong tệp Gradle mô-đun (cấp ứng dụng) (thường là <project>/<app-module>/build.gradle.kts hoặc <project>/<app-module>/build.gradle), hãy thêm trình bổ trợ Gradle cho Phân phối ứng dụng:

    Kotlin

    plugins {
      id("com.android.application")
    
      // Make sure that you have the Google services Gradle plugin
      id("com.google.gms.google-services")
    
      // Add the App Distribution Gradle plugin
      id("com.google.firebase.appdistribution")
    }
    

    Groovy

    plugins {
      id 'com.android.application'
    
      // Make sure that you have the Google services Gradle plugin
      id 'com.google.gms.google-services'
    
      // Add the App Distribution Gradle plugin
      id 'com.google.firebase.appdistribution'
    }
    
  3. Nếu bạn đang sử dụng tường lửa hoặc proxy công ty, hãy thêm thuộc tính hệ thống Java sau đây để cho phép tính năng Phân phối ứng dụng tải các bản phân phối của bạn lên Firebase:

    -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
    

Bước 2. Xác thực bằng Firebase

Để có thể sử dụng trình bổ trợ Gradle, trước tiên, bạn phải xác thực với dự án Firebase theo một trong những cách sau. Theo mặc định, trình bổ trợ Gradle sẽ tìm thông tin xác thực từ Firebase CLI nếu không sử dụng phương thức xác thực nào khác.

Bước 3. Định cấu hình thuộc tính phân phối

Trong tệp Gradle mô-đun (cấp ứng dụng) (thường là <project>/<app-module>/build.gradle.kts hoặc <project>/<app-module>/build.gradle), hãy định cấu hình tính năng Phân phối ứng dụng bằng cách thêm ít nhất một phần firebaseAppDistribution.

Ví dụ: để phân phối bản dựng release cho người kiểm thử, hãy làm theo các hướng dẫn sau:

Kotlin

import com.google.firebase.appdistribution.gradle.firebaseAppDistribution

android {

  // ...

  buildTypes {
      getByName("release") {
          firebaseAppDistribution {
              artifactType = "AAB"
              releaseNotesFile = "/path/to/releasenotes.txt"
              testers = "ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

  buildTypes {
      release {
          firebaseAppDistribution {
              artifactType="AAB"
              releaseNotesFile="/path/to/releasenotes.txt"
              testers="ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Bạn có thể định cấu hình tính năng Phân phối ứng dụng cho các loại bản dựng và phiên bản sản phẩm.

Ví dụ: để phân phối các bản dựng debugrelease trong phiên bản sản phẩm "bản minh hoạ" và "bản đầy đủ", hãy làm theo hướng dẫn sau:

Kotlin

import com.google.firebase.appdistribution.gradle.firebaseAppDistribution

android {

  // ...

  buildTypes {
      getByName("debug") {...}
      getByName("release") {...}
  }

  flavorDimensions += "version"
  productFlavors {
      create("demo") {
          dimension = "version"
          firebaseAppDistribution {
              releaseNotes = "Release notes for demo version"
              testers = "demo@testers.com"
          }
      }
      create("full") {
          dimension = "version"
          firebaseAppDistribution {
              releaseNotes = "Release notes for full version"
              testers = "full@testers.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

  buildTypes {
      debug {...}
      release {...}
  }

  flavorDimensions "version"
  productFlavors {
      demo {
          dimension "version"
          firebaseAppDistribution {
              releaseNotes="Release notes for demo version"
              testers="demo@testers.com"
          }
      }
      full {
          dimension "version"
          firebaseAppDistribution {
              releaseNotes="Release notes for full version"
              testers="full@testers.com"
          }
      }
  }

  // ...
}

Sử dụng các tham số sau để định cấu hình phân phối:

Tham số bản dựng phân phối ứng dụng
appId

Mã ứng dụng Firebase của ứng dụng. Chỉ bắt buộc nếu bạn chưa cài đặt trình bổ trợ Gradle cho các Dịch vụ của Google. Bạn có thể tìm thấy Mã ứng dụng trong tệp google-services.json hoặc trong bảng điều khiển của Firebase trên trang Cài đặt chung. Giá trị trong tệp build.gradle sẽ ghi đè giá trị đầu ra từ trình bổ trợ google-services.

appId="1:1234567890:android:321abc456def7890"
serviceCredentialsFile

Đường dẫn đến tệp JSON chứa khoá riêng tư của tài khoản dịch vụ. Chỉ bắt buộc nếu bạn sử dụng phương thức xác thực tài khoản dịch vụ.

artifactType

Chỉ định loại tệp của ứng dụng. Có thể đặt thành "AAB" hoặc "APK".

artifactPath

Đường dẫn tuyệt đối đến tệp APK hoặc AAB mà bạn muốn tải lên.

releaseNotes hoặc releaseNotesFile

Ghi chú phát hành cho bản dựng này.

Bạn có thể chỉ định trực tiếp ghi chú phát hành hoặc đường dẫn đến tệp văn bản thuần tuý.

testers hoặc testersFile

Địa chỉ email của người kiểm thử mà bạn muốn phân phối bản dựng.

Bạn có thể chỉ định người thử nghiệm dưới dạng danh sách địa chỉ email được phân tách bằng dấu phẩy:

testers="ali@example.com, bri@example.com, cal@example.com"

Hoặc bạn có thể chỉ định đường dẫn đến tệp chứa danh sách địa chỉ email được phân tách bằng dấu phẩy:

testersFile="/path/to/testers.txt"
groups hoặc groupsFile

Nhóm người kiểm thử mà bạn muốn phân phối bản dựng (xem phần Quản lý người kiểm thử). Chỉ định các nhóm bằng tên đại diện của nhóm. Bạn có thể tìm thấy thông tin này trong thẻ Nhân viên kiểm thử trong Bảng điều khiển Phân phối ứng dụng của Firebase.

Bạn có thể chỉ định các nhóm dưới dạng danh sách bí danh nhóm được phân tách bằng dấu phẩy:

groups="qa-team, android-testers"

Hoặc bạn có thể chỉ định đường dẫn đến tệp chứa danh sách bí danh nhóm được phân tách bằng dấu phẩy:

groupsFile="/path/to/tester-groups.txt"
testDevices hoặc testDevicesFile

Những hình thức phân phối sau đây là một phần của Tính năng thử nghiệm beta của người kiểm tra tự động.

Thiết bị kiểm thử mà bạn muốn phân phối bản dựng (xem phần Kiểm thử tự động).

Bạn có thể chỉ định thiết bị thử nghiệm dưới dạng danh sách thông số kỹ thuật của thiết bị được phân tách bằng dấu chấm phẩy:

testDevices="model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"

Hoặc bạn có thể chỉ định đường dẫn đến một tệp chứa danh sách thông số kỹ thuật của thiết bị được phân tách bằng dấu chấm phẩy:

testDevicesFile="/path/to/testDevices.txt"
testUsername

Tên người dùng để tự động đăng nhập được sử dụng trong quá trình kiểm thử tự động.

testPassword hoặc testPasswordFile

Mật khẩu để tự động đăng nhập trong quá trình kiểm thử tự động.

Hoặc bạn có thể chỉ định đường dẫn đến tệp văn bản thuần tuý chứa mật khẩu:

testPasswordFile="/path/to/testPassword.txt"
testUsernameResource

Tên tài nguyên cho trường tên người dùng để tự động đăng nhập được sử dụng trong quá trình kiểm thử tự động.

testPasswordResource

Tên tài nguyên cho trường mật khẩu để tự động đăng nhập được sử dụng trong quá trình kiểm thử tự động.

testNonBlocking

Chạy kiểm thử tự động theo cách không đồng bộ. Hãy truy cập vào bảng điều khiển của Firebase để xem kết quả thử nghiệm tự động.

stacktrace

In dấu vết ngăn xếp cho các ngoại lệ của người dùng. Điều này rất hữu ích khi gỡ lỗi.

Bước 4. Phân phối ứng dụng cho người kiểm thử

  1. Cuối cùng, để đóng gói ứng dụng kiểm thử và mời người kiểm thử, hãy tạo các mục tiêu BUILD-VARIANTappDistributionUploadBUILD-VARIANT bằng trình bao bọc Gradle của dự án, trong đó BUILD-VARIANT là phiên bản sản phẩm và loại bản dựng không bắt buộc mà bạn đã định cấu hình ở bước trước. Để biết thêm thông tin về các phiên bản sản phẩm, hãy xem bài viết Định cấu hình biến thể bản dựng.

    Ví dụ: để phân phối ứng dụng bằng biến thể bản dựng release, hãy chạy lệnh sau:

    ./gradlew bundleRelease appDistributionUploadRelease
    

    Hoặc nếu bạn đã xác thực bằng Tài khoản Google và không cung cấp thông tin đăng nhập trong tệp bản dựng Gradle, hãy thêm biến FIREBASE_TOKEN:

    export FIREBASE_TOKEN=1/a1b2c3d4e5f67890
    ./gradlew --stop // Only needed for environment variable changes
    ./gradlew bundleRelease appDistributionUploadRelease
    
  2. Bạn cũng có thể ghi đè các giá trị được đặt trong tệp build.gradle bằng cách truyền các đối số dòng lệnh có dạng --<property-name>=<property-value>. Ví dụ:

    • Cách tải một bản gỡ lỗi lên tính năng Phân phối ứng dụng:

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="AAB"
      
    • Cách mời thêm người kiểm thử hoặc xoá người kiểm thử hiện có khỏi dự án Firebase của bạn:

      ./gradlew appDistributionAddTesters
          --projectNumber=<project_number>
          --emails="anothertester@email.com, moretesters@email.com"
      ./gradlew appDistributionRemoveTesters
          --projectNumber=<project_number>
          --emails="anothertester@email.com, moretesters@email.com"
      

      Sau khi thêm người kiểm thử vào dự án Firebase, bạn có thể thêm người kiểm thử đó vào từng bản phát hành. Những người kiểm thử đã bị xoá sẽ không còn quyền truy cập vào bản phát hành trong dự án của bạn, nhưng vẫn có thể giữ lại quyền truy cập vào bản phát hành trong một khoảng thời gian.

    Bạn cũng có thể chỉ định người kiểm thử bằng cách sử dụng --file="/path/to/testers.txt" thay vì --emails.

    Tác vụ appDistributionAddTestersappDistributionRemoveTesters cũng chấp nhận các đối số sau:

    • projectNumber: Số dự án Firebase của bạn.

    • serviceCredentialsFile: Đường dẫn đến tệp thông tin xác thực dịch vụ Google của bạn. Đây cũng chính là đối số được thao tác tải lên sử dụng.

Trình bổ trợ Gradle sẽ xuất ra các đường liên kết sau đây sau khi tải bản phát hành lên. Các đường liên kết này giúp bạn quản lý tệp nhị phân và đảm bảo người kiểm thử và nhà phát triển khác có bản phát hành phù hợp:

  • firebase_console_uri – Một đường liên kết đến bảng điều khiển của Firebase hiển thị một bản phát hành. Bạn có thể chia sẻ đường liên kết này với các nhà phát triển khác trong tổ chức của mình.
  • testing_uri – Đường liên kết đến bản phát hành trong trải nghiệm của người kiểm thử (ứng dụng gốc Android) cho phép người kiểm thử xem ghi chú phát hành và cài đặt ứng dụng trên thiết bị của họ. Người kiểm thử cần có quyền truy cập vào bản phát hành để sử dụng đường liên kết này.
  • binary_download_uri – Một đường liên kết đã ký trực tiếp tải và cài đặt tệp nhị phân của ứng dụng (tệp APK hoặc AAB). Đường liên kết sẽ hết hạn sau một giờ.

Sau khi bạn phân phối bản dựng, bản dựng đó sẽ xuất hiện trên trang tổng quan Phân phối ứng dụng trên bảng điều khiển của Firebase trong 150 ngày (5 tháng). Khi bản dựng hết hạn 30 ngày, một thông báo hết hạn sẽ xuất hiện trong cả bảng điều khiển và danh sách bản dựng trên thiết bị kiểm thử của người kiểm thử.

Những người kiểm thử chưa được mời kiểm thử ứng dụng sẽ nhận được lời mời qua email để bắt đầu và những người kiểm thử hiện tại sẽ nhận được thông báo qua email cho biết bản dựng mới đã sẵn sàng để kiểm thử (đọc hướng dẫn thiết lập dành cho người kiểm thử để biết hướng dẫn về cách cài đặt ứng dụng kiểm thử). Bạn có thể theo dõi trạng thái của từng người kiểm thử, xem họ có chấp nhận lời mời và liệu họ có tải ứng dụng xuống trong bảng điều khiển của Firebase hay không.

Người kiểm thử có 30 ngày để chấp nhận lời mời kiểm thử ứng dụng trước khi ứng dụng hết hạn. Khi lời mời hết hạn sau 5 ngày, một thông báo hết hạn sẽ xuất hiện trong bảng điều khiển của Firebase bên cạnh người kiểm thử trong bản phát hành. Bạn có thể gia hạn lời mời bằng cách gửi lại lời mời thông qua trình đơn thả xuống trên hàng người kiểm thử.

Các bước tiếp theo