Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

แจกจ่ายแอพ Android ให้กับผู้ทดสอบโดยใช้ Gradle

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

เอ

คุณสามารถรวม App Distribution เข้ากับกระบวนการสร้าง Android โดยใช้ปลั๊กอิน App Distribution Gradle ปลั๊กอินช่วยให้คุณระบุผู้ทดสอบและบันทึกประจำรุ่นในไฟล์ build.gradle ของแอป ให้คุณกำหนดค่าการแจกจ่ายสำหรับประเภทบิลด์และรุ่นต่างๆ ของแอป

คู่มือนี้อธิบายวิธีแจกจ่าย APK ให้กับผู้ทดสอบโดยใช้ปลั๊กอิน App Distribution Gradle

ก่อนที่คุณจะเริ่มต้น

หากคุณยังไม่ได้ดำเนินการ ให้ เพิ่ม Firebase ในโครงการ Android ของคุณ

หากคุณไม่ได้ใช้ผลิตภัณฑ์ Firebase อื่นใด คุณเพียงแค่สร้างโปรเจ็กต์และลงทะเบียนแอปของคุณเท่านั้น อย่างไรก็ตาม หากคุณตัดสินใจที่จะใช้ผลิตภัณฑ์เพิ่มเติมในอนาคต อย่าลืมทำตามขั้นตอนทั้งหมดในหน้าที่เชื่อมโยงด้านบน

ขั้นตอนที่ 1 ตั้งค่าโครงการ Android ของคุณ

  1. ในไฟล์ Gradle ระดับรูท (ระดับโปรเจ็กต์) ( <project>/build.gradle หรือ <project>/build.gradle.kts ) ให้เพิ่มปลั๊กอิน App Distribution Gradle เป็นการพึ่งพา buildscript:

    แรง

    buildscript {
      repositories {
        // Make sure that you have the following two repositories
        google()  // Google's Maven repository
        mavenCentral()  // Maven Central repository
      }
    
      dependencies {
          ...
          classpath 'com.android.tools.build:gradle:7.2.0'
    
          // Make sure that you have the Google services Gradle plugin dependency
          classpath 'com.google.gms:google-services:4.3.15'
    
          // Add the dependency for the App Distribution Gradle plugin
          classpath 'com.google.firebase:firebase-appdistribution-gradle:3.2.0'
      }
    }
    

    คอตลิน

    buildscript {
      repositories {
        // Make sure that you have the following two repositories
        google()  // Google's Maven repository
        mavenCentral()  // Maven Central repository
      }
    
      dependencies {
          ...
          classpath("com.android.tools.build:gradle:7.2.0")
    
          // Make sure that you have the Google services Gradle plugin dependency
          classpath("com.google.gms:google-services:4.3.15")
    
          // Add the dependency for the App Distribution Gradle plugin
          classpath("com.google.firebase:firebase-appdistribution-gradle:3.2.0")
      }
    }
    
  2. ในไฟล์ Gradle ของ โมดูล (ระดับแอป) (โดยปกติคือ <project>/<app-module>/build.gradle หรือ <project>/<app-module>/build.gradle.kts ) ให้เพิ่มปลั๊กอิน App Distribution Gradle:

    แรง

    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'
    }
    

    คอตลิน

    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. หากคุณอยู่เบื้องหลังพร็อกซีหรือไฟร์วอลล์ขององค์กร ให้เพิ่ม คุณสมบัติระบบ Java ต่อไปนี้ที่เปิดใช้งาน App Distribution เพื่ออัปโหลดการกระจายของคุณไปยัง Firebase:

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

ขั้นตอนที่ 2 ตรวจสอบสิทธิ์กับ Firebase

ก่อนที่คุณจะสามารถใช้ปลั๊กอิน Gradle ได้ คุณต้องตรวจสอบสิทธิ์กับโปรเจ็กต์ Firebase ด้วยวิธีใดวิธีหนึ่งต่อไปนี้ก่อน ตามค่าเริ่มต้น ปลั๊กอิน Gradle จะค้นหาข้อมูลประจำตัวจาก Firebase CLI หากไม่มีการใช้วิธีตรวจสอบสิทธิ์อื่น

ขั้นตอนที่ 3 กำหนดค่าคุณสมบัติการกระจายของคุณ

ในไฟล์ Gradle ของ โมดูล (ระดับแอป) (โดยปกติคือ <project>/<app-module>/build.gradle หรือ <project>/<app-module>/build.gradle.kts ) กำหนดค่า App Distribution โดยเพิ่มอย่างน้อย หนึ่งส่วน firebaseAppDistribution

ตัวอย่างเช่น หากต้องการแจกจ่าย release ให้กับผู้ทดสอบ ให้ทำตามคำแนะนำเหล่านี้::

แรง

android {

  // ...

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

  // ...
}

คอตลิน

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

android {

  // ...

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

  // ...
}

คุณสามารถกำหนดค่า App Distribution สำหรับ ประเภทบิลด์และรสชาติของผลิตภัณฑ์

ตัวอย่างเช่น หากต้องการแจกจ่ายการ debug และรี release สบิลด์ในรูปแบบผลิตภัณฑ์ "สาธิต" และ "เต็มรูปแบบ" ให้ทำตามคำแนะนำเหล่านี้:

แรง

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"
          }
      }
  }

  // ...
}

คอตลิน

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"
          }
      }
  }

  // ...
}

ใช้พารามิเตอร์ต่อไปนี้เพื่อกำหนดค่าการกระจาย:

พารามิเตอร์การสร้างการกระจายแอป
appId

รหัสแอป Firebase ของแอปของคุณ จำเป็นเฉพาะในกรณีที่คุณไม่ได้ติดตั้งปลั๊กอิน Google Services Gradle คุณสามารถค้นหารหัสแอปได้ในไฟล์ google-services.json หรือในคอนโซล Firebase ใน หน้าการตั้งค่าทั่วไป ค่าในไฟล์ build.gradle ของคุณแทนที่ค่าที่ส่งออกจากปลั๊กอิน google-services

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

เส้นทางไปยังไฟล์ JSON คีย์ส่วนตัวของบัญชีบริการของคุณ จำเป็นเฉพาะเมื่อคุณใช้การตรวจสอบบัญชีบริการ

artifactType

ระบุประเภทไฟล์ของแอป สามารถตั้งค่าเป็น "AAB" หรือ "APK"

artifactPath

เส้นทางที่สมบูรณ์ไปยังไฟล์ APK หรือ AAB ที่คุณต้องการอัปโหลด

releaseNotes หรือ releaseNotesFile

บันทึกประจำรุ่นสำหรับรุ่นนี้

คุณสามารถระบุบันทึกย่อประจำรุ่นโดยตรงหรือระบุเส้นทางไปยังไฟล์ข้อความธรรมดาก็ได้

testers หรือผู้ทดสอบ testersFile

ที่อยู่อีเมลของผู้ทดสอบที่คุณต้องการแจกจ่ายงานสร้างให้

คุณสามารถระบุผู้ทดสอบเป็นรายการที่อยู่อีเมลที่คั่นด้วยเครื่องหมายจุลภาค:

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

หรือคุณสามารถระบุเส้นทางไปยังไฟล์ที่มีรายการที่อยู่อีเมลที่คั่นด้วยเครื่องหมายจุลภาค:

testersFile="/path/to/testers.txt"
groups หรือกลุ่ม groupsFile

กลุ่มผู้ทดสอบที่คุณต้องการแจกจ่ายงานสร้างให้ (ดูที่ จัดการผู้ทดสอบ ) มีการระบุกลุ่มโดยใช้ นามแฝงกลุ่ม ซึ่งคุณจะพบได้ในแท็บผู้ ทดสอบ ในคอนโซลการกระจายแอปของ Firebase

คุณสามารถระบุกลุ่มเป็นรายการนามแฝงกลุ่มที่คั่นด้วยเครื่องหมายจุลภาค:

groups="qa-team, android-testers"

หรือคุณสามารถระบุพาธไปยังไฟล์ที่มีรายการนามแฝงของกลุ่มที่คั่นด้วยเครื่องหมายจุลภาค:

groupsFile="/path/to/tester-groups.txt"
stacktrace

พิมพ์ stacktrace สำหรับข้อยกเว้นของผู้ใช้ สิ่งนี้มีประโยชน์เมื่อทำการดีบักปัญหา

ขั้นตอนที่ 4 แจกจ่ายแอปของคุณให้กับผู้ทดสอบ

  1. สุดท้าย ในการจัดแพ็คเกจแอปทดสอบของคุณและเชิญผู้ทดสอบ ให้สร้างเป้าหมาย BUILD-VARIANT และ appDistributionUpload BUILD-VARIANT ด้วย Gradle wrapper ของโปรเจ็กต์ โดยที่ BUILD-VARIANT คือตัวเลือกผลิตภัณฑ์และประเภทบิลด์ที่คุณกำหนดค่าในขั้นตอนก่อนหน้า สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรสชาติของผลิตภัณฑ์ ดูที่ ตั้งค่าคอนฟิกรุ่น ย่อย

    ตัวอย่างเช่น หากต้องการเผยแพร่แอปของคุณโดยใช้เวอร์ชันของ release ที่วางจำหน่าย ให้รันคำสั่งต่อไปนี้:

    ./gradlew assembleRelease appDistributionUploadRelease
    

    หรือหากคุณตรวจสอบสิทธิ์ด้วย บัญชี Google และไม่ได้ระบุข้อมูลรับรองในไฟล์บิลด์ Gradle ให้รวมตัวแปร FIREBASE_TOKEN :

    export FIREBASE_TOKEN=1/a1b2c3d4e5f67890
    ./gradlew --stop // Only needed for environment variable changes
    ./gradlew assembleRelease appDistributionUploadRelease
    
  2. คุณยังสามารถลบล้างค่าที่ตั้งไว้ในไฟล์ build.gradle ของคุณด้วยการส่งอาร์กิวเมนต์บรรทัดคำสั่งในรูปแบบ --<property-name>=<property-value> ตัวอย่างเช่น:

    • หากต้องการอัปโหลดบิลด์การแก้ไขข้อบกพร่องไปยัง App Distribution:

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="APK"
      
    • วิธีเชิญผู้ทดสอบเพิ่มเติมหรือนำผู้ทดสอบที่มีอยู่ออกจากโครงการ 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"
      

      เมื่อเพิ่มผู้ทดสอบในโครงการ Firebase แล้ว คุณจะเพิ่มผู้ทดสอบลงในแต่ละรุ่นได้ ผู้ทดสอบที่ถูกนำออกจะไม่มีสิทธิ์เข้าถึงรุ่นในโครงการของคุณอีกต่อไป แต่อาจยังคงเข้าถึงรุ่นของคุณได้ในช่วงระยะเวลาหนึ่ง

    คุณยังสามารถระบุผู้ทดสอบโดยใช้ --file="/path/to/testers.txt" แทน --emails

    งาน appDistributionAddTesters และ appDistributionRemoveTesters ยังยอมรับอาร์กิวเมนต์ต่อไปนี้:

    • projectNumber : หมายเลขโครงการ Firebase ของคุณ

    • serviceCredentialsFile : เส้นทางไปยังไฟล์ข้อมูลรับรองบริการของ Google นี่เป็นอาร์กิวเมนต์เดียวกับที่ใช้โดยการดำเนินการอัปโหลด

ปลั๊กอิน Gradle แสดงผลลิงก์ต่อไปนี้หลังจากการอัปโหลดที่เผยแพร่ ลิงก์เหล่านี้ช่วยคุณจัดการไบนารีและช่วยให้แน่ใจว่าผู้ทดสอบและนักพัฒนารายอื่นมีรุ่นที่ถูกต้อง:

  • firebase_console_uri - ลิงก์ไปยังคอนโซล Firebase ที่แสดงรุ่นเดียว คุณสามารถแชร์ลิงก์นี้กับนักพัฒนาคนอื่นๆ ในองค์กรของคุณ
  • การ testing_uri - ลิงก์ไปยังรุ่นในประสบการณ์ของผู้ทดสอบ (แอปเนทีฟของ Android) ที่ให้ผู้ทดสอบดูบันทึกประจำรุ่นและติดตั้งแอปลงในอุปกรณ์ของตน ผู้ทดสอบจำเป็นต้องเข้าถึงรุ่นเพื่อใช้ลิงก์
  • binary_download_uri - ลิงก์ที่ลงชื่อซึ่งดาวน์โหลดและติดตั้งไบนารีของแอปโดยตรง (ไฟล์ APK หรือ AAB) ลิงก์จะหมดอายุหลังจากหนึ่งชั่วโมง

เมื่อคุณแจกจ่ายบิลด์ของคุณ สิ่งนั้นจะพร้อมใช้งานในแดชบอร์ดการกระจายแอปของคอนโซล Firebase เป็นเวลา 150 วัน (ห้าเดือน) เมื่อบิลด์มีอายุ 30 วันนับจากวันหมดอายุ การแจ้งการหมดอายุจะปรากฏทั้งในคอนโซลและรายการบิลด์ของผู้ทดสอบบนอุปกรณ์ทดสอบ

ผู้ทดสอบที่ไม่ได้รับเชิญให้ทดสอบแอปจะได้รับคำเชิญทางอีเมลให้เริ่มต้นใช้งาน และผู้ทดสอบที่มีอยู่จะได้รับการแจ้งเตือนทางอีเมลว่าบิวด์ใหม่พร้อมให้ทดสอบแล้ว (อ่านคู่มือการ ตั้งค่าผู้ทดสอบ สำหรับคำแนะนำเกี่ยวกับวิธีติดตั้งแอปทดสอบ) คุณสามารถตรวจสอบสถานะของผู้ทดสอบแต่ละคนว่าพวกเขายอมรับคำเชิญหรือไม่และดาวน์โหลดแอปในคอนโซล Firebase หรือไม่

ผู้ทดสอบมีเวลา 30 วันในการตอบรับคำเชิญให้ทดสอบแอปก่อนที่จะหมดอายุ เมื่อคำเชิญมีอายุ 5 วันนับจากวันหมดอายุ ข้อความแจ้งการหมดอายุจะปรากฏในคอนโซล Firebase ถัดจากผู้ทดสอบในรุ่นที่เผยแพร่ สามารถต่ออายุคำเชิญได้โดยส่งอีกครั้งโดยใช้เมนูแบบเลื่อนลงในแถวผู้ทดสอบ

ขั้นตอนถัดไป