เผยแพร่แอป Android ให้ผู้ทดสอบโดยใช้ Fastlane

คู่มือนี้อธิบายวิธีเผยแพร่บิลด์ AAB ไปยังผู้ทดสอบโดยใช้ fastlane แพลตฟอร์มโอเพนซอร์สที่ทำให้การสร้างและการเผยแพร่ iOS และ Android เป็นแบบอัตโนมัติ แอป โดยทำตามวิธีการง่ายๆ ที่ระบุไว้ใน Fastfile หลังจากตั้งค่า Fastlane และ Fastfile ของคุณคุณสามารถผสานรวม App Distribution กับ Fastlane ได้ การกำหนดค่า

App Distribution ผสานรวมกับบริการแชร์แอปภายในของ Google Play เพื่อวัตถุประสงค์ต่อไปนี้ ประมวลผล AAB ที่คุณอัปโหลดและให้บริการ APK ที่เพิ่มประสิทธิภาพสำหรับผู้ทดสอบของคุณ การกำหนดค่าอุปกรณ์ การเผยแพร่ AAB ช่วยให้คุณทําสิ่งต่อไปนี้ได้

  • เรียกใช้ APK ที่เพิ่มประสิทธิภาพ (ให้บริการโดย Google Play) ที่ปรับให้เหมาะกับ ของผู้ทดสอบ อุปกรณ์

  • ระบุและแก้ไขข้อบกพร่องของปัญหาเฉพาะอุปกรณ์

  • ทดสอบฟีเจอร์ของ App Bundle เช่น การนำส่งฟีเจอร์ Play และ 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 มีบทบาทใดบทบาทหนึ่งต่อไปนี้ ––

ก่อนเริ่มต้น

  1. เพิ่ม Firebase ลงใน Android หากยังไม่ได้เพิ่ม โปรเจ็กต์ เมื่อเวิร์กโฟลว์นี้สิ้นสุดลง คุณจะ มีแอป Android ใน Firebase ในโปรเจ็กต์ Firebase

    หากไม่ได้ใช้ผลิตภัณฑ์อื่นๆ ของ Firebase คุณจะต้องสร้างเพียง โปรเจ็กต์และลงทะเบียนแอปของคุณ ถ้าคุณตัดสินใจใช้ข้อมูลเพิ่มเติม โปรดทำตามขั้นตอนทั้งหมดใน เพิ่ม Firebase ลงในโปรเจ็กต์ Android

  2. หากต้องการสร้างลิงก์ Firebase ไปยัง Google Play และอัปโหลด AAB โปรดตรวจสอบว่า แอปของคุณเป็นไปตามข้อกำหนดต่อไปนี้

    • มีการลงทะเบียนทั้งแอปใน Google Play และแอป Firebase บน Android แล้ว โดยใช้ชื่อแพ็กเกจเดียวกัน

    • แอปพลิเคชันใน Google Play ได้รับการตั้งค่าบนแอป แดชบอร์ด และเผยแพร่ไปยังแทร็ก Google Play แทร็กใดแทร็กหนึ่ง (การทดสอบภายใน การทดสอบแบบปิด การทดสอบแบบเปิด หรือเวอร์ชันที่ใช้งานจริง)

    • การตรวจสอบของแอปใน Google Play เสร็จสมบูรณ์และมีการเผยแพร่แอปแล้ว ระบบจะเผยแพร่แอปหากคอลัมน์สถานะแอปแสดงข้อใดข้อหนึ่งต่อไปนี้ สถานะต่อไปนี้: การทดสอบภายใน (ไม่ใช่การทดสอบภายในฉบับร่าง) การทดสอบแบบปิด การทดสอบแบบเปิด หรือเวอร์ชันที่ใช้งานจริง

  3. วิธีลิงก์แอป Android ใน Firebase กับบัญชีนักพัฒนาแอป Google Play

    1. ในคอนโซล Firebase ให้ไปที่ การตั้งค่าโปรเจ็กต์ แล้วเลือกแท็บ Integrations

    2. ในการ์ด Google Play ให้คลิกลิงก์
      หากคุณลิงก์กับ Google Play อยู่แล้ว ให้คลิกจัดการ แทน

    3. ทำตามวิธีการบนหน้าจอเพื่อเปิดใช้ App Distribution การผสานรวมและเลือกแอป Firebase Android ที่จะลิงก์กับ Google เล่น

    ดูข้อมูลเพิ่มเติมเกี่ยวกับ การลิงก์กับ Google Play

ขั้นตอนที่ 1 ตั้งค่า Fastlane

  1. ติดตั้งและตั้งค่า Fastlane

  2. หากต้องการเพิ่ม App Distribution ลงในการกำหนดค่า Fastlane ให้เรียกใช้คำสั่งต่อไปนี้ จากรูทของโปรเจ็กต์ Android ดังนี้

    fastlane add_plugin firebase_app_distribution

    หากคำสั่งแสดงตัวเลือกให้คุณ ให้เลือก Option 3: RubyGems.org

ขั้นตอนที่ 2 ตรวจสอบสิทธิ์ด้วย Firebase

ก่อนที่จะสามารถใช้ปลั๊กอิน Fastlane คุณต้องตรวจสอบสิทธิ์กับ โปรเจ็กต์ Firebase ด้วยวิธีใดวิธีหนึ่งต่อไปนี้ โดยค่าเริ่มต้น ปลั๊กอิน Fastlane มองหาข้อมูลเข้าสู่ระบบจาก Firebase CLI หากไม่มีการตรวจสอบสิทธิ์อื่นๆ

ขั้นตอนที่ 3 ตั้งค่า Fastfile และเผยแพร่แอป

  1. ในเลน ./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 (เลิกใช้งานแล้ว) เส้นทางสัมบูรณ์ไปยัง APK หรือ AAB ที่ต้องการอัปโหลด ถ้า ไม่ระบุ Fastlane จะระบุตำแหน่งของไฟล์จากเลน ที่ใช้สร้างไฟล์

    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

    ประเภทการเผยแพร่ต่อไปนี้เป็นส่วนหนึ่งของฟีเจอร์เวอร์ชันเบต้าของผู้ทดสอบอัตโนมัติ

    อุปกรณ์ทดสอบที่คุณต้องการเผยแพร่บิลด์ (โปรดดู การทดสอบอัตโนมัติ)

    คุณระบุอุปกรณ์ทดสอบเป็นรายการทดสอบที่คั่นด้วยเครื่องหมายอัฒภาคได้ อุปกรณ์:

    test_devices: "model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"

    หรือคุณจะระบุเส้นทางไปยังไฟล์ข้อความธรรมดาที่มี รายการอุปกรณ์ทดสอบที่คั่นด้วยเครื่องหมายอัฒภาค

    test_devices_file: "/path/to/test-devices.txt"
    test_username

    ชื่อผู้ใช้สำหรับการเข้าสู่ระบบอัตโนมัติที่จะใช้ระหว่างการทดสอบอัตโนมัติ

    test_password
    test_password_file

    รหัสผ่านสำหรับการเข้าสู่ระบบอัตโนมัติที่จะใช้ระหว่างการทดสอบอัตโนมัติ

    หรือระบุเส้นทางไปยังไฟล์ข้อความธรรมดาที่มีรหัสผ่านก็ได้ ดังนี้

    test_password_file: "/path/to/test-password.txt"
    test_username_resource

    ชื่อทรัพยากรของช่องชื่อผู้ใช้สำหรับการเข้าสู่ระบบอัตโนมัติที่จะใช้ระหว่างการทดสอบอัตโนมัติ

    test_password_resource

    ชื่อทรัพยากรของช่องรหัสผ่านสำหรับการเข้าสู่ระบบอัตโนมัติที่จะใช้ระหว่างการทดสอบอัตโนมัติ

    test_non_blocking

    เรียกใช้การทดสอบอัตโนมัติแบบไม่พร้อมกัน ไปที่คอนโซล 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

หากต้องการให้ผู้ทดสอบใช้งานบิลด์ได้ ให้เรียกใช้ช่องทางต่อไปนี้

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_name: หมายเลขโปรเจ็กต์ Firebase
  • group_alias (ไม่บังคับ): หากระบุไว้ ระบบจะเพิ่มผู้ทดสอบไปยัง (หรือนำออกจาก) กลุ่มที่ระบุ
  • service_credentials_file: เส้นทางไปยังไฟล์ข้อมูลเข้าสู่ระบบบริการของ Google
  • firebase_cli_token: โทเค็นการตรวจสอบสิทธิ์สำหรับ Firebase CLI

service_credentials_file และ firebase_cli_token เหมือนกัน อาร์กิวเมนต์ที่ใช้โดยการอัปโหลด

ขั้นตอนที่ 5 (ไม่บังคับ) รับข้อมูลเกี่ยวกับแอปรุ่นล่าสุด

คุณใช้การดำเนินการ firebase_app_distribution_get_latest_release ได้ เพื่อดึงข้อมูลเกี่ยวกับรุ่นล่าสุดของแอปใน App Distribution รวมถึงข้อมูลเวอร์ชันของแอป บันทึกประจำรุ่น และเวลาที่สร้าง Use Case รวมการเพิ่มเวอร์ชันโดยอัตโนมัติและใช้รุ่นต่อไป จากรุ่นก่อนหน้า

ค่าที่ได้ของการดำเนินการคือแฮชที่แสดงถึงรุ่นล่าสุด คุณใช้แฮชนี้ได้โดยใช้ 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

แฟล็กบูลีน คุณสามารถตั้งค่านี้เป็น true เพื่อพิมพ์ผลลัพธ์การแก้ไขข้อบกพร่องแบบละเอียด

ขั้นตอนถัดไป