คุณสามารถผสานรวม App Distribution เข้ากับกระบวนการบิลด์ของ Android โดยใช้ ปลั๊กอิน Gradle ภาษาApp Distribution ปลั๊กอินช่วยให้คุณสามารถระบุผู้ทดสอบและ บันทึกประจำรุ่นในไฟล์ Gradle ของแอป ที่ช่วยให้คุณกำหนดค่าการกระจาย สำหรับบิลด์และตัวแปรต่างๆ ของแอป
คู่มือนี้อธิบายวิธีเผยแพร่ APK ให้กับผู้ทดสอบโดยใช้ ปลั๊กอิน Gradle ภาษาApp Distribution
ก่อนเริ่มต้น
เพิ่ม Firebase ลงใน Android หากยังไม่ได้เพิ่ม โปรเจ็กต์
หากไม่ได้ใช้ผลิตภัณฑ์อื่นๆ ของ Firebase คุณจะต้องสร้างเพียง โปรเจ็กต์และลงทะเบียนแอปของคุณ แต่ถ้าคุณตัดสินใจที่จะใช้ ผลิตภัณฑ์ในอนาคต โปรดทำตามขั้นตอนทั้งหมดในหน้านี้ให้เสร็จสมบูรณ์ ที่ลิงก์ด้านบน
ขั้นตอนที่ 1 ตั้งค่าโปรเจ็กต์ Android
ในไฟล์ 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 }
ในไฟล์ 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' }
หากคุณใช้พร็อกซีหรือไฟร์วอลล์ขององค์กร ให้เพิ่มค่าต่อไปนี้ พร็อพเพอร์ตี้ของระบบ 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 แล้ว คุณดูรหัสแอปได้ใน
ไฟล์ appId="1:1234567890:android:321abc456def7890" |
serviceCredentialsFile
|
เส้นทางไปยังไฟล์ JSON คีย์ส่วนตัวของบัญชีบริการ ต้องระบุเท่านั้น หากใช้การตรวจสอบสิทธิ์บัญชีบริการ |
artifactType
|
ระบุประเภทไฟล์ของแอป ตั้งค่าเป็น
|
artifactPath
|
เส้นทางสัมบูรณ์ไปยังไฟล์ APK หรือ AAB ที่ต้องการอัปโหลด |
releaseNotes หรือ releaseNotesFile |
บันทึกประจำรุ่นสำหรับบิลด์นี้ คุณสามารถระบุบันทึกประจำรุ่นโดยตรงหรือ ไปยังไฟล์ข้อความธรรมดา |
testers หรือ testersFile |
อีเมลของผู้ทดสอบที่คุณต้องการเผยแพร่บิลด์ เป็น คุณระบุผู้ทดสอบเป็นรายชื่ออีเมลที่คั่นด้วยคอมมาได้ ที่อยู่: testers="ali@example.com, bri@example.com, cal@example.com" หรือจะระบุเส้นทางไปยังไฟล์ที่มีเครื่องหมายจุลภาคคั่น รายชื่อที่อยู่อีเมล: testersFile="/path/to/testers.txt" |
groups หรือ groupsFile |
กลุ่มผู้ทดสอบที่คุณต้องการเผยแพร่บิลด์ให้ (โปรดดู
จัดการผู้ทดสอบ)
กลุ่มจะมีการระบุโดยใช้ คุณระบุกลุ่มเป็นรายการที่คั่นด้วยคอมมาของกลุ่มได้ ชื่อแทน: 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 เผยแพร่แอปของคุณให้ผู้ทดสอบ
สุดท้าย เพื่อสร้างแพ็กเกจแอปทดสอบและเชิญผู้ทดสอบ ให้สร้างเป้าหมาย
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
นอกจากนี้คุณยังลบล้างค่าที่ตั้งไว้ในไฟล์
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
: หมายเลขโปรเจ็กต์ FirebaseserviceCredentialsFile
: เส้นทางไปยังไฟล์ข้อมูลเข้าสู่ระบบบริการของ 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 ข้างผู้ทดสอบในรุ่น คำเชิญอาจเป็น ต่ออายุโดยส่งอีกครั้งโดยใช้เมนูแบบเลื่อนลงในแถวผู้ทดสอบ
ขั้นตอนถัดไป
ใช้ความคิดเห็นในแอป เพื่อให้ผู้ทดสอบส่งความคิดเห็นเกี่ยวกับแอปได้ง่ายๆ (รวมถึง ภาพหน้าจอ)
ดูวิธีแสดงการแจ้งเตือนในแอป แก่ผู้ทดสอบเมื่อมีเวอร์ชันใหม่ของแอปพร้อมให้ติดตั้ง
ไปที่ Codelab สำหรับ Android App Bundle เพื่อดูวิธีเผยแพร่รุ่นของ App Bundle ทีละขั้นตอน
ดูแนวทางปฏิบัติแนะนำสำหรับการเผยแพร่แอป Android ให้แก่ผู้ทดสอบ QA โดยใช้ CI/CD