เผยแพร่แอป Android ให้ผู้ทดสอบโดยใช้ Gradle


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

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

ก่อนเริ่มต้น

เพิ่ม Firebase ลงใน Android หากยังไม่ได้เพิ่ม โปรเจ็กต์

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

ขั้นตอนที่ 1 ตั้งค่าโปรเจ็กต์ Android

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

    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. ในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติจะเป็นไฟล์ <project>/<app-module>/build.gradle.kts หรือ <project>/<app-module>/build.gradle) ให้เพิ่มปลั๊กอิน App Distribution Gradle ดังนี้

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

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

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

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

ขั้นตอนที่ 3 กำหนดค่าพร็อพเพอร์ตี้การจัดจำหน่าย

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

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

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

  // ...
}

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

เช่น หากต้องการเผยแพร่บิลด์ debug และ release ในรุ่นผลิตภัณฑ์ "demo" และ "full" ให้ทำตามวิธีการต่อไปนี้

Kotlin

เวอร์ชัน 3.1.0 ขึ้นไป
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"
          }
      }
  }

  // ...
}

ใช้พารามิเตอร์ต่อไปนี้เพื่อกําหนดค่าการเผยแพร่

App Distribution พารามิเตอร์การสร้าง
appId

รหัสแอป Firebase ของแอป ต้องระบุในกรณีที่คุณไม่มี ติดตั้งปลั๊กอิน Gradle ของบริการ Google แล้ว คุณดูรหัสแอปได้ใน ไฟล์ 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 คอนโซล App Distribution

คุณระบุกลุ่มเป็นรายการที่คั่นด้วยคอมมาของกลุ่มได้ ชื่อแทน:

groups="qa-team, android-testers"

หรือจะระบุเส้นทางไปยังไฟล์ที่มีเครื่องหมายจุลภาคคั่น รายการชื่อแทนของกลุ่ม:

groupsFile="/path/to/tester-groups.txt"
testDevices หรือ testDevicesFile

การเผยแพร่ประเภทต่อไปนี้เป็นส่วนหนึ่งของฟีเจอร์เบต้าสำหรับผู้ทดสอบอัตโนมัติ

อุปกรณ์ทดสอบที่คุณต้องการเผยแพร่บิลด์ (ดูการทดสอบอัตโนมัติ)

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

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

หรือจะระบุเส้นทางไปยังไฟล์ที่มีรายการข้อมูลจำเพาะของอุปกรณ์คั่นด้วยเซมิโคลอนก็ได้ ดังนี้

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

ชื่อผู้ใช้สำหรับการเข้าสู่ระบบอัตโนมัติที่จะใช้ในระหว่างการทดสอบอัตโนมัติ

testPassword หรือ testPasswordFile

รหัสผ่านสำหรับการเข้าสู่ระบบอัตโนมัติที่จะใช้ระหว่างการทดสอบอัตโนมัติ

หรือระบุเส้นทางไปยังไฟล์ข้อความธรรมดาที่มีรหัสผ่านก็ได้ ดังนี้

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

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

testPasswordResource

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

testNonBlocking

เรียกใช้การทดสอบอัตโนมัติแบบไม่พร้อมกัน ไปที่คอนโซล Firebase เพื่อดูผลการทดสอบอัตโนมัติ

stacktrace

พิมพ์สแต็กเทรซสําหรับข้อยกเว้นของผู้ใช้ ซึ่งจะมีประโยชน์เมื่อแก้ไขข้อบกพร่อง

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

  1. สุดท้าย ในการสร้างแพ็กเกจแอปทดสอบและเชิญผู้ทดสอบ ให้สร้างเป้าหมาย BUILD-VARIANT และ appDistributionUploadBUILD-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) โดยตรง ลิงก์จะหมดอายุหลังจากผ่านไป 1 ชั่วโมง

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

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

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

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