คู่มือนี้อธิบายวิธีเผยแพร่บิลด์ AAB ให้แก่ผู้ทดสอบโดยใช้ fastlane ซึ่งเป็นแพลตฟอร์มโอเพนซอร์สที่สร้างและเผยแพร่แอป iOS และ Android โดยอัตโนมัติ คู่มือนี้เป็นไปตามวิธีการที่ระบุไว้ใน Fastfile หลังจากตั้งค่าแอป fastlane และ Fastfile แล้ว คุณจะผสานรวม App Distribution กับการกำหนดค่า fastlane ได้
App Distribution ผสานรวมกับบริการแชร์แอปภายในของ Google Play เพื่อประมวลผล AAB ที่คุณอัปโหลดและแสดง APK ที่เพิ่มประสิทธิภาพสำหรับการกำหนดค่าอุปกรณ์ของผู้ทดสอบ การเผยแพร่ AAB ช่วยให้คุณทำสิ่งต่อไปนี้ได้
เรียกใช้ APK ที่เพิ่มประสิทธิภาพ (แสดงโดย Google Play) ซึ่งเพิ่มประสิทธิภาพสำหรับอุปกรณ์ของผู้ทดสอบ
ค้นหาและแก้ไขข้อบกพร่องของปัญหาเฉพาะอุปกรณ์
ทดสอบฟีเจอร์ App Bundle เช่น การนำส่งฟีเจอร์ Play และการนำส่งเนื้อหา Play
ลดขนาดการดาวน์โหลดสำหรับผู้ทดสอบ
สิทธิ์ที่จำเป็น
หากต้องการอัปโหลด 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 หากยังไม่ได้เพิ่ม เมื่อสิ้นสุดเวิร์กโฟลว์นี้ คุณจะมีแอป Android ของ Firebase ในโปรเจ็กต์ Firebase
หากไม่ได้ใช้ผลิตภัณฑ์อื่นๆ ของ Firebase คุณเพียงแค่ต้องสร้างโปรเจ็กต์และลงทะเบียนแอป หากตัดสินใจใช้ผลิตภัณฑ์เพิ่มเติม โปรดทำตามขั้นตอนทั้งหมดในหัวข้อเพิ่ม Firebase ลงในโปรเจ็กต์ Android
เปิดหน้า App Distribution ของคอนโซล Firebase เลือกโปรเจ็กต์ Firebase เมื่อได้รับข้อความแจ้ง เลือกแอปโดยใช้ฟีเจอร์สลับแอป แล้วคลิกเริ่มต้นใช้งาน
หากต้องการลิงก์ Firebase กับ Google Play และอัปโหลด AAB โปรดตรวจสอบว่าแอปเป็นไปตามข้อกำหนดต่อไปนี้
มีการลงทะเบียนแอปใน Google Play และแอป Android ของ Firebase โดยใช้ชื่อแพ็กเกจเดียวกัน
แอปใน Google Play มีการตั้งค่าในหน้าแดชบอร์ดของแอปและเผยแพร่ไปยังแทร็ก Google Play แทร็กใดแทร็กหนึ่ง (การทดสอบภายใน การทดสอบแบบปิด การทดสอบแบบเปิด หรือเวอร์ชันที่ใช้งานจริง)
การตรวจสอบของแอปใน Google Play เสร็จสมบูรณ์และมีการเผยแพร่แอปแล้ว ระบบจะเผยแพร่แอปหากคอลัมน์สถานะแอปแสดงสถานะใดสถานะหนึ่งต่อไปนี้ ได้แก่ การทดสอบภายใน (ไม่ใช่การทดสอบภายในฉบับร่าง) การทดสอบแบบปิด การทดสอบแบบเปิด หรือเวอร์ชันที่ใช้งานจริง
ลิงก์แอป Android ใน Firebase กับบัญชีนักพัฒนาแอป Google Play โดยทำดังนี้
ในคอนโซล Firebase ให้ไปที่
การตั้งค่าโปรเจ็กต์ แล้วเลือกแท็บการผสานรวมในการ์ด Google Play ให้คลิกลิงก์
หากคุณลิงก์กับ Google Play อยู่แล้ว ให้คลิกจัดการแทนทำตามวิธีการบนหน้าจอเพื่อเปิดใช้การผสานรวม App Distribution และเลือกแอป Android ของ Firebase ที่จะลิงก์กับ Google Play
ดูข้อมูลเพิ่มเติมเกี่ยวกับการลิงก์กับ Google Play
ขั้นตอนที่ 1 ตั้งค่า Fastlane
หากต้องการเพิ่ม App Distribution ลงในการกำหนดค่า fastlane ให้เรียกใช้คำสั่งต่อไปนี้จากรูทของโปรเจ็กต์ Android
fastlane add_plugin firebase_app_distribution
หาก Command Prompt แสดงตัวเลือก ให้เลือก
Option 3: RubyGems.org
ขั้นตอนที่ 2 ตรวจสอบสิทธิ์ด้วย Firebase
ก่อนที่จะใช้ปลั๊กอิน fastlane ได้ คุณต้องตรวจสอบสิทธิ์กับโปรเจ็กต์ Firebase ด้วยวิธีใดวิธีหนึ่งต่อไปนี้ก่อน โดยค่าเริ่มต้น ปลั๊กอิน fastlane จะค้นหาข้อมูลเข้าสู่ระบบจาก Firebase CLI หากไม่มีการใช้วิธีการตรวจสอบสิทธิ์อื่นๆ
ขั้นตอนที่ 3 ตั้งค่า Fastfile และเผยแพร่แอป
- ในเลน
./fastlane/Fastfileให้เพิ่มบล็อกfirebase_app_distributionใช้พารามิเตอร์ต่อไปนี้เพื่อกำหนดค่าการจัดจำหน่ายพารามิเตอร์ firebase_app_distribution appจำเป็น: รหัสแอป Firebase ของแอป คุณสามารถดูรหัสแอปได้ในคอนโซล Firebase ในหน้าการตั้งค่าทั่วไป
app: "1:1234567890:android:0a1b2c3d4e5f67890"
firebase_cli_tokenโทเค็นการรีเฟรชที่พิมพ์เมื่อคุณตรวจสอบสิทธิ์สภาพแวดล้อม CI ด้วย Firebase CLI (อ่านข้อมูลเพิ่มเติมที่หัวข้อใช้ CLI กับระบบ CI)
service_credentials_fileเส้นทางไปยังไฟล์ JSON ของบัญชีบริการของ Google ดูวิธีตรวจสอบสิทธิ์โดยใช้ข้อมูลเข้าสู่ระบบของบัญชีบริการได้ที่ด้านบน
android_artifact_typeระบุประเภทไฟล์ Android (APK หรือ AAB)
android_artifact_pathแทนที่
apk_path(เลิกใช้งานแล้ว) Absolute Path ไปยังไฟล์ APK หรือ AAB ที่ต้องการอัปโหลด หากไม่ได้ระบุ Fastlane จะกำหนดตำแหน่งของไฟล์จาก Lane ที่สร้างไฟล์release_notes
release_notes_fileบันทึกประจำรุ่นสำหรับบิลด์นี้
คุณสามารถระบุบันทึกประจำรุ่นได้โดยตรง ดังนี้
release_notes: "Text of release notes"
หรือระบุเส้นทางไปยังไฟล์ข้อความธรรมดา ดังนี้
release_notes_file: "/path/to/release-notes.txt"
testers
testers_fileอีเมลของผู้ทดสอบที่คุณต้องการเชิญ
คุณระบุผู้ทดสอบเป็นรายการอีเมลที่คั่นด้วยคอมมาได้ดังนี้
testers: "ali@example.com, bri@example.com, cal@example.com"
หรือจะระบุเส้นทางไปยังไฟล์ข้อความธรรมดาที่มีรายการอีเมลที่คั่นด้วยคอมมาก็ได้ ดังนี้
testers_file: "/path/to/testers.txt"
groups
groups_fileกลุ่มผู้ทดสอบที่คุณต้องการเชิญ (ดูจัดการผู้ทดสอบ) กลุ่มจะระบุโดยใช้
ชื่อแทนกลุ่ม ซึ่งคุณสามารถค้นหาได้ในคอนโซล Firebaseคุณสามารถระบุกลุ่มเป็นรายการที่คั่นด้วยคอมมาได้ ดังนี้
groups: "qa-team, trusted-testers"
หรือจะระบุเส้นทางไปยังไฟล์ข้อความธรรมดาที่มีรายการชื่อกลุ่มที่คั่นด้วยคอมมาก็ได้ ดังนี้
groups_file: "/path/to/groups.txt"
test_devices
test_devices_file
อุปกรณ์ทดสอบที่คุณต้องการเรียกใช้การทดสอบเอเจนต์ App Testing
คุณระบุอุปกรณ์ทดสอบเป็นรายการข้อมูลจำเพาะของอุปกรณ์ที่คั่นด้วยเครื่องหมายเซมิโคลอนได้ดังนี้
test_devices: "model=shiba,version=34,locale=en,orientation=portrait"
หรือจะระบุเส้นทางไปยังไฟล์ข้อความธรรมดาที่มีรายการอุปกรณ์ทดสอบที่คั่นด้วยเซมิโคลอนก็ได้ ดังนี้
test_devices_file: "/path/to/test-devices.txt"
test_usernameชื่อผู้ใช้สำหรับการเข้าสู่ระบบอัตโนมัติที่จะใช้ระหว่างการทดสอบเอเจนต์ App Testing
test_password
test_password_fileรหัสผ่านสำหรับการเข้าสู่ระบบอัตโนมัติที่จะใช้ระหว่างการทดสอบเอเจนต์ App Testing
หรือจะระบุเส้นทางไปยังไฟล์ข้อความธรรมดาที่มีรหัสผ่านก็ได้ โดยทำดังนี้
test_password_file: "/path/to/test-password.txt"
test_username_resourceชื่อทรัพยากรสำหรับช่องชื่อผู้ใช้สำหรับการเข้าสู่ระบบอัตโนมัติที่จะใช้ระหว่างการทดสอบเอเจนต์ App Testing
test_password_resourceชื่อทรัพยากรสำหรับช่องรหัสผ่านสำหรับการเข้าสู่ระบบอัตโนมัติที่จะใช้ระหว่างการทดสอบเอเจนต์ App Testing
test_non_blockingหากตั้งค่าไว้เมื่อเรียกใช้การทดสอบเอเจนต์ App Testing คำสั่งจะเริ่มการทดสอบแล้วแสดงผลทันทีแทนที่จะรอให้การทดสอบเสร็จสมบูรณ์ หากต้องการดูผลการทดสอบ ให้ไปที่คอนโซล Firebase หากไม่ได้ตั้งค่าแฟล็กนี้ คำสั่งจะบล็อกจนกว่าการทดสอบจะเสร็จสมบูรณ์ และออกด้วยรหัสความล้มเหลวหากการทดสอบใดๆ ล้มเหลว
debugแฟล็กบูลีน คุณสามารถตั้งค่านี้เป็น
trueเพื่อพิมพ์เอาต์พุตการแก้ไขข้อบกพร่องแบบละเอียดได้
platform :android do desc "My awesome app" lane :distribute do build_android_app(task: "bundle", ...) # build_android_app is a built-in fastlane action. release = firebase_app_distribution( app: "1:123456789:android:abcd1234", testers: "tester1@company.com, tester2@company.com", release_notes: "Lots of amazing new features to test out!", android_artifact_type: "AAB" ) end end
หากต้องการให้ผู้ทดสอบใช้บิลด์ได้ ให้เรียกใช้ Lane ดังนี้
fastlane <lane>
ค่าที่แสดงผลของการดำเนินการคือแฮชที่แสดงถึงรุ่นที่อัปโหลด แฮชนี้ยังใช้ได้กับ lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE] ด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับช่องที่มีให้ในแฮชนี้ได้ที่เอกสารประกอบเกี่ยวกับ REST API
ปลั๊กอิน fastlane จะแสดงลิงก์ต่อไปนี้หลังจากการอัปโหลดรุ่น ลิงก์เหล่านี้จะช่วยคุณจัดการไบนารีและตรวจสอบว่าผู้ทดสอบและนักพัฒนาแอปรายอื่นๆ มีรุ่นที่ถูกต้อง
- ลิงก์ไปยังคอนโซล Firebase ที่แสดงผลงานเดียว คุณแชร์ลิงก์นี้กับนักพัฒนาแอปคนอื่นๆ ในองค์กรได้
- ลิงก์ไปยังรุ่นในประสบการณ์ของผู้ทดสอบ (แอป Android ในตัว) ที่ช่วยให้ผู้ทดสอบดูบันทึกประจำรุ่นและติดตั้งแอปลงในอุปกรณ์ของตนได้ ผู้ทดสอบต้องมีสิทธิ์เข้าถึงรุ่นดังกล่าวจึงจะใช้ลิงก์ได้
- ลิงก์ที่ลงนามซึ่งดาวน์โหลดและติดตั้งไบนารีของแอป (ไฟล์ APK หรือ AAB) โดยตรง ลิงก์จะหมดอายุหลังจากผ่านไป 1 ชั่วโมง
หลังจากเผยแพร่บิลด์แล้ว บิลด์จะพร้อมใช้งานในแดชบอร์ด App Distribution ของคอนโซล Firebase เป็นเวลา 150 วัน เมื่อบิลด์เหลือเวลาอีก 30 วันก่อนหมดอายุ ประกาศการหมดอายุจะปรากฏในคอนโซลและในรายการบิลด์ของผู้ทดสอบในอุปกรณ์ทดสอบ
ผู้ทดสอบที่ไม่ได้รับเชิญให้ทดสอบแอปก่อนหน้านี้จะได้รับคำเชิญทางอีเมลเพื่อเริ่มต้นใช้งาน ผู้ทดสอบที่มีอยู่จะได้รับการแจ้งเตือนทางอีเมลว่าบิลด์ใหม่พร้อมให้ทดสอบแล้ว ดูวิธีติดตั้งแอปทดสอบได้ที่คู่มือการตั้งค่าของผู้ทดสอบ คุณสามารถตรวจสอบสถานะของผู้ทดสอบแต่ละรายเพื่อดูว่าผู้ทดสอบยอมรับคำเชิญและดาวน์โหลดแอปในคอนโซล Firebase หรือไม่
(ไม่บังคับ) หากต้องการเพิ่มหมายเลขบิลด์โดยอัตโนมัติทุกครั้งที่สร้างรุ่นใหม่ใน App Distribution คุณสามารถใช้การดำเนินการ firebase_app_distribution_get_latest_release และตัวอย่างเช่น ปลั๊กอิน fastlane increment_version_code
โค้ดต่อไปนี้แสดงตัวอย่างวิธีเพิ่มหมายเลขบิลด์โดยอัตโนมัติ
lane :increment_version do
latest_release = firebase_app_distribution_get_latest_release(
app: "<your Firebase app ID>"
)
increment_version_code({ version_code: latest_release[:buildVersion].to_i + 1 })
end
ดูข้อมูลเพิ่มเติมเกี่ยวกับการดำเนินการ firebase_app_distribution_get_latest_release ได้ที่ดูข้อมูลเกี่ยวกับแอปรุ่นล่าสุด
ขั้นตอนที่ 4 (ไม่บังคับ) การจัดการผู้ทดสอบสำหรับการเผยแพร่
คุณสามารถเพิ่มและนำผู้ทดสอบออกจากโปรเจ็กต์หรือกลุ่มได้โดยใช้ไฟล์ Fastfile หรือเรียกใช้การดำเนินการ Fastlane โดยตรง การเรียกใช้การดำเนินการโดยตรงจะลบล้างค่าที่ตั้งไว้ใน Fastfile
เมื่อเพิ่มผู้ทดสอบลงในโปรเจ็กต์ Firebase แล้ว คุณจะเพิ่มผู้ทดสอบลงในแต่ละรุ่นได้ ผู้ทดสอบที่ถูกนำออกจากโปรเจ็กต์ Firebase จะไม่มีสิทธิ์เข้าถึงรุ่นต่างๆ ในโปรเจ็กต์อีกต่อไป แต่อาจยังคงเข้าถึงรุ่นต่างๆ ได้เป็นระยะเวลาหนึ่ง
หากมีผู้ทดสอบจำนวนมาก คุณควรพิจารณาใช้กลุ่ม
ใช้ Fastfile
# Use lanes to add or remove testers from a project. lane(:add_testers) do firebase_app_distribution_add_testers( emails: "foo@google.com,bar@google.com" # or file: "/path/to/testers.txt" group_alias: "qa-team" # (Optional) add testers to this group ) end lane(:remove_testers) do firebase_app_distribution_remove_testers( emails: "foo@google.com,bar@google.com" # or file: "/path/to/testers.txt" group_alias: "qa-team" # (Optional) remove testers from this group only ) end
# Add or remove testers with the terminal
$ fastlane add_testers
$ fastlane remove_testersเรียกใช้การดำเนินการ Fastlane
fastlane run firebase_app_distribution_create_group display_name:"QA Team" alias:"qa-team"fastlane run firebase_app_distribution_add_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"fastlane run firebase_app_distribution_remove_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"fastlane run firebase_app_distribution_delete_group alias:"qa-team"
นอกจากนี้ คุณยังระบุผู้ทดสอบโดยใช้ --file="/path/to/testers.txt แทน --emails ได้ด้วย
งาน firebase_app_distribution_add_testers และ firebase_app_distribution_remove_testers ยังยอมรับอาร์กิวเมนต์ต่อไปนี้ด้วย
project_number: หมายเลขโปรเจ็กต์ Firebasegroup_alias(ไม่บังคับ): หากระบุ ระบบจะเพิ่มผู้ทดสอบไปยัง (หรือนำออกจาก) กลุ่มที่ระบุservice_credentials_file: เส้นทางไปยังไฟล์ข้อมูลเข้าสู่ระบบของบริการ Googlefirebase_cli_token: โทเค็นการตรวจสอบสิทธิ์สำหรับ Firebase CLI
service_credentials_file และ firebase_cli_token เป็นอาร์กิวเมนต์เดียวกันกับที่ใช้โดยการดำเนินการอัปโหลด
ขั้นตอนที่ 5 (ไม่บังคับ) ดูข้อมูลเกี่ยวกับแอปรุ่นล่าสุดของคุณ
คุณสามารถใช้การดำเนินการ firebase_app_distribution_get_latest_release เพื่อดึงข้อมูลเกี่ยวกับแอปรุ่นล่าสุดใน App Distribution ซึ่งรวมถึงข้อมูลเวอร์ชันแอป บันทึกประจำรุ่น และเวลาที่สร้าง กรณีการใช้งานรวมถึงการเพิ่มเวอร์ชันโดยอัตโนมัติและการนำบันทึกประจำรุ่นจากรุ่นก่อนหน้ามาใช้
ค่าที่แสดงผลของการดำเนินการคือแฮชที่แสดงถึงรุ่นล่าสุด แฮชนี้ยังใช้ได้กับ lane_context[SharedValues::FIREBASE_APP_DISTRO_LATEST_RELEASE] ด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับฟิลด์ที่ใช้ได้ในแฮชนี้ได้ที่เอกสารประกอบเกี่ยวกับ REST API
พารามิเตอร์
| พารามิเตอร์ firebase_app_distribution_get_latest_release | |
|---|---|
app
|
จำเป็น: รหัสแอป Firebase ของแอป คุณสามารถดูรหัสแอปได้ในคอนโซล Firebase ในหน้าการตั้งค่าทั่วไป app: "1:1234567890:android:0a1b2c3d4e5f67890" |
firebase_cli_token
|
โทเค็นการรีเฟรชที่พิมพ์เมื่อคุณตรวจสอบสิทธิ์สภาพแวดล้อม CI ด้วย Firebase CLI (อ่านข้อมูลเพิ่มเติมที่หัวข้อใช้ CLI กับระบบ CI) |
service_credentials_file
|
เส้นทางไปยังไฟล์ JSON ของบัญชีบริการของ Google ดูพารามิเตอร์ก่อนหน้าสำหรับวิธีตรวจสอบสิทธิ์โดยใช้ข้อมูลเข้าสู่ระบบของบัญชีบริการ |
debug
|
แฟล็กบูลีน คุณสามารถตั้งค่านี้เป็น |
ขั้นตอนถัดไป
ใช้ความคิดเห็นในแอปเพื่อรวบรวมความคิดเห็นจากผู้ทดสอบเกี่ยวกับแอปของคุณ (รวมถึงภาพหน้าจอ)
ดูวิธีแสดงการแจ้งเตือนในแอปแก่ผู้ทดสอบเมื่อมีแอปเวอร์ชันใหม่พร้อมให้ติดตั้ง
ดูแนวทางปฏิบัติแนะนำสำหรับการเผยแพร่แอป Android ให้แก่ผู้ทดสอบ QA โดยใช้ CI/CD