เผยแพร่แอป 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) เพิ่มปลั๊กอิน 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. หากคุณใช้พร็อกซีหรือไฟร์วอลล์ขององค์กร ให้เพิ่มค่าต่อไปนี้ พร็อพเพอร์ตี้ของระบบ 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.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 ใน "เดโม" และ "เต็ม" รสชาติของผลิตภัณฑ์ ให้ทำตามวิธีการต่อไปนี้

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

  // ...
}

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

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 ข้างผู้ทดสอบในรุ่น คำเชิญอาจเป็น ต่ออายุโดยส่งอีกครั้งโดยใช้เมนูแบบเลื่อนลงในแถวผู้ทดสอบ

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