คุณสามารถผสานรวม 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
) ให้เพิ่มปลั๊กอิน 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' }
หากคุณอยู่หลังพร็อกซีหรือไฟร์วอลล์ของบริษัท ให้เพิ่มพร็อพเพอร์ตี้ระบบ 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 แล้ว คุณดูรหัสแอปได้ใน
ไฟล์ 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 ข้างผู้ทดสอบในรุ่น คำเชิญอาจเป็น ต่ออายุโดยส่งอีกครั้งโดยใช้เมนูแบบเลื่อนลงในแถวผู้ทดสอบ
ขั้นตอนถัดไป
ใช้ความคิดเห็นในแอป เพื่อให้ผู้ทดสอบส่งความคิดเห็นเกี่ยวกับแอปได้ง่ายๆ (รวมถึง ภาพหน้าจอ)
ดูวิธีแสดงการแจ้งเตือนในแอป แก่ผู้ทดสอบเมื่อมีเวอร์ชันใหม่ของแอปพร้อมให้ติดตั้ง
ไปที่ Android App Bundle Codelab เพื่อดูวิธีเผยแพร่รุ่น App Bundle แบบทีละขั้นตอน
ดูแนวทางปฏิบัติแนะนำสำหรับการจัดจำหน่ายแอป Android ให้แก่ผู้ทดสอบ QA โดยใช้ CI/CD