با App Distribution و fastlane بیلدهای iOS پیش از انتشار خود را سریعتر توزیع کنید

1. قبل از شروع

4cddd34bd261cea0.png

در این لبه کد، نحوه استفاده از Firebase App Distribution و پلاگین fastlane آن را برای توزیع یک برنامه iOS بین آزمایش‌کنندگان، جمع‌آوری UDID‌های دستگاه آزمایشی، و ثبت آن‌ها در نمایه ارائه‌دهنده برنامه‌تان یاد خواهید گرفت، بنابراین می‌توانید به‌سرعت ساخت‌های Ad Hoc را در آزمایش‌کنندگان دریافت کنید. دست ها

چیزی که یاد خواهید گرفت

  • چگونه با استفاده از Firebase App Distribution و fastlane یک برنامه پیش‌انتشاری iOS (Ad Hoc) را برای آزمایش‌کنندگان آپلود و توزیع کنیم.
  • نحوه ثبت نام به عنوان آزمایش کننده و دانلود برنامه توزیع شده در دستگاه آزمایشی.
  • نحوه ثبت سریع دستگاه های آزمایشی با صادر کردن UDID دستگاه های آزمایشی با افزونه fastlane App Distribution.
  • چگونه نمایه تهیه برنامه خود را به روز کنید و آن را برای توزیع مجدد آپلود کنید.

آنچه شما نیاز دارید

  • یک اکانت گوگل
  • دستگاه اپل با XCode 11.7+ نصب شده است
  • یک برنامه پیش‌نشر موقت iOS که در Xcode ساخته شده است
  • یک حساب توسعه دهنده اپل پولی
  • یک دستگاه iOS فیزیکی برای آزمایش.

برنامه شبیه‌ساز iOS برای اکثر برنامه‌های کد کار می‌کند، اما شبیه‌سازها نمی‌توانند نسخه‌های منتشر شده را دانلود کنند.

همچنان می‌توانید با تأیید اینکه دکمه «دانلود» در برنامه وب آزمایش‌کننده توزیع App ظاهر می‌شود، تأیید کنید که راه‌اندازی کار کرده است.

2. شروع کنید

راه اندازی سریع السیر

App Distribution با fastlane ادغام می‌شود تا به شما امکان می‌دهد توزیع نسخه‌های پیش‌انتشار برنامه خود را خودکار کنید. App Distribution با پیکربندی fastlane شما ادغام می شود.

  1. fastlane را نصب و راه اندازی کنید .
  2. در حین راه‌اندازی، fastlane init در فهرست اصلی پروژه خود اجرا کنید و «راه‌اندازی دستی» را انتخاب کنید. یک زیر شاخه به نام fastlane خواهید دید که حاوی یک Fastfile ، Appfile و Pluginfile است که از آنها برای پیکربندی fastlane استفاده خواهید کرد.

Firebase CLI را نصب کنید

همچنین باید Firebase CLI را نصب کنید. اگر از macOS یا Linux استفاده می کنید، می توانید دستور cURL زیر را اجرا کنید:

curl -sL https://firebase.tools | bash

اگر از ویندوز استفاده می کنید، دستورالعمل های نصب را بخوانید تا یک باینری مستقل دریافت کنید یا از طریق npm نصب کنید.

پس از نصب CLI، اجرای firebase --version باید نسخه 12.0.0 یا بالاتر را گزارش کند:

$ firebase --version
12.0.0

3. برنامه خود را با fastlane بسازید

اپلیکیشن خود را بسازید

  1. چند متغیر سراسری برای fastlane در ./fastlane/Appfile. شناسه برنامه و Apple ID خود را وارد کنید:
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
  1. اولین خط خود را ایجاد کنید و با افزودن موارد زیر به فایل ./fastlane/Fastfile خود از اکشن build_app fastlane (همچنین به عنوان gym نیز شناخته می شود) برای ساخت برنامه خود استفاده کنید:
default_platform(:ios)

lane :build do
    build_app(export_method: "ad-hoc")
end
  1. برنامه خود را برای توزیع امضا کنید.

برای این کد لبه، شما گواهینامه و نمایه خود را با استفاده از get_certificates (که به عنوان cert نیز شناخته می‌شود) مدیریت خواهید کرد، که گواهی‌های امضا را به صورت محلی تولید می‌کند و همه چیز را در MacOS Keychain ذخیره می‌کند. با این حال، معمولاً می‌خواهید از sync_code_signing action fastlane sync_code_signing (همچنین به عنوان match ) برای مدیریت ایمن گواهی‌ها و نمایه‌های امضای کد تیم خود استفاده کنید.

lane :build do
    get_certificates()
    build_app(export_method: "ad-hoc")
end
  1. با استفاده از اقدام get_provisioning_profile (همچنین به عنوان sigh شناخته می شود) یک نمایه تامین برای برنامه خود تنظیم کنید. این به شما امکان می دهد برنامه خود را با آزمایش کنندگان به اشتراک بگذارید.
lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true)
    build_app(export_method: "ad-hoc")
end
  1. [اختیاری] اگر قبلاً برنامه خود را اجرا نکرده اید، دستور زیر را برای ایجاد برنامه خود در کنسول برنامه نویس اپل اجرا کنید:

$ fastlane produce --skip_itc

  1. در نهایت با اجرای lane اپلیکیشن خود را بسازید.

از شما خواسته می شود Apple ID، رمز عبور (که در Keychain شما ذخیره می شود) و شناسه بسته نرم افزاری خود را وارد کنید.

$ fastlane build

اگر به مشکلی برخوردید، لطفاً راهنمای عیب‌یابی fastlane را ببینید.

4. برنامه خود را در Firebase آپلود کنید

اکنون که برنامه خود را ساخته اید، آماده آپلود آن در App Distribution هستید.

یک پروژه Firebase ایجاد و راه اندازی کنید

  1. وارد Firebase شوید.
  2. در کنسول Firebase، یک پروژه جدید ایجاد یا اضافه کنید و سپس نام پروژه خود را "UDID Export Codelab" بگذارید.

برای این پروژه نیازی به فعال کردن Google Analytics ندارید.

  1. روی ایجاد پروژه کلیک کنید.

برنامه iOS خود را به پروژه اضافه کنید

  1. برای ایجاد یک برنامه جدید Firebase iOS، روی نماد iOS کلیک کنید و شناسه بسته برنامه خود را وارد کنید.

9c26c130a6c42212.png

  1. از چند مرحله بعدی رد شوید، سپس روی Continue to console کلیک کنید. بعداً SDK را به برنامه خود اضافه خواهید کرد.

پروژه و برنامه شما اکنون در صفحه نمای کلی پروژه در دسترس است.

66f79cc8a97fa8e9.png

توزیع برنامه را فعال کنید

  1. در بخش Release & Monitor، روی App Distribution کلیک کنید.
  2. پس از پذیرفتن شرایط، روی «شروع به کار» کلیک کنید تا توزیع برنامه برای برنامه شما فعال شود.

460213326c2784ae.png

یک توزیع در fastlane تنظیم کنید

  1. دستور زیر را از ریشه پروژه iOS خود اجرا کنید تا App Distribution را به پیکربندی fastlane خود اضافه کنید.

اگر فرمان گزینه ای را از شما می خواهد، گزینه 3 را انتخاب کنید: RubyGems.org :

$ fastlane add_plugin firebase_app_distribution

  1. تأیید کنید که افزونه نصب شده است:

$ fastlane

خروجی باید fastlane-plugin-firebase_app_distribution در لیست پلاگین های نصب شده نشان دهد.

  1. پس از تایید نصب افزونه، گزینه 0 را برای لغو انتخاب کنید.

پروژه Firebase خود را احراز هویت کنید

برای استفاده از افزونه fastlane ، ابتدا پروژه Firebase خود را احراز هویت می‌کنید.

  1. دستور زیر را برای اتصال CLI به حساب Google خود اجرا کنید:

$ firebase login

  1. هنگامی که دستور یک پیوند احراز هویت را چاپ می کند، پیوند را در یک مرورگر باز کنید.
  2. وقتی از شما خواسته شد، وارد حساب Google خود شوید و اجازه دسترسی به پروژه Firebase خود را بدهید.

برنامه خود را توزیع کنید

اکنون برای توزیع برنامه خود آماده هستید.

  1. در بالای فایل ./fastlane/Fastfile خود، متغیری به نام firebase_app_id تعریف کنید. <your_app_id> با شناسه برنامه Firebase برای برنامه ای که ایجاد کرده اید جایگزین کنید (این مورد را می توانید در صفحه تنظیمات پروژه پیدا کنید).

Fastfile به زبان Ruby نوشته شده است، بنابراین از دستور Ruby برای تعریف متغیرها استفاده کنید.

firebase_app_id = "<your_app_id>"
  1. یک خط جدید به نام distribute اضافه کنید که خط ساخت را فراخوانی می کند و سپس برنامه شما را با استفاده از عمل firebase_app_distribution توزیع می کند.
lane :distribute do
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!",
    )
end
  1. برای ساخت اپلیکیشن و ایجاد توزیع، خط جدید را اجرا کنید.

$ fastlane distribute

در این مرحله، Fastfile شما باید به شکل زیر باشد:

firebase_app_id = "<your Firebase app ID>"

default_platform(:ios)

lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true)
    build_app(export_method: "ad-hoc")
end

lane :distribute do
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!",
    )
end

پس از بازخوانی کنسول Firebase، نسخه جدید برنامه خود را خواهید دید.

c59dc1a94de3bf3c.png

5. از آزمایش کنندگان دعوت کنید تا برنامه شما را دانلود کنند

هنگامی که یک آزمایش‌کننده دعوتی را برای آزمایش یک ساخت موقت می‌پذیرد، از او اجازه می‌خواهد تا UDID خود را به اشتراک بگذارد. اگر موافق باشند، App Distribution اطلاعات دستگاه آنها را جمع آوری می کند و از طریق ایمیل به شما اطلاع می دهد. در این بخش، خود را به عنوان آزمایش‌کننده اضافه می‌کنید تا برنامه‌ای را که توزیع کرده‌اید دانلود و آزمایش کنید.

خود را به عنوان آزمایش کننده به نسخه اضافه کنید

  1. در زیر firebase_app_id در بالای Fastfile خود، یک متغیر برای نگه داشتن آزمایش‌کنندگان ایجاد کنید و آدرس ایمیل خود و همچنین آدرس‌های ایمیل اختیاری دیگری را که می‌خواهید امتحان کنید، در آن قرار دهید.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]
  1. از روش Ruby's Array#join استفاده کنید تا آرایه app_testers را به رشته ای جدا شده با کاما تبدیل کنید، که پارامتر testers انتظار دارد. سپس، نتیجه را به پارامتر testers firebase_app_distribution.
lane :distribute do
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!"
        testers: app_testers.join(","),
    )
end

در این مرحله، Fastfile شما باید به شکل زیر باشد:

firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]

default_platform(:ios)

lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true)
    build_app(export_method: "ad-hoc")
end

lane :distribute do
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!",
        testers: app_testers.join(","),
    )
end
  1. دوباره خط را بدوید.

$ fastlane distribute

وقتی خط را اجرا کردید، آزمایش‌کنندگانی که اضافه کردید ایمیلی دعوت از App Distribution دریافت می‌کنند که به آن‌ها از نسخه جدید در دسترس اطلاع می‌دهد. در کنسول Firebase، اکنون می‌توانید آزمایش‌کنندگانی را که در نسخه برنامه خود اضافه کرده‌اید ببینید.

2e0fc9603b868af8.png

از آنجایی که آدرس ایمیل خود را وارد کرده اید، ایمیلی از Firebase App Distribution دریافت خواهید کرد که از شما دعوت می کند برنامه را آزمایش کنید. شما اکنون اولین آزمایش کننده هستید! برای راه‌اندازی به‌عنوان آزمایش‌کننده در دستگاه آزمایشی، بخش زیر را ادامه دهید.

دستگاه تست خود را ثبت کنید

به عنوان یک آزمایش‌کننده، برای دسترسی به نسخه‌های برنامه‌ای که برای آزمایش دعوت شده‌اید، باید در دستگاه آزمایشی خود وارد Google شوید. از آنجایی که ساخت آزمایشی شما یک نسخه Ad Hoc است، باید دستگاه آزمایشی خود را نیز با نصب نمایه Firebase ثبت کنید. پس از آن، با استفاده از کلیپ وب که به صفحه اصلی دستگاهتان اضافه شده است، می‌توانید به نسخه‌هایی که در دسترس شما قرار می‌گیرند، از برنامه وب آزمایش‌کننده توزیع برنامه دسترسی داشته باشید.

  1. در دستگاه تست iOS خود، ایمیل ارسال شده از Firebase App Distribution را باز کنید و روی پیوند Get Started ضربه بزنید. حتما لینک را در سافاری باز کنید.
  2. اکنون در برنامه وب آزمایش کننده توزیع برنامه هستید. در صفحه ای که ظاهر می شود، با حساب Google خود وارد شوید و روی Accept invitation ضربه بزنید.

d833407de251b89f.png

  1. اکنون می توانید نسخه هایی را که به آنها دعوت شده اید مشاهده کنید. روی ثبت دستگاه در زیر یکی از نسخه‌ها ضربه بزنید.

fd141215e54a938d.png

  1. هنگامی که از شما خواسته شد، نمایه Firebase را دانلود کنید، سپس نمایه را در برنامه تنظیمات نصب کنید.

نصب نمایه به Firebase اجازه می دهد:

  • دستگاه تست را با جمع آوری شناسه دستگاه منحصر به فرد (UDID) ثبت کنید.

Firebase به همه مالکان و ویرایشگران پروژه Firebase ایمیلی ارسال می کند که شامل UDID دستگاه آزمایشی است.

  • یک کلیپ وب را در صفحه اصلی دستگاه تست نصب کنید. کلیپ وب برنامه وب آزمایش کننده توزیع برنامه را باز می کند، که به شما امکان می دهد همه برنامه های آزمایشی خود را نصب کرده و به آنها دسترسی داشته باشید.

در برنامه وب آزمایش کننده توزیع برنامه، دستگاه آزمایشی شما اکنون برای انتشار برنامه شما ثبت شده است.

fe93d649dfa25877.png

اکنون که UDID دستگاه آزمایشی خود را با Firebase به اشتراک گذاشته‌اید، اکنون می‌توانید به عنوان یک توسعه‌دهنده از سر بگیرید. در برگه آزمایش‌کنندگان داشبورد توزیع برنامه ، اطلاعات آزمایش‌کننده شما اکنون در زیر نسخه برنامه‌تان با وضعیت «پذیرفته‌شده» ظاهر می‌شود:

7b9f665a63a384cf.png

در بخش بعدی، UDID دستگاه را به نمایه تهیه برنامه خود اضافه می‌کنید و سپس نسخه‌ای از برنامه خود را می‌سازید که با دستگاه آزمایشی شما کار می‌کند.

UDID های دستگاه آزمایشگر خود را صادر کنید

به عنوان توسعه دهنده، ایمیلی از Firebase دریافت خواهید کرد که حاوی UDID دستگاه آزمایشی است. به عنوان یک گزینه، App Distribution جمع آوری چندین UDID دستگاه جدید را در یک زمان آسان می کند و به شما امکان می دهد آنها را مستقیماً از کنسول Firebase به عنوان یک فایل متنی خام صادر کنید.

  1. برای صادر کردن همه UDID ها، تب Testers & Groups را باز کنید.

241a9936898a2fc0.png

  1. روی Export Apple UDIDs کلیک کنید.

bcf0c26c522d9b4e.png

فایل باید حاوی UDID دستگاه تست شما باشد.

Device ID            Device Name                            Device Platform
1234567890     udid.codelab.tester@gmail.com - iPhone SE 2nd Gen        ios

UDID ها همچنین می توانند از خط فرمان با استفاده از fastlane صادر شوند که در بخش بعدی انجام خواهید داد.

6. نمایه تهیه برنامه خود را به روز کنید و آن را دوباره بسازید

اکنون، UDID دستگاه آزمایشی خود را به نمایه تأمین برنامه خود اضافه می‌کنید، نسخه‌ای از برنامه خود را که برای دستگاه شما کار می‌کند، بازسازی می‌کنید و نسخه جدید را توزیع می‌کنید.

خط صادرات UDID را اضافه کنید

  1. متغیر دیگری را در بالای Fastfile خود اضافه کنید و آن را روی مسیر فایلی قرار دهید که در آن UDID های دستگاه آزمایش کننده شما دانلود می شود.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]
tester_udids_file = "tester_udids.txt"
  1. یک خط جدید راه‌اندازی کنید که از اقدام صادراتی UDID افزونه توزیع برنامه برای دانلود UDID‌های آزمایش‌کننده استفاده می‌کند، درست مانند کاری که از کنسول انجام دادید.
lane :download_udids do
    firebase_app_distribution_get_udids(
        app: firebase_app_id,
        output_file: tester_udids_file,
    )
end
  1. برای دانلود UDID ها، خط زیر را اجرا کنید.

$ fastlane download_udids

  1. فایل دانلود شده را که باید حاوی UDID های دستگاه تست باشد پرینت بگیرید.

$ cat tester_udids.txt

یک دستگاه dd به کنسول توسعه دهنده اپل

  1. خط زیر را برای افزودن UDID ها به لیست دستگاه های خود در کنسول توسعه دهنده اپل ایجاد کنید، بنابراین می توانید با استفاده از اقدام register_devices fastlane آنها را به نمایه تأمین خود اضافه کنید:
lane :add_new_devices do
    register_devices(devices_file: tester_udids_file)
end
  1. سپس، خط را اجرا کنید:

$ fastlane add_new_devices

سپس باید دستگاه های جدید را در لیست دستگاه های کنسول توسعه دهنده خود مشاهده کنید.

دستگاه‌ها را به نمایه تأمین‌کننده خود اضافه کنید

  1. آرگومان force را به مرحله نمایه تامین در خط build خود اضافه کنید تا هر بار که می‌سازید مجبور شوید دستگاه‌های جدیدی را انتخاب کند.
lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true, force: true)
    build_app(export_method: "ad-hoc")
end

برای ساخت و آپلود لاین را دوباره اجرا کنید

اکنون، خط distribute خود را با خطوط جدید به‌روزرسانی می‌کنید تا دستگاه‌ها را به نمایه تأمین‌کننده اضافه کنید، برنامه را دوباره بسازید و سپس آن را توزیع کنید.

  1. با خطوط جدید از distribute تماس بگیرید:
lane :distribute do
    download_udids
    add_new_devices
    build
    firebase_app_distribution(
        app: "1:123456789:ios:abcd1234",
        release_notes: "Try out this app!"
        testers: app_testers.join(","),
    )
end
  1. خط distribute را اجرا کنید:

$ fastlane distribute

در این مرحله، Fastfile شما باید به شکل زیر باشد:

firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]
tester_udids_file = "tester_udids.txt"

default_platform(:ios)

lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true, force: true)
    build_app(export_method: "ad-hoc")
end

lane :distribute do
    download_udids
    add_new_devices
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!",
        testers: app_testers.join(","),
    )
end

lane :download_udids do
    firebase_app_distribution_get_udids(
        app: firebase_app_id,
        output_file: tester_udids_file,
    )
end

lane :add_new_devices do
    register_devices(devices_file: tester_udids_file)
end

نسخه را از دستگاه تست دانلود کنید

اکنون که برنامه شما شامل UDID های دستگاه آزمایشی است، می توان آنها را روی دستگاه های آزمایشی نصب کرد.

e275f73d57cc8fb1.png

  1. در دستگاه آزمایشی خود، با استفاده از پیوند موجود در ایمیل یا نماد موجود در صفحه اصلی دستگاه، به برنامه وب آزمایش کننده توزیع برنامه بازگردید.

وقتی به برنامه UDID codelab بروید، می‌بینید که نسخه آماده دانلود است.

dad6d03b6ad78746.png

  1. اگر در یک دستگاه فیزیکی هستید، دانلود را فشار دهید، سپس برنامه را نصب و اجرا کنید!

7. تبریک می گویم

اکنون App Distribution و fastlane را پیکربندی کرده‌اید تا فرآیند آزمایش قبل از انتشار را خودکار کنید. اکنون، وقتی می‌خواهید آزمایش‌کننده‌های دیگری را دعوت کنید، یا UDID‌های آن‌ها را به برنامه خود اضافه کنید، فقط باید یک دستور را اجرا کنید: fastlane distribute .

بنابراین دیگر نیازی به جمع‌آوری جداگانه UDID از آزمایش‌کنندگان، یا رفتن به کنسول توسعه‌دهنده اپل برای به‌روزرسانی لیست دستگاه‌ها یا تهیه نمایه‌ها نیست. شما حتی نیازی به باز کردن XCode ندارید!

تنظیم این گردش کار برای اجرای ساعتی یا روزانه در محیط ادغام مداوم شما آسان است.

در ادامه مطلب