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 App Distribution vào quy trình xây dựng Android bằng cách sử dụng trình bổ trợ Gradle App Distribution. 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, giúp bạn định cấu hình bản phân phối cho các loại bản dựng và biến thể khác nhau của ứng dụng.

Hướng dẫn này mô tả cách phân phối tệp APK cho người kiểm thử bằng trình bổ trợ App Distribution cho Gradle.

Trước khi bắt đầu

  1. Nếu bạn chưa thực hiện, hãy thêm Firebase vào dự án Android.

    Nếu không sử dụng bất kỳ sản phẩm nào khác của Firebase, bạn chỉ cần tạo một dự án và đăng ký ứng dụng của mình. Tuy nhiên, nếu bạn quyết định sử dụng thêm các sản phẩm khác trong tương lai, hãy nhớ hoàn tất tất cả các bước trên trang được liên kết ở trên.

  2. Mở trang App Distribution của bảng điều khiển Firebase. Chọn dự án Firebase của bạn khi được nhắc, chọn ứng dụng bằng trình chuyển đổi ứng dụng rồi nhấp vào Bắt đầu.

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 App Distribution 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.5.0" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.3.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.5.0' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.3.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 App Distribution:

    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 proxy hoặc tường lửa của công ty, hãy thêm thuộc tính hệ thống Java sau đây để cho phép App Distribution 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

Trước khi có thể sử dụng trình bổ trợ Gradle, trước tiên, bạn phải xác thực bằng dự án Firebase của mình 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ừ CLI Firebase nếu không có phương thức xác thực nào khác được sử dụng.

Bước 3. Định cấu hình các 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 App Distribution 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 = "APK"
              releaseNotesFile = "/path/to/releasenotes.txt"
              testers = "ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

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

  // ...
}

Bạn có thể định cấu hình App Distribution cho 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 debug và release trong các phiên bản sản phẩm "demo" và "full", 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 bản phân phối:

App Distribution Tham số bản 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ợ Dịch vụ của Google cho Gradle. 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 Firebase trên Trang cài đặt chung. Giá trị trong tệp build.gradle sẽ ghi đè giá trị đầu ra của 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 túy.

testers hoặc testersFile

Địa chỉ email của những 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 kiểm thử 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ử). Các nhóm được chỉ định bằng bí danh nhóm mà bạn có thể tìm thấy trong thẻ Testers (Người kiểm thử) trong bảng điều khiển của Firebase App Distribution.

Bạn có thể chỉ định các nhóm dưới dạng danh sách biệt hiệu 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 một tệp chứa danh sách biệt hiệu nhóm được phân tách bằng dấu phẩy:

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

Thiết bị thử nghiệm mà bạn muốn chạy các thử nghiệm của tác nhân Kiểm thử ứng dụ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"

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 trong quá trình kiểm thử bằng tác nhân Kiểm thử ứng dụng.

testPassword hoặc testPasswordFile

Mật khẩu để đăng nhập tự động, được dùng trong các bài kiểm thử của tác nhân Kiểm thử ứng dụng.

Hoặc bạn có thể chỉ định đường dẫn đến tệp văn bản thuần túy 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 trong quá trình kiểm thử bằng tác nhân Kiểm thử ứng dụng.

testPasswordResource

Tên tài nguyên cho trường mật khẩu để đăng nhập tự động, được dùng trong các bài kiểm thử của tác nhân Kiểm thử ứng dụng.

testNonBlocking

Nếu được đặt khi chạy các bài kiểm thử của tác nhân Kiểm thử ứng dụng, lệnh này sẽ bắt đầu các bài kiểm thử rồi trả về ngay lập tức thay vì chờ các bài kiểm thử hoàn tất. Để xem kết quả thử nghiệm, hãy truy cập vào bảng điều khiển của Firebase. Nếu bạn không đặt cờ này, lệnh sẽ chặn cho đến khi các kiểm thử hoàn tất và thoát bằng mã lỗi nếu có bất kỳ kiểm thử nào không thành công.

resultsBucket

Một bộ chứa Google Cloud Storage (GCS) tuỳ chỉnh, nơi lưu trữ kết quả kiểm thử. Nếu bạn để trống, hệ thống sẽ sử dụng bộ chứa mặc định. Bộ chứa phải thuộc sở hữu của một dự án đã bật tính năng thanh toán và việc chỉ định một bộ chứa sẽ dẫn đến phí thanh toán cho bộ nhớ được sử dụ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 thử nghiệm

  1. Cuối cùng, để đóng gói ứng dụng thử nghiệm và mời người thử nghiệm, hãy tạo các mục tiêu BUILD-VARIANT và appDistributionUploadBUILD-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ề 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 assembleRelease 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 xác thực 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 assembleRelease 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 đối số dòng lệnh dưới dạng --<property-name>=<property-value>. Ví dụ:

    • Cách tải bản gỡ lỗi lên App Distribution:

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="APK"
    • 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:

      ./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 họ vào từng bản phát hành. Người thử nghiệm bị xoá sẽ không còn quyền truy cập vào các bản phát hành trong dự án của bạn, nhưng có thể vẫn có quyền truy cập vào các bản phát hành của bạn trong một khoảng thời gian.

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

    Các tác vụ appDistributionAddTesters và appDistributionRemoveTesters 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ụ của Google. Đây là cùng một đối số mà hành động 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 rằng người kiểm thử cũng như các nhà phát triển khác có bản phát hành phù hợp:

  • firebase_console_uri – Đường liên kết đến Play Console Firebase cho thấy một bản phát hành duy nhất. 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 thử nghiệm (ứng dụng Android tích hợp sẵn) cho phép người thử nghiệm 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.
  • binary_download_uri – Đường liên kết đã ký để trực tiếp tải xuống 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 trong trang tổng quan App Distribution của bảng điều khiển Firebase trong 150 ngày (5 tháng). Khi bản dựng còn 30 ngày nữa là hết hạn, 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 của người kiểm thử trên thiết bị kiểm thử của họ.

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, còn những người kiểm thử hiện tại sẽ nhận được thông báo qua email rằng bản dựng mới đã sẵn sàng để kiểm thử (hãy đọc hướng dẫn thiết lập 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ử (cho dù họ đã chấp nhận lời mời và đã tải ứng dụng xuống hay chưa) trong bảng điều khiển Firebase.

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 lời mời hết hạn. Khi lời mời còn 5 ngày nữa là hết hạn, thông báo hết hạn sẽ xuất hiện trong bảng điều khiển Firebase bên cạnh người kiểm thử trong một 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