คุณสามารถรวม App Distribution เข้ากับกระบวนการสร้าง Android ของคุณได้โดยใช้ปลั๊กอิน App Distribution Gradle ปลั๊กอินช่วยให้คุณระบุผู้ทดสอบและบันทึกประจำรุ่นในไฟล์ Gradle ของแอปได้ ทำให้คุณกำหนดค่าการแจกจ่ายสำหรับประเภทบิลด์และเวอร์ชันต่างๆ ของแอปได้
คู่มือนี้จะอธิบายวิธีเผยแพร่ APK ให้กับผู้ทดสอบโดยใช้ปลั๊กอิน App Distribution Gradle
ก่อนที่คุณจะเริ่ม
หากคุณยังไม่ได้ เพิ่ม Firebase ในโครงการ Android ของคุณ
หากคุณไม่ได้ใช้ผลิตภัณฑ์ Firebase อื่นๆ คุณเพียงแค่ต้องสร้างโปรเจ็กต์และลงทะเบียนแอปของคุณเท่านั้น อย่างไรก็ตาม หากคุณตัดสินใจที่จะใช้ผลิตภัณฑ์เพิ่มเติมในอนาคต โปรดแน่ใจว่าได้ทำตามขั้นตอนทั้งหมดในหน้าที่ลิงก์ด้านบนแล้ว
ขั้นตอนที่ 1 ตั้งค่าโครงการ Android ของคุณ
ในไฟล์ Gradle ระดับราก (ระดับโครงการ) ของคุณ (
<project>/build.gradle.kts
หรือ<project>/build.gradle
) ให้เพิ่มปลั๊กอิน App Distribution Gradle เป็นการพึ่งพา: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.0" apply false // Add the dependency for the App Distribution Gradle plugin id("com.google.firebase.appdistribution") version "4.0.1" 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.0' apply false // Add the dependency for the App Distribution Gradle plugin id 'com.google.firebase.appdistribution' version '4.0.1' 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
ก่อนที่คุณจะสามารถใช้ปลั๊กอิน Gradle ได้ คุณต้องตรวจสอบสิทธิ์กับโปรเจ็กต์ Firebase ของคุณก่อนด้วยวิธีใดวิธีหนึ่งต่อไปนี้ ตามค่าเริ่มต้น ปลั๊กอิน Gradle จะค้นหาข้อมูลรับรองจาก Firebase CLI หากไม่มีการใช้วิธีตรวจสอบสิทธิ์แบบอื่น
การตรวจสอบสิทธิ์ด้วยบัญชีบริการช่วยให้คุณใช้ปลั๊กอินกับระบบการผสานรวมอย่างต่อเนื่อง (CI) ได้อย่างยืดหยุ่น มีสองวิธีในการให้ข้อมูลรับรองบัญชีบริการ:
- ส่งไฟล์คีย์บัญชีบริการของคุณไปที่
build.gradle
คุณอาจพบว่าวิธีนี้สะดวกหากคุณมีไฟล์คีย์บัญชีบริการอยู่แล้วในสภาพแวดล้อมบิลด์ของคุณ - ตั้งค่าตัวแปรสภาพแวดล้อม
GOOGLE_APPLICATION_CREDENTIALS
ให้ชี้ไปที่ไฟล์คีย์บัญชีบริการของคุณ คุณอาจต้องการวิธีนี้หากคุณได้กำหนดค่า Application Default Credentials (ADC) สำหรับบริการอื่นของ Google แล้ว (เช่น Google Cloud)
ในการตรวจสอบสิทธิ์โดยใช้ข้อมูลรับรองบัญชีบริการ:
- บน Google Cloud Console ให้เลือกโปรเจ็กต์ของคุณและสร้างบัญชีบริการใหม่
- เพิ่มบทบาท ผู้ดูแลระบบการกระจายแอป Firebase
- สร้างคีย์ json ส่วนตัวและย้ายคีย์ไปยังตำแหน่งที่สภาพแวดล้อมบิลด์ของคุณสามารถเข้าถึงได้ อย่าลืมเก็บไฟล์นี้ไว้ในที่ปลอดภัย เนื่องจากให้สิทธิ์ผู้ดูแลระบบในการเข้าถึง App Distribution ในโปรเจ็กต์ Firebase ของคุณ
- ข้ามขั้นตอนนี้หากคุณสร้างแอปหลังวันที่ 20 กันยายน 2019: ในคอนโซล Google APIs ให้เปิดใช้ Firebase App Distribution API เมื่อได้รับแจ้ง ให้เลือกโปรเจ็กต์ที่มีชื่อเดียวกันกับโปรเจ็กต์ Firebase ของคุณ
ระบุหรือค้นหาข้อมูลรับรองบัญชีบริการของคุณ:
- หากต้องการส่ง Gradle รหัสบัญชีบริการของคุณ ในไฟล์
build.gradle
ให้ตั้งค่าคุณสมบัติserviceCredentialsFile
เป็นไฟล์ JSON คีย์ส่วนตัว หากต้องการค้นหาข้อมูลรับรองของคุณด้วย ADC ให้ตั้งค่าตัวแปรสภาพแวดล้อม
GOOGLE_APPLICATION_CREDENTIALS
เป็นเส้นทางสำหรับไฟล์ JSON คีย์ส่วนตัว ตัวอย่างเช่น:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการตรวจสอบสิทธิ์กับ ADC โปรดอ่าน การให้ข้อมูลประจำตัวแก่แอปพลิเคชันของคุณ
- หากต้องการส่ง Gradle รหัสบัญชีบริการของคุณ ในไฟล์
ดู เข้าสู่ระบบด้วย Firebase CLI สำหรับคำแนะนำเกี่ยวกับวิธีตรวจสอบสิทธิ์โปรเจ็กต์ของคุณ
ขั้นตอนที่ 3 กำหนดค่าคุณสมบัติการกระจายของคุณ
ในไฟล์ Gradle ของ โมดูล (ระดับแอป) (โดยปกติคือ <project>/<app-module>/build.gradle.kts
หรือ <project>/<app-module>/build.gradle
) กำหนดค่า App Distribution โดยเพิ่มอย่างน้อย ส่วน firebaseAppDistribution
หนึ่งส่วน
ตัวอย่างเช่น หากต้องการเผยแพร่บิล 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" } } } // ... }
ใช้พารามิเตอร์ต่อไปนี้เพื่อกำหนดค่าการกระจาย:
พารามิเตอร์บิลด์การเผยแพร่แอป | |
---|---|
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" |
stacktrace | พิมพ์ stacktrace สำหรับข้อยกเว้นของผู้ใช้ สิ่งนี้มีประโยชน์เมื่อทำการดีบักปัญหา |
ขั้นตอนที่ 4 เผยแพร่แอปของคุณให้กับผู้ทดสอบ
สุดท้าย หากต้องการจัดแพ็กเกจแอปทดสอบและเชิญผู้ทดสอบ ให้สร้างเป้าหมาย
BUILD-VARIANT
และappDistributionUpload BUILD-VARIANT
ด้วย Gradle wrapper ของโปรเจ็กต์ของคุณ โดยที่ BUILD-VARIANT คือรสชาติของผลิตภัณฑ์เสริมและประเภทบิลด์ที่คุณกำหนดค่าไว้ในขั้นตอนก่อนหน้า สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรสชาติของผลิตภัณฑ์ โปรดดู ที่ กำหนดค่าตัวแปรรุ่นตัวอย่างเช่น หากต้องการเผยแพร่แอปของคุณโดยใช้เวอร์ชันบิวด์
release
ให้รันคำสั่งต่อไปนี้:./gradlew assembleRelease appDistributionUploadRelease
หรือหากคุณตรวจสอบสิทธิ์กับ บัญชี Google ของคุณและไม่ได้ระบุข้อมูลรับรองในไฟล์ Gradle build ให้รวมตัวแปร
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
: หมายเลขโปรเจ็กต์ Firebase ของคุณserviceCredentialsFile
: เส้นทางไปยังไฟล์ข้อมูลรับรองบริการ Google ของคุณ นี่เป็นอาร์กิวเมนต์เดียวกับที่ใช้โดยการดำเนินการอัปโหลด
ปลั๊กอิน Gradle จะแสดงลิงก์ต่อไปนี้หลังจากอัปโหลดแล้ว ลิงก์เหล่านี้ช่วยคุณจัดการไบนารีและรับรองว่าผู้ทดสอบและนักพัฒนารายอื่นมีรุ่นที่ถูกต้อง:
-
firebase_console_uri
- ลิงก์ไปยังคอนโซล Firebase ที่แสดงรุ่นเดียว คุณสามารถแชร์ลิงก์นี้กับนักพัฒนาคนอื่นๆ ในองค์กรของคุณได้ -
testing_uri
- ลิงก์ไปยังการเปิดตัวในประสบการณ์ของผู้ทดสอบ (แอปเนทิฟ Android) ที่ให้ผู้ทดสอบดูบันทึกประจำรุ่นและติดตั้งแอปลงในอุปกรณ์ของตน ผู้ทดสอบจำเป็นต้องเข้าถึงรุ่นเพื่อใช้ลิงก์ -
binary_download_uri
- ลิงก์ที่ลงนามซึ่งดาวน์โหลดและติดตั้งไบนารีของแอปโดยตรง (ไฟล์ APK หรือ AAB) ลิงก์จะหมดอายุหลังจากหนึ่งชั่วโมง
เมื่อคุณเผยแพร่รุ่นของคุณแล้ว รุ่นนั้นจะพร้อมใช้งานในแดชบอร์ด App Distribution ของคอนโซล Firebase เป็นเวลา 150 วัน (ห้าเดือน) เมื่อบิลด์มีอายุ 30 วันนับจากวันหมดอายุ ข้อความแจ้งการหมดอายุจะปรากฏทั้งในคอนโซลและรายการบิลด์ของผู้ทดสอบบนอุปกรณ์ทดสอบ
ผู้ทดสอบที่ไม่ได้รับเชิญให้ทดสอบแอปจะได้รับคำเชิญทางอีเมลเพื่อเริ่มต้นใช้งาน และผู้ทดสอบที่มีอยู่จะได้รับการแจ้งเตือนทางอีเมลว่ามีบิลด์ใหม่พร้อมที่จะทดสอบ (อ่าน คู่มือการตั้งค่าผู้ทดสอบ เพื่อดูคำแนะนำในการติดตั้งแอปทดสอบ) คุณสามารถตรวจสอบสถานะของผู้ทดสอบแต่ละคนได้ว่าพวกเขายอมรับคำเชิญหรือไม่และดาวน์โหลดแอปในคอนโซล Firebase หรือไม่
ผู้ทดสอบมีเวลา 30 วันในการตอบรับคำเชิญให้ทดสอบแอปก่อนที่จะหมดอายุ เมื่อคำเชิญเหลือเวลา 5 วันนับจากวันหมดอายุ การแจ้งการหมดอายุจะปรากฏในคอนโซล Firebase ถัดจากผู้ทดสอบในรุ่นหนึ่ง คุณสามารถต่ออายุคำเชิญได้โดยส่งอีกครั้งโดยใช้เมนูแบบเลื่อนลงในแถวผู้ทดสอบ
ขั้นตอนถัดไป
ใช้ ความคิดเห็นในแอป เพื่อให้ผู้ทดสอบส่งความคิดเห็นเกี่ยวกับแอปของคุณได้ง่าย (รวมถึงภาพหน้าจอ)
เรียนรู้วิธีแสดง การแจ้งเตือนในแอป แก่ผู้ทดสอบเมื่อแอปเวอร์ชันใหม่พร้อมให้ติดตั้ง
ไปที่ Codelab ของ Android App Bundle เพื่อเรียนรู้วิธีเผยแพร่ App Bundle ทีละขั้นตอน
เรียนรู้แนวทางปฏิบัติที่ดีที่สุดใน การเผยแพร่แอป Android ให้กับผู้ทดสอบ QA โดยใช้ CI/CD