คุณสามารถผสานรวม App Distribution เข้ากับกระบวนการบิลด์ Android ได้โดยใช้ปลั๊กอิน App Distribution Gradle ปลั๊กอินนี้ช่วยให้คุณระบุผู้ทดสอบและหมายเหตุเกี่ยวกับรุ่นในไฟล์ Gradle ของแอปได้ ซึ่งจะช่วยให้คุณกำหนดค่าการเผยแพร่สำหรับบิลด์ประเภทต่างๆ และตัวแปรของแอปได้
คู่มือนี้จะอธิบายวิธีเผยแพร่ Android App Bundle (AAB) ให้ผู้ทดสอบโดยใช้App Distributionปลั๊กอิน Gradle
App Distribution ทำงานร่วมกับบริการแชร์แอปภายในของ Google Play เพื่อประมวลผล AAB ที่คุณอัปโหลดและให้บริการ APK ที่เพิ่มประสิทธิภาพสำหรับการกำหนดค่าอุปกรณ์ของผู้ทดสอบ การเผยแพร่ AAB ช่วยให้คุณทำสิ่งต่อไปนี้ได้
เรียกใช้ APK ที่เพิ่มประสิทธิภาพ (ให้บริการโดย Google Play) ซึ่งเพิ่มประสิทธิภาพให้เหมาะกับอุปกรณ์ของผู้ทดสอบ
ระบุและแก้ไขข้อบกพร่องของปัญหาเฉพาะอุปกรณ์
ทดสอบฟีเจอร์ App Bundle เช่น Play Feature Delivery และ Play Asset Delivery
ลดขนาดการดาวน์โหลดสำหรับผู้ทดสอบ
สิทธิ์ที่จำเป็น
หากต้องการอัปโหลด AAB ไปยัง App Distribution คุณต้องลิงก์แอป Firebase กับแอปใน Google Play คุณต้องมีสิทธิ์เข้าถึงในระดับที่กำหนดจึงจะดำเนินการเหล่านี้ได้
หากไม่มีสิทธิ์เข้าถึง Firebase ที่จำเป็น โปรดขอให้เจ้าของโปรเจ็กต์ Firebase มอบหมายบทบาทที่เกี่ยวข้องให้คุณผ่านการตั้งค่า IAM ของคอนโซล Firebase หากมีข้อสงสัยเกี่ยวกับการเข้าถึงโปรเจ็กต์ Firebase รวมถึงการค้นหาหรือการกำหนดเจ้าของ โปรดอ่านคำถามที่พบบ่อยเกี่ยวกับ "สิทธิ์และการเข้าถึงโปรเจ็กต์ Firebase"
ตารางต่อไปนี้ใช้กับการลิงก์แอป Firebase กับแอปใน Google Play และการอัปโหลด AAB
การดำเนินการในคอนโซล Firebase | สิทธิ์ IAM ที่จําเป็น | บทบาท IAM ที่มีสิทธิ์ที่จําเป็นโดยค่าเริ่มต้น | บทบาทเพิ่มเติมที่จําเป็น |
---|---|---|---|
ลิงก์แอป Firebase กับแอปใน Google Play | firebase.playLinks.update
|
บทบาทใดบทบาทหนึ่งต่อไปนี้ | เข้าถึงGoogle Playบัญชีนักพัฒนาแอปในฐานะผู้ดูแลระบบ |
อัปโหลด AAB ไปยัง App Distribution | firebaseappdistro.releases.update
|
บทบาทใดบทบาทหนึ่งต่อไปนี้ | –– |
ก่อนเริ่มต้น
เพิ่ม Firebase ลงในโปรเจ็กต์ Android หากยังไม่ได้ดำเนินการ เมื่อทำตามเวิร์กโฟลว์นี้เสร็จแล้ว คุณจะมีแอป Firebase Android ในโปรเจ็กต์ Firebase
หากไม่ได้ใช้ผลิตภัณฑ์ Firebase อื่นๆ คุณก็เพียงแค่สร้างโปรเจ็กต์และลงทะเบียนแอปเท่านั้น หากตัดสินใจที่จะใช้ผลิตภัณฑ์เพิ่มเติม โปรดทําตามขั้นตอนทั้งหมดในเพิ่ม Firebase ลงในโปรเจ็กต์ Android
หากต้องการลิงก์ Firebase กับ Google Play และอัปโหลด AAB โปรดตรวจสอบว่าแอปเป็นไปตามข้อกำหนดต่อไปนี้
มีการลงทะเบียนแอปใน Google Play และแอป Firebase บน Android โดยใช้ชื่อแพ็กเกจเดียวกัน
แอปใน Google Play มีการตั้งค่าบนหน้าแดชบอร์ดของแอปและเผยแพร่ไปยังแทร็ก Google Play แทร็กใดแทร็กหนึ่ง (การทดสอบภายใน การทดสอบแบบปิด การทดสอบแบบเปิด หรือเวอร์ชันที่ใช้งานจริง)
การตรวจสอบของแอปใน Google Play เสร็จสมบูรณ์และมีการเผยแพร่แอปแล้ว ระบบจะเผยแพร่แอปหากคอลัมน์สถานะแอปแสดงสถานะใดสถานะหนึ่งต่อไปนี้ ได้แก่ การทดสอบภายใน (ไม่ใช่การทดสอบภายในฉบับร่าง) การทดสอบแบบปิด การทดสอบแบบเปิด หรือเวอร์ชันที่ใช้งานจริง
ลิงก์แอป Firebase บน Android กับบัญชีนักพัฒนาแอป Google Play
ในคอนโซล Firebase ให้ไปที่
แล้วเลือกแท็บการผสานรวม การตั้งค่าโปรเจ็กต์ ในการ์ด Google Play ให้คลิกลิงก์
หากคุณลิงก์กับ Google Play อยู่แล้ว ให้คลิกจัดการแทนทำตามวิธีการบนหน้าจอเพื่อเปิดใช้App Distributionการผสานรวมและเลือกแอป Firebase บน Android ที่จะลิงก์กับ Google Play
ดูข้อมูลเพิ่มเติมเกี่ยวกับการลิงก์กับ Google Play
ขั้นตอนที่ 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
คุณต้องตรวจสอบสิทธิ์กับโปรเจ็กต์ Firebase ด้วยวิธีใดวิธีหนึ่งต่อไปนี้ก่อนจึงจะใช้ปลั๊กอิน Gradle ได้ โดยค่าเริ่มต้น ปลั๊กอิน Gradle จะค้นหาข้อมูลเข้าสู่ระบบจาก Firebase CLI หากไม่ได้ใช้วิธีการตรวจสอบสิทธิ์อื่นๆ
ขั้นตอนที่ 3 กำหนดค่าพร็อพเพอร์ตี้การจัดจำหน่าย
ในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติจะเป็นไฟล์ <project>/<app-module>/build.gradle.kts
หรือ <project>/<app-module>/build.gradle
) ให้กําหนดค่า App Distribution โดยเพิ่มส่วน firebaseAppDistribution
อย่างน้อย 1 ส่วน
ตัวอย่างเช่น หากต้องการเผยแพร่บิลด์ release
ให้แก่ผู้ทดสอบ ให้ทำตามวิธีการต่อไปนี้
Kotlin
App Distributionimport com.google.firebase.appdistribution.gradle.firebaseAppDistribution android { // ... buildTypes { getByName("release") { firebaseAppDistribution { artifactType = "AAB" releaseNotesFile = "/path/to/releasenotes.txt" testers = "ali@example.com, bri@example.com, cal@example.com" } } } // ... }
Groovy
android { // ... buildTypes { release { firebaseAppDistribution { artifactType="AAB" 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 ของแอป จำเป็นเฉพาะในกรณีที่ไม่ได้ติดตั้งปลั๊กอิน Google Services Gradle คุณดูรหัสแอปได้ในไฟล์ 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 bundleRelease appDistributionUploadRelease
หรือหากคุณตรวจสอบสิทธิ์ด้วยบัญชี Google และไม่ได้ระบุข้อมูลเข้าสู่ระบบในไฟล์บิลด์ Gradle ให้ใส่ตัวแปร
FIREBASE_TOKEN
ดังนี้export FIREBASE_TOKEN=1/a1b2c3d4e5f67890 ./gradlew --stop // Only needed for environment variable changes ./gradlew bundleRelease appDistributionUploadRelease
นอกจากนี้ คุณยังลบล้างค่าที่ตั้งไว้ในไฟล์
build.gradle
ได้โดยส่งอาร์กิวเมนต์บรรทัดคำสั่งในรูปแบบ--<property-name>=<property-value>
เช่นวิธีอัปโหลดบิลด์การแก้ไขข้อบกพร่องไปยัง App Distribution
./gradlew bundleDebug appDistributionUploadDebug --artifactType="AAB"
วิธีเชิญผู้ทดสอบเพิ่มเติมหรือนำผู้ทดสอบที่มีอยู่ออกจากโปรเจ็กต์ 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 วันจะหมดอายุ ประกาศการหมดอายุจะปรากฏทั้งในคอนโซลและรายการบิลด์ของผู้ทดสอบในอุปกรณ์ทดสอบ
ผู้ทดสอบที่ยังไม่ได้ได้รับเชิญให้ทดสอบแอปจะได้รับคำเชิญทางอีเมลเพื่อเริ่มต้นใช้งาน และผู้ทดสอบปัจจุบันจะได้รับการแจ้งเตือนทางอีเมลว่าบิลด์ใหม่พร้อมให้ทดสอบแล้ว (อ่านคู่มือการตั้งค่าผู้ทดสอบเพื่อดูวิธีการติดตั้งแอปทดสอบ) คุณสามารถตรวจสอบสถานะของผู้ทดสอบแต่ละรายได้ว่าพวกเขายอมรับคำเชิญหรือไม่และดาวน์โหลดแอปแล้วในคอนโซล Firebase หรือไม่
ผู้ทดสอบมีเวลา 30 วันในการตอบรับคำเชิญให้ทดสอบแอปก่อนที่คำเชิญจะหมดอายุ เมื่อคำเชิญเหลือเวลาอีก 5 วันจะหมดอายุ ประกาศการหมดอายุจะปรากฏในFirebaseคอนโซลข้างผู้ทดสอบในรุ่น คุณต่ออายุคำเชิญได้โดยการส่งคำเชิญอีกครั้งโดยใช้เมนูแบบเลื่อนลงในแถวผู้ทดสอบ
ขั้นตอนถัดไป
ใช้ความคิดเห็นในแอปเพื่อให้ผู้ทดสอบส่งความคิดเห็นเกี่ยวกับแอปของคุณได้ง่ายๆ (รวมถึงภาพหน้าจอ)
ดูวิธีแสดงการแจ้งเตือนในแอปให้ผู้ทดสอบทราบเมื่อมีเวอร์ชันใหม่ของแอปให้ติดตั้ง
ไปที่ Android App Bundle Codelab เพื่อดูวิธีเผยแพร่รุ่น App Bundle แบบทีละขั้นตอน
ดูแนวทางปฏิบัติแนะนำสำหรับการจัดจำหน่ายแอป Android ให้แก่ผู้ทดสอบ QA โดยใช้ CI/CD