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

Bạn có thể tích hợp Phân phối ứng dụng vào quy trình xây dựng Android của mình bằng cách sử dụng plugin Phân phối ứng dụng cho Gradle. Plugin cho phép bạn chỉ định người thử nghiệm 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 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 Android App Bundle (AAB) cho người thử nghiệm bằng cách sử dụng plugin Phân phối ứng dụng cho Gradle.

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ý AAB mà bạn tải lên và phân phối APK được tối ưu hóa cho cấu hình thiết bị của người thử nghiệm. Việc phân phối AAB cho phép bạn thực hiện những việc sau:

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

  • Khám phá và gỡ lỗi các vấn đề cụ thể của thiết bị.

  • Thử nghiệm 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ải xuống cho người thử nghiệm của bạn.

Quyền cần thiết

Để tải AAB lên 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ó mức truy cập cần thiết để thực hiện những hành động này.

Nếu không có quyền truy cập Firebase cần thiết, 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 cài đặt IAM của bảng điều khiển Firebase . Nếu bạn có câu hỏi 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 lại 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ư tải AAB lên.

Hành động trong bảng điều khiển Firebase Cần có quyền IAM (Các) vai trò IAM bao gồm các quyền được yêu cầu theo mặc định (Các) vai trò bắt buộc bổ sung
Liên kết ứng dụng Firebase với ứ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 Google Play với tư cách Quản trị viên
Tải AAB lên 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. Nếu bạn chưa có, hãy thêm Firebase vào dự án Android của bạn . Khi kết thúc quy trình công việc này, bạn sẽ có Ứng dụng Firebase Android trong dự án Firebase của mình.

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

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

    • Ứng dụng trong Google Play và ứng dụng Firebase 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 ứng dụng và được phân phối tới một trong các kênh Google Play (Thử nghiệm nội bộ, Thử nghiệm khép kín, Thử nghiệm mở hoặc Sản xuất).

    • Quá trình đánh giá ứng dụng trong Google Play đã hoàn tất và ứng dụng đã được xuất bản. Ứng dụng của bạn được xuất bản nếu cột Trạng thái ứng dụng hiển thị một trong các trạng thái sau: Thử nghiệm nội bộ (không phải thử nghiệm nội bộ nháp), Thử nghiệm khép kín, Thử nghiệm mở hoặc Sản xuất.

  3. Liên kết Ứng dụng Android Firebase với tài khoản nhà phát triển Google Play của bạn:

    1. Trong bảng điều khiển Firebase, hãy truy cập Cài đặt dự án , sau đó chọn tab Tích hợp .

    2. Trên thẻ Google Play , nhấp vào Liên kết .
      Nếu bạn đã có liên kết tới Google Play, thay vào đó 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ích hợp Phân phối ứng dụng và chọn Ứng dụng Android Firebase nào sẽ liên kết với Google Play.

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

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

  1. Trong tệp Gradle cấp cơ sở (cấp dự án) ( <project>/build.gradle.kts hoặc <project>/build.gradle ), hãy thêm plugin Gradle 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.1" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "4.2.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.1' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '4.2.0' apply false
    }
    
  2. Trong tệp Gradle mô-đun (cấp ứng dụng) của bạn (thường là <project>/<app-module>/build.gradle.kts hoặc <project>/<app-module>/build.gradle ), hãy thêm plugin Gradle 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 sử dụng proxy hoặc tường lửa công ty, hãy thêm thuộc tính hệ thống Java sau để cho phép 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

Trước khi có thể sử dụng plugin Gradle, trước tiên bạn phải xác thực với dự án Firebase của mình theo một trong các cách sau. Theo mặc định, plugin Gradle tìm kiế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 của bạn

Trong tệp Gradle mô -đun (cấp ứng dụng) của bạn (thường là <project>/<app-module>/build.gradle.kts hoặc <project>/<app-module>/build.gradle ), hãy định cấu hình 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 release cho người thử nghiệm, 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 Phân phối ứng dụng 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 debugrelease ở các phiên bản sản phẩm "bản demo" và "đầy đủ", hãy làm theo các 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:

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

ID ứng dụng Firebase của ứng dụng của bạn. Chỉ bắt buộc nếu bạn chưa cài đặt plugin Google Services Gradle. Bạn có thể tìm thấy ID ứ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 của bạn sẽ ghi đè giá trị đầu ra từ plugin google-services .

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

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

artifactType

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

artifactPath

Đường dẫn tuyệt đối đến tệp APK hoặc AAB 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 người thử nghiệm mà bạn muốn phân phối bản dựng.

Bạn có thể chỉ định người kiểm tra 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 thử nghiệm mà bạn muốn phân phối bản dựng (xem Quản lý người thử nghiệm ). Các nhóm được chỉ định bằng cách sử dụng bí danh nhóm , bạn có thể tìm thấy tab này trong tab Người thử nghiệm trong bảng điều khiển Phân phối ứng dụng 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"
stacktrace

In ra stacktrace 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 các vấn đề.

testDevices hoặc testDevicesFile

Các loại phân phối sau đây là một phần của tính năng beta dành cho người thử nghiệm tự động .

Các thiết bị thử nghiệm mà bạn muốn phân phối bản dựng tới (xem Thử nghiệm tự động ).

Bạn có thể chỉ định các 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 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 để đăng nhập tự động sẽ được sử dụng trong quá trình kiểm tra tự động .

testPassword

Mật khẩu để đăng nhập tự động được sử dụng trong quá trình kiểm tra tự động .

testUsernameResource

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

testPasswordResource

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

testNonBlocking

Chạy thử nghiệm tự động không đồng bộ. Truy cập bảng điều khiển Firebase để biết kết quả kiểm tra tự động.

Bước 4. Phân phối ứng dụng của bạn cho người thử nghiệm

  1. Cuối cùng, để đóng gói ứng dụng thử nghiệm của bạn và mời người thử nghiệm, hãy xây dựng các mục tiêu BUILD-VARIANTappDistributionUpload BUILD-VARIANT bằng trình bao bọc Gradle của dự án, trong đó BUILD-VARIANT là loại bản dựng và phiên bản sản phẩm tùy chọn 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 Định cấu hình các biến thể bản dựng .

    Ví dụ: để phân phối ứng dụng của bạn bằng biến thể bản 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 của mình và không cung cấp thông tin xác thực trong tệp bản dựng Gradle, hãy bao gồ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 của mình bằng cách chuyển các đối số dòng lệnh ở dạng --<property-name>=<property-value> . Ví dụ:

    • Để tải bản dựng gỡ lỗi lên Phân phối ứng dụng:

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="AAB"
      
    • Để mời những người thử nghiệm bổ sung hoặc xóa những người thử nghiệm 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 người thử nghiệm được thêm vào dự án Firebase của bạn, bạn có thể thêm họ vào từng bản phát hành riêng lẻ. Những người thử nghiệm bị loại bỏ 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 vẫn có thể giữ 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 tra bằng cách sử dụng --file="/path/to/testers.txt" thay vì --emails .

    Các 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 là đối số tương tự được sử dụng bởi hành động tải lên.

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

  • firebase_console_uri - Liên kết tới bảng điều khiển Firebase hiển thị một bản phát hành duy nhất. Bạn có thể chia sẻ 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 - Liên kết tới bản phát hành trong trải nghiệm của người thử nghiệm (ứng dụng gốc của Android) cho phép người thử nghiệm xem ghi chú phát hành và cài đặt ứng dụng vào thiết bị của họ. Người thử nghiệm cần có quyền truy cập vào bản phát hành để sử dụng liên kết.
  • binary_download_uri - Một 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). 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 của mình, bản dựng đó sẽ có sẵn trong bảng điều khiển Phân phối ứng dụng của bảng điều khiển Firebase trong 150 ngày (năm tháng). Khi bản dựng hết hạn còn 30 ngày, 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 các bản dựng của người thử nghiệm trên thiết bị thử nghiệm của họ.

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

Người thử nghiệm có 30 ngày để chấp nhận lời mời dùng thử ứng dụng trước khi ứng dụng hết hạn. Khi lời mời còn 5 ngày kể từ khi 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 thử nghiệm trên bản phát hành. Lời mời có thể được gia hạn bằng cách gửi lại bằng menu thả xuống trên hàng người thử nghiệm.

Bước tiếp theo