Snapshot (Fastlane) — mohiyati, ekran tasvirlarini yaratish va mobil ilovalarda sozlash

Muallif: IT Sectr Nashr etilgan: 2026-04-15 O'qish vaqti: 10 daq

Snapshot (Fastlane) — barcha qo'llab-quvvatlanadigan qurilmalar va tillarda iOS ilovalarining ekran tasvirlarini avtomatik yaratish vositasi. Simulyator orqali qo'lda ekran tasvirlarini yaratishdan farqli o'laroq, Snapshot UI testlarini ishga tushiradi va ilovaning belgilangan nuqtalarida ekran tasvirlarini oladi. Fastlane rasmiy hujjatlariga (2026) ko'ra, Snapshot reliz uchun ekran tasvirlarini tayyorlash vaqtini 4 soatdan 15 daqiqaga qisqartiradi.

Asosiy ma'lumotlar

  • Snapshot — barcha qurilmalar va tillarda UI testlari orqali iOS ilovalarining avtomatik ekran tasvirlarini yaratish uchun Fastlane vositasi.
  • Vosita XCTest UI testlari bilan integratsiyalanadi: dasturchi ilovaning asosiy ekranlarida tasvirlarni olish uchun test kodiga snapshot() buyruqlarini qo'shadi.
  • Snapshot App Store talab qiladigan barcha iPhone va iPad qurilma o'lchamlarini qo'llab-quvvatlaydi: 6.5, 5.5, 6.7, 12.9 dyuym va boshqa ekran formatlari.
  • Sozlash Snapfile fayli orqali amalga oshiriladi, unda qurilmalar, tillar, lokalizatsiya va generatsiya uchun simulyatorni ishga tushirish parametrlari ko'rsatiladi.
  • Natijalar screenshots/ papkasida saqlanadi, Deliver bilan mos — ekran tasvirlari qo'shimcha ishlovsiz App Store-ga yuklashga tayyor.

Snapshot (Fastlane) nima?

Snapshot (Fastlane) — App Store uchun ilova ekran tasvirlarini yaratishni avtomatlashtiradigan Fastlane ekotizimining komponenti. U iOS simulyatorlarida UI testlarini ishga tushiradi, ilovaning belgilangan holatlarida ekran tasvirlarini oladi va ularni har bir til va qurilma uchun to'g'ri nomlar bilan tuzilgan papkada saqlaydi.

Snapshotsiz dasturchilar simulyatorni qo'lda ishga tushiradi, har bir ekranni ochadi, Cmd+S orqali ekran tasvirini oladi, tilni o'zgartiradi va barcha kombinatsiyalar uchun jarayonni takrorlaydi. Ekran tasvirlarini avtomatlashtirish ASO optimallashtirishning asosiy elementi, chunki App Store har bir yangi reliz uchun dolzarb rasmlarni talab qiladi va 60+ ekran tasvirini qo'lda yangilash soatlab vaqt oladi.

App Store Connect Documentation (2025) ma'lumotlariga ko'ra, lokalizatsiya qilingan ekran tasvirlari bo'lgan ilovalar maqsadli mamlakatlarda 25% ko'proq konversiyaga ega. Snapshot jamoalarga bir ishga tushirishda 32 til uchun vizual kontentni yangilash imkonini beradi, bu ayniqsa ilovaning yangi funksiyalariga bog'liq marketing kampaniyalari uchun muhim.

Snapshot-dan App Store-da nashr etiladigan har qanday loyihada foydalaning — bu reliz jarayonini avtomatlashtirish va ASO-ni yaxshilashga intilayotgan jamoalar uchun standart vositadir.

Snapshot ekran tasvirlarini qanday yaratadi

Ekran tasvirlarini yaratish jarayoni Snapshot-da bir necha bosqichdan iborat: UI testlarini tayyorlash, Snapfile sozlamalari, simulyatorlarni ishga tushirish va natijalarni yig'ish. Snapshot ketma-ket ko'rsatilgan qurilmalar va tillar uchun har bir simulyatorni ishga tushiradi, UI testlarini bajaradi va snapshot() funksiyasi chaqirilgan nuqtalarda tasvirlarni oladi.

Barcha testlar tugagandan so'ng, Snapshot ekran tasvirlarini App Store talablariga mos nomlar bilan screenshots/[Language]/ papkasiga to'playdi. Har bir ekran tasviri maqsadli qurilmaga mos rezolyutsiya bilan PNG formatida saqlanadi. Snapshot shuningdek, yaratilgan barcha tasvirlarni vizual tekshirish uchun HTML hisobotini yaratadi.

Snapshot uchun UI testlarini sozlash

Snapshot ishlashi uchun ilovaning XCTest UI test kodiga snapshot() chaqiruvlari qo'shilishi kerak. Funksiya chaqiruv paytidagi joriy ekran holatining tasvirini oladi. Dasturchi snapshot() ni har bir asosiy harakatdan keyin joylashtiradi: ekranni ochish, ma'lumotlarni kiritish, tablar bo'ylab navigatsiya yoki natijalarni ko'rsatish.

UI test strukturasiga misol: test ilovaga kiradi, kirish ekrani tasviri uchun snapshot("01-LoginScreen") chaqiradi, so'ng asosiy ekranga o'tadi va asosiy ekran tasviri uchun snapshot("02-HomeScreen") chaqiradi. XCTest — iOS ilovalarini birlik va UI testlash uchun Apple freymvorki, to'g'ridan-to'g'ri Xcode-ga integratsiyalangan.

objective-c
// Snapshot uchun UI testi
- (void)testScreenshots {
    XCUIApplication *app = [[XCUIApplication alloc] init];
    [app launch];
    
    snapshot(@"01-LoginScreen");
    
    [app.textFields[@"email"] tap];
    [app.textFields[@"email"] typeText:@"user@company.com"];
    [app.buttons[@"Login"] tap];
    
    snapshot(@"02-HomeScreen");
}

Tillari va qurilmalar bilan ishlash

Snapshot Snapfile-da ko'rsatilgan har bir til uchun simulyator tilini avtomatik o'zgartiradi. Ilova tegishli lokalizatsiya bilan ishga tushiriladi va UI testlari shu tilda bajariladi. Ekran tasvirlarini lokalizatsiya qilish — ASO ning muhim omili: foydalanuvchilar 75% hollarda ona tilidagi kontentga ega ilovalarni afzal ko'radilar, jumladan App Store-dagi ekran tasvirlari.

Har bir qurilma uchun Snapshot tegishli ekran diagonali bilan alohida simulyatorni ishga tushiradi. App Store talab qiladigan barcha o'lchamlar qo'llab-quvvatlanadi: iPhone 6.5 dyuym (iPhone 15 Pro Max), 5.5 dyuym (iPhone 8 Plus), 6.7 dyuym (iPhone 15 Plus) va iPad 12.9 dyuym. iOS Simulyatori — jismoniy qurilmasiz ilovalarni sinash uchun Xcode-ga o'rnatilgan iOS qurilmasining dasturiy emulyatsiyasi.

bash
# Barcha qurilmalar va tillar uchun ekran tasvirlarini yaratish
fastlane snapshot

# Faqat ko'rsatilgan qurilmalar uchun generatsiya
fastlane snapshot --devices "iPhone 15 Pro Max,iPhone 15"

# Ekran tasvirlarini yaratishdan oldin tozalash
fastlane snapshot --reinstall_app --erase_simulator

Snapshot-ni Snapfile orqali sozlash

Snapfile — ekran tasvirlarini yaratish parametrlarini belgilaydigan Fastlane konfiguratsiya fayli: qurilmalar ro'yxati, tillar, kutish vaqti va ishga tushirish variantlari. Snapfile fastlane papkasida saqlanadi va loyiha bilan birga versiyalanadi, bu jamoa a'zolari uchun yagona konfiguratsiyani kafolatlaydi.

ruby
# Snapfile — ekran tasvirlari konfiguratsiyasi
devices([
    "iPhone 15 Pro Max",
    "iPhone 15",
    "iPad Pro (12.9-inch)"
])

languages([
    "en-US",
    "ru",
    "de-DE"
])

scheme("MyAppUITests")
output_directory("./screenshots")
clear_previous_screenshots(true)
reinstall_app(true)
erase_simulator(true)

clear_previous_screenshots parametri generatsiyani boshlashdan oldin eski ekran tasvirlarini o'chiradi — bu chiqish papkasida eskirgan rasmlar to'planishining oldini oladi. reinstall_app har bir ishga tushirishdan oldin ilovani simulyatorga qayta o'rnatadi, bu oldingi testlarning yangi generatsiyaga ta'sirisiz toza sessiyani kafolatlaydi.

erase_simulator parametri testlarni boshlashdan oldin simulyator tarkibini tozalaydi — kesh, sozlamalar va oldingi sessiyalar ma'lumotlarini o'z ichiga oladi. Bu, ayniqsa, ilovaning onboarding yoki birinchi ishga tushirilishini tekshiradigan testlar uchun muhim. Snapshot shuningdek, simulyatorda iOS versiyasini ko'rsatish uchun ios_version va UI testining birinchi xatosida generatsiyani to'xtatish uchun stop_after_first_error parametrlarini qo'llab-quvvatlaydi.

SwiftUI loyihalari uchun use_simulator_for_language parametri mavjud bo'lib, u tizim regionini o'zgartirish o'rniga simulyator sozlamalari orqali tilni almashtirishni boshqaradi. Snapshot shuningdek, ilovani ishga tushirishda qo'shimcha argumentlarni uzatish uchun launch_arguments ni qo'llab-quvvatlaydi — backendning turli konfiguratsiyalari yoki A/B testlari bilan sinovlar uchun foydali.

Snapshot buyruqlari bilan tasvirlarni yaratish

Snapshot interfeysi generatsiyani ishga tushirish uchun asosiy buyruqlar va jarayonni aniq boshqarish uchun kengaytirilgan bayroqlarni o'z ichiga oladi. Asosiy buyruq fastlane snapshot Snapfile konfiguratsiyasi asosida ekran tasvirlarini to'liq generatsiya siklini ishga tushiradi.

Tez generatsiya va filtrlash

fastlane snapshot --devices "iPhone 15" buyrug'i Snapfiledan qolganlarini e'tiborsiz qoldirib, faqat ko'rsatilgan qurilmalar uchun ekran tasvirlarini yaratadi. --languages "en-US,ru" generatsiya uchun tillarni filtrlaydi. Ushbu bayroqlar kombinatsiyasi 5 qurilma va 10 tilda 30 daqiqagacha davom etishi mumkin bo'lgan to'liq generatsiya siklini kutmasdan bitta qurilma va tilda ekran tasvirlarini tez tekshirish uchun foydali.

bash
# Bir qurilma uchun tez generatsiya
fastlane snapshot --devices "iPhone 15" --languages "en-US"

# Ilovani qayta o'rnatish bilan generatsiya
fastlane snapshot --reinstall_app --erase_simulator

# HTML hisoboti bilan generatsiya
fastlane snapshot --output_directory "./build/screenshots"

--output_directory bayrog'i natijalarni saqlash papkasini o'zgartiradi. Odatiy bo'lib, Snapshot ekran tasvirlarini fastlane/screenshots papkasida saqlaydi. Deliver bilan integratsiya uchun Deliverfile kutilgan tuzilmasiga mos papkani ko'rsating — bu fayllarni papkalar o'rtasida qo'lda nusxalamasdan ekran tasvirlarini to'g'ridan-to'g'ri nashr jarayoniga uzatish imkonini beradi.

Snapshot parametriVazifasiMisol
devicesGeneratsiya uchun qurilmalar ro'yxatiiPhone 15, iPad Pro
languagesLokalizatsiya tillari ro'yxatien-US, ru, de-DE
reinstall_appTestlardan oldin ilovani qayta o'rnatishtrue / false
erase_simulatorIshga tushirishdan oldin simulyatorni tozalashtrue / false
clear_previousEski ekran tasvirlarini o'chirishtrue / false

Snapshot-ni CI/CD pipeline-ga integratsiyalash

Snapshot CI/CD da — har bir reliz commitida ekran tasvirlarini avtomatik yaratish. Snapshot Deliver bosqichidan oldin ishga tushiriladi, shunda App Store-dagi ekran tasvirlari ilovaning joriy versiyasiga mos kelishi va oldingi versiyalarning eskirgan interfeys elementlarini o'z ichiga olmasligi kafolatlanadi.

CI da Snapshot ishlashi uchun o'rnatilgan iOS simulyatorlari bilan Xcode talab qilinadi. CI muhitida Snapshot runner-ga oldindan yuklangan Xcode simulyatorlaridan foydalanadi. GitHub Actions qo'shimcha sozlamalarsiz UI testlarini ishga tushirish uchun oldindan o'rnatilgan Xcode va iOS simulyatorlari bilan tasvirlarni taqdim etadi.

bash
# Snapshot-ni CI muhitida ishga tushirish
fastlane snapshot --skip_open_summary \

      --output_directory "$CI_PROJECT_DIR/screenshots"

# Ekran tasvirlarini CI artefaktlari sifatida saqlash
cp -R "screenshots/" "$CI_PROJECT_DIR/artifacts/"

--skip_open_summary parametri generatsiyadan keyin HTML hisobotining ochilishini o'chiradi — CI muhitida grafik interfeys mavjud emas. Generatsiya natijalari CI topshirig'ining artefakti sifatida uzatiladigan papkada saqlanadi va keyin reliz bilan birga App Store-ga yuklash uchun Deliver tomonidan ishlatiladi.

CI pipeline-ni tezlashtirish uchun concurrent_simulators orqali parallel ekran tasvirlari generatsiyasidan foydalaning — bu Snapfile parametri bir vaqtning o'zida bir nechta simulyatorlarni ishga tushiradi. Bu 4 parallel oqimdan foydalanganda 5 qurilma va 10 til uchun ekran tasvirlarini generatsiya qilish vaqtini 40 daqiqadan 15 daqiqaga qisqartiradi.

Snapshot bilan ishlashda odatiy xatolar

Snapshot-dan foydalanishda dasturchilar ko'pincha UI testlarining beqarorligi, simulyator muammolari va qurilmalarning noto'g'ri konfiguratsiyasi bilan bog'liq xatolarga duch kelishadi. Xatolarni diagnostika qilish Snapshot-da har bir qadamning ekran tasvirlari va muvaffaqiyatsiz testlar haqida ma'lumotni o'z ichiga olgan HTML hisobotini tahlil qilish bilan boshlanadi.

«Failed to build scheme MyAppUITests» xatosi UI testlari sxemasi qurish uchun sozlanmaganida yuz beradi. Yechim: Xcode-da UI testlari uchun alohida Scheme yaratilganligiga va buyruq satridan kirish uchun Shared opsiyasi yoqilganligiga ishonch hosil qiling. Xcode Scheme — har bir harakat uchun maqsadlar va parametrlar to'plamini belgilaydigan ilovani qurish, testlash va ishga tushirish konfiguratsiyasi.

«No simulators found matching...» xatosi ko'rsatilgan qurilma turi yoki iOS versiyasi bilan simulyator yo'qligini bildiradi. Yechim: simulyator yaratish uchun xcrun simctl create ni bajaring yoki xcrun simctl list ro'yxatidan mavjud qurilmani ko'rsating. xcrun simctl — iOS simulyatorlarini boshqarish uchun Xcode buyruq satri vositasi: yaratish, o'chirish, ishga tushirish va diagnostika.

«UI test failure» xatosida UI testi tillardan yoki qurilmalardan birida o'tmaydi. Yechim: Snapshot-ni --stop_after_first_error bayrog'i bilan ishga tushiring, HTML hisobotidagi ekran tasvirini tahlil qiling va testni tuzating. Tez-tez sabab turli tillarda matnning har xil uzunligi bo'lib, buning natijasida interfeys elementlari bir-biriga yopishadi yoki ekran chegaralaridan chiqib ketadi.

Tez-tez beriladigan savollar

Snapshot qaysi iOS qurilmalarini qo'llab-quvvatlaydi?

Snapshot iPhone 15 Pro Max (6.7 dyuym), iPhone 15 (6.1 dyuym), iPad Pro 12.9 dyuym va iPad mini ni o'z ichiga olgan iPhone va iPad oilasining barcha qurilmalarini qo'llab-quvvatlaydi. Har bir qurilma uchun Snapshot Xcode dan tegishli simulyator skinlarini yuklaydi, bu aniq ekran rezolyutsiyasini kafolatlaydi.

Snapshot ishlashi uchun haqiqiy qurilmalar kerakmi?

Yo'q, Snapshot faqat Xcode tarkibidagi iOS simulyatorlari bilan ishlaydi. Haqiqiy qurilmalar talab qilinmaydi va qo'llab-quvvatlanmaydi — barcha ekran tasvirlari App Store talablari uchun bir xil rezolyutsiya va rang uzatilishini ta'minlaydigan simulyator muhitida yaratiladi.

Snapshot ekran tasvirlarida matn lokalizatsiyasini qanday boshqaradi?

Snapshot Snapfiledan har bir til uchun UI testlarini ishga tushirishdan oldin simulyator tilini o'zgartiradi. Ilova tizim lokalizatsiya sozlamalari orqali tegishli tilda ko'rsatiladi. UI testlari NSLocalizedString orqali lokalizatsiya qilingan satrlardan foydalanadi, bu barcha ekran tasvirlarida to'g'ri matnni kafolatlaydi.

macOS ilovalari uchun ekran tasvirlarini yaratish mumkinmi?

Ha, Snapshot Fastlane 2.200 versiyasidan boshlab macOS ilovalarini qo'llab-quvvatlaydi. macOS uchun Snapfileda app_platform("macOS") parametri orqali platformani ko'rsating. Snapshot macOS da UI testlarini ishga tushiradi va Mac App Store talablariga muvofiq ekran tasvirlarini yaratadi.

Snapshot oddiy Cmd+S ekran tasviridan qanday farq qiladi?

Qo'lda ekran tasviri har bir ekranni qo'lda ochish, tilni o'zgartirish, qurilmani o'zgartirishni talab qiladi — to'liq to'plam uchun taxminan 60 harakat. Snapshot butun jarayonni avtomatlashtiradi: tillar va qurilmalarni o'zgartiradi, UI testlarini ishga tushiradi va App Store uchun to'g'ri nomlar bilan ekran tasvirlarini 15 daqiqada saqlaydi.

Xulosa

  • Snapshot — barcha qurilmalar va tillarda XCTest UI testlari orqali iOS ilovalarining avtomatik ekran tasvirlarini yaratish uchun Fastlane vositasi.
  • Dasturchi ilovaning asosiy nuqtalarida UI test kodiga snapshot() chaqiruvlarini qo'shadi — Snapshot bu joylarda tasvirlarni oladi.
  • Snapfile orqali sozlash qurilmalar, tillar va simulyator parametrlari ro'yxatini belgilaydi: devices, languages, reinstall_app va erase_simulator.
  • Natijalar to'g'ridan-to'g'ri App Store-ga yuklash uchun Deliver bilan mos formatda screenshots/[Language]/ papkasida saqlanadi.
  • CI/CD integratsiyasi jarayonni tezlashtirish uchun parallel simulyatorlar bilan har bir relizdan oldin avtomatik yangi ekran tasvirlarini yaratish imkonini beradi.
  • Snapshot-ning odatiy xatolari turli tillardagi beqaror UI testlari, Xcode da simulyatorlarning yo'qligi yoki Scheme ning noto'g'ri konfiguratsiyasi bilan bog'liq.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing