Screengrab (Fastlane) — यह क्या है, सुविधाएँ और स्क्रीनशॉट ऑटोमेशन

लेखक: IT Sectr प्रकाशित: 2026-04-15 पढ़ने का समय: 8 मिनट

Screengrab, Fastlane इकोसिस्टम का एक उपकरण है जो Android और iOS पर मोबाइल एप्लिकेशनों के लिए स्क्रीनशॉट निर्माण को स्वचालित करता है। ड़ज़नों उपकरणों पर मैन्युअली स्क्रीन स्वाइप करने के बजाय, डेवलपर एक कमांड चलाता है और Screengrab स्वतंत्र रूप से सभी आवश्यक स्क्रीनों की तस्वीरें लेता है। Fastlane Docs, 2026 के अनुसार, यह उपकरण एक साथ 30 भाषाओं और कॉन्फ़िगरेशन में निर्दिष्ट कोई भी स्क्रीन रिजोल्यूशन का समर्थन करता है।

मुख्य बातें

  • Screengrab — Android और iOS पर मोबाइल एप्लिकेशनों के लिए स्वचालित स्क्रीनशॉट निर्माण के लिए एक Fastlane उपकरण।
  • स्वचालन सौंवों स्क्रीनशॉट के मैन्युअल निर्माण को टर्मिनल में एक कमांड से बदल देता है।
  • स्थानीयकरण — बिना अतिरिक्त सेटअप के ड़ज़नों भाषाओं में एक साथ स्क्रीनशॉट निर्माण।
  • CI/CD — किसी भी पाइपलाइन के साथ एकीकरण: Jenkins, GitHub Actions, GitLab CI।
  • लचीलापन — एक ही रन में एकाधिक उपकरणों, ओरिएंटेशनों और भाषाओं का समर्थन।

Screengrab क्या है और इसकी आवश्यकता क्यों है

Screengrab Fastlane इकोसिस्टम का एक घटक है जो मोबाइल एप्लिकेशनों के लिए स्वचालित स्क्रीनशॉट निर्माण के लिए डिजाइन किया गया है। यह उपकरण 2015 में एक समस्या के समाधान के रूप में आया: Google Play और App Store पर प्रकाशित करने के लिए प्रति भाषा 4 से 10 स्क्रीनशॉट की आवश्यकता होती है। 30 भाषाओं के समर्थन के साथ, यह 120–300 मैन्युअल तस्वीरों के बराबर है।

मैन्युअल स्क्रीनशॉट निर्माण की समस्या

एक डेवलपर मैन्युअली सिमुलेटर या उपकरण पर एप्लिकेशन शुरू करता है, वांछित स्क्रीन पर जाता है, स्क्रीनशॉट लेता है, उसे कंप्यूटर पर स्थानांतरित करता है, क्रॉप करता है और सही फ़ोल्डर में सहेज करता है। यह प्रक्रिया प्रत्येक भाषा और प्रत्येक ओरिएंटेशन के लिए दोहराई जाती है। Google Play Console के अनुसार, औसत एप्लिकेशन हर दो सप्ताह में अपडेट होता है, जो स्क्रीनशॉट को एक नियमित दिनचर्या में बदल देता है।

स्वचालन के लाभ

Screengrab समस्या को मूल से हल करता है: डेवलपर UI फ्रेमवर्क (Android के लिए Espresso, iOS के लिए XCTest) का उपयोग करके परीक्षण परिदृश्य का वर्णन करता है, और Screengrab उन्हें सभी आवश्यक उपकरणों और भाषाओं पर स्वचालित रूप से चलाता है। Fastlane प्रक्रिया का समन्वय करता है: एप्लिकेशन बनाता है, परीक्षण चलाता है, स्क्रीनशॉट एकत्र करता है और उन्हें आवश्यक फ़ोल्डर संरचना में पैक करता है।

परिणाम — कई घंटे मैन्युअल कार्य के बजाय 10–15 मिनट में सौ स्क्रीनशॉट। Google प्रत्येक महत्वपूर्ण UI परिवर्तन के साथ स्क्रीनशॉट अपडेट करने की अनुशंसा करता है, और स्वचालन के बिना इस सलाह को अक्सर नज़रंदाज़ कर दिया जाता है।

Screengrab कैसे काम करता है: आर्किटेक्चर और संचालन सिद्धांत

Screengrab का आर्किटेक्चर दो मुख्य घटकों के चारों ओर बना है: उपकरण पर एक क्लाइंट (screengrab-lib) और एक रनर जो परीक्षण निष्पादन और परिणाम संग्रह का प्रबंधन करता है। Android पर, यह प्रयोगात्मक परीक्षण फ्रेमवर्क का उपयोग करता है; iOS पर — XCTest।

एक रन का जीवन चक्र

Fastlane, screengrab कार्रवाई को कॉल करता है, जो Screengrabfile कॉन्फ़िगरेशन फ़ाइल को पढ़ता है। रनर screengrab-lib लाइब्रेरी के साथ परीक्षण APK बनाता है, इसे कनेक्टड उपकरणों या एमुलेटरों पर स्थापित करता है, और स्क्रीनशॉट के लिए एनोटेशन के साथ चिह्नित UI परीक्षण चलाता है।

ruby
# Fastfile — स्क्रीनशॉट के लिए lane का विवरण
lane :screenshots do
  capture_android_screenshots(
    output_directory: "fastlane/metadata/android/screenshots",
    locales: ["ru-RU", "en-US", "de-DE"],
    devices: ["pixel_6", "pixel_tablet"],
    use_tests_external_storage: true
  )
end

आउटपुट फ़ाइल संरचना

Screengrab एक फ़ोल्डर पदानुक्रम बनाता है: भाषा → उपकरण → स्क्रीनशॉट। यह संरचना Google Play Console और App Store Connect की आवश्यकताओं से पूरी तरह मेल खाती है। App Store को प्रत्येक उपकरण प्रकार के लिए संयम रूप से परिभाषित आकारों की आवश्यकता होती है, और Screengrab बिल्कुल विनिर्देशों के अनुसार तस्वीरें बनाता है।

मल्टी-डिवाइस समर्थन

यह उपकरण सभी कनेक्टड उपकरणों और एमुलेटरों पर समानांतर रूप से परीक्षण चला सकता है। Android एमुलेटर यदि सक्रिय नहीं हैं तो वे स्वचालित रूप से शुरू हो जाते हैं। iOS के लिए, Screengrab Xcode सिमुलेटरों का उपयोग करता है।

Android के लिए Screengrab की स्थापना और कॉन्फ़िगरेशन

Screengrab की स्थापना दो भागों में है: परियोजना में लाइब्रेरी जोड़ना और कॉन्फ़िगरेशन फ़ाइल कॉन्फ़िगर करना। Android पर, Espresso UI फ्रेमवर्क और Fastlane रिपॉजिटरी से screengrab-lib लाइब्रेरी की आवश्यकता होती है।

डिपेंडेंसीज़ जोड़ना

एप्लिकेशन मॉड्यूल के build.gradle में, screengrab-lib निर्भरता जोड़ी जाती है। लाइब्रेरी ScreenCapturer क्लास प्रदान करती है, जो कॉल के समय स्क्रीनशॉट लेता है।

groovy
// build.gradle (module: app)
androidTestImplementation(
  'tools.fastlane:screengrab-lib:2.1.0'
)

स्क्रीनशॉट के साथ परीक्षण लिखना

एक UI परीक्षण को आवश्यक बिंदुओं पर Screengrab.screenshot() एनोटेशन के साथ चिह्नित किया जाता है। प्रत्येक कॉल वर्तमान स्क्रीन को कैप्चर करता है और उसे निर्दिष्ट नाम से सहेज करता है।

kotlin
import tools.fastlane.screengrab.Screengrab
import tools.fastlane.screengrab.locale.LocaleTestRule

class ScreenshotTest {

    @get:Rule
    val localeTestRule = LocaleTestRule()

    @Test
    fun testTakeScreenshots() {
        Screengrab.screenshot("main_screen")
        // कार्रवाईएँ: लॉगिन बटन पर टैप करें
        Screengrab.screenshot("login_screen")
    }
}

Screengrabfile कॉन्फ़िगरेशन

Screengrabfile में लॉन्च पैरामीटर संग्रहीत होते हैं: उपकरण सूची, भाषाएँ, टाइमआउट और सहेज पथ। यह फ़ाइल आमतौर पर Fastfile के बगल में fastlane फ़ोल्डर में स्थित होता है।

स्क्रीनशॉट स्थानीयकरण और एकाधिक भाषाएँ

स्थानीयकरण Screengrab की मुख्य विशेषता है, और मुख्य कारण कि इसे अक्सर चुना जाता है। यह उपकरण प्रत्येक परीक्षण रन से पहले स्वचालित रूप से एप्लिकेशन की भाषा बदलता है और सभी निर्दिष्ट भाषाओं में स्क्रीनशॉट लेता है।

भाषा कॉन्फ़िगरेशन

भाषाएँ Screengrabfile में locales पैरामीटर का उपयोग करके निर्धारित की जाती हैं। प्रत्येक भाषा के लिए, Screengrab संबंधित संसाधनों के साथ एप्लिकेशन को पुनः स्थापित करता है और पूर्ण परीक्षण चक्र चलाता है। Android पर LocaleTestRule स्वचालित रूप से उपकरण की लोकल बदलता है।

ruby
# Screengrabfile
locales [
  "ru-RU",
  "en-US",
  "de-DE",
  "fr-FR",
  "es-ES",
  "ja-JP",
  "ko-KR"
]

स्थानीयकृत स्क्रीनशॉट के लिए फ़ोल्डर संरचना

Screengrab योजना के अनुसार निर्देशिकाएँ बनाता है: screenshots/{locale}/{device_name}/{screenshot_name}.png। यह संरचना सीधे Google Play की आवश्यकताओं से मेल खाती है, जो Fastlane deliver के माध्यम से एक कमांड में स्क्रीनशॉट अपलोड करने की अनुमति देती है।

iOS के लिए, App Store Connect भाषा के अनुसार एक समतल संरचना में स्क्रीनशॉट की अपेक्षा करता है। Fastlane प्रकाशन के समय Screengrab पदानुक्रम को स्वचालित रूप से आवश्यक प्रारूप में बदल देता है।

CI/CD पाइपलाइन में Screengrab को एकीकृत करना

CI/CD एकीकरण Screengrab के मुख्य लाभों में से एक है। यह उपकरण कमांड लाइन से चलता है और ग्राफिकल इंटरफ़ेस की आवश्यकता नहीं है, जो इसे सर्वर बिल्ड के लिए आदर्श बनाता है।

GitHub Actions

CI वातावरण में, आपको एक Android एमुलेटर या iOS सिमुलेटर शुरू करने की जरूरत है, फिर स्क्रीनशॉट के साथ lane को कॉल करें। GitHub Actions AVD कैशिंग का समर्थन करता है, जो बार-बार की गई रन को तेज़ करता है।

CI के लिए पैरामीटर

CI कॉन्फ़िगरेशन में, मेमोरी और समय की सीमाओं पर विचार करना महत्वपूर्ण है। Android एमुलेटरों को प्रति उपकरण कम से कम 2 GB RAM की आवश्यकता होती है, और 7 भाषाओं और 2 उपकरणों पर एक पूर्ण रन में 20–40 मिनट लगते हैं।

ruby
# Fastfile — टाइमआउट के साथ CI के लिए lane
lane :ci_screenshots do
  capture_android_screenshots(
    locales: ["en-US", "ru-RU"],
    devices: ["pixel_6"],
    clear_previous_screenshots: true,
    tests_timeout: "600",
    output_directory: "screenshots/ci"
  )
end

Jenkins Pipeline

Jenkins के लिए, bundle exec fastlane के कॉल के साथ sh चरण का उपयोग किया जाता है। डेवलपमेंट चक्र को धीमा न करने के लिए रात में या मुख्य शाखा में विलय के बाद ट्रिगर द्वारा स्क्रीनशॉट चलाने की अनुशंसा की जाती है।

Screengrab बनाम विकल्प: उपकरणों की तुलना

Screengrab स्क्रीनशॉट ऑटोमेशन का एकमात्र उपकरण नहीं है। विभिन्न दृष्टिकोणों के साथ विकल्प मौजूद हैं: अंतर्निहित OS उपकरण, वाणिज्यिक प्लेटफ़ार्म, और कोड में स्क्रीनशॉट लाइब्रेरीं।

उपकरणप्लेटफ़ॉर्मस्थानीयकरणCI/CD
ScreengrabAndroid, iOSस्वचालितमूल रूप से
ADB ShellAndroidमैन्युअलस्क्रिप्ट के माध्यम से
XCTestiOSमैन्युअलxcodebuild के माध्यम से
Firebase Test LabAndroidसेटअप की आवश्यकताहाँ
Appiumक्रॉस-प्लेटफ़ॉर्ममैन्युअलWebDriver के माध्यम से

ADB Shell पूर्ण नियंत्रण देता है, लेकिन प्रत्येक परिदृश्य के लिए स्क्रिप्ट लिखने की आवश्यकता होती है। XCTest Xcode में निर्मित है, लेकिन स्वचालित रूप से स्थानीयकरण का प्रबंधन नहीं करता है। Firebase Test Lab क्लाउड में वास्तविक उपकरणों पर परीक्षण चलाता है, जो अधिकतम कवरेज देता है, लेकिन प्रति मिनट शुल्क लेता है।

Screengrab संयोजन के कारण जीतता है: Fastlane बिल्ड जीवनचक्र का प्रबंधन करता है — संकलन से लेकर प्रकाशन तक। Google Play Fastlane deliver के माध्यम से Screengrab फ़ोल्डर संरचना को सीधे स्वीकार करता है।

सामान्य समस्याएँ और उनके समाधान

Screengrab के साथ काम करते समय, डेवलपरों को अक्सर कई बार-बार की जने वाली समस्याओं का सामना करना पड़ता है। सामान्य त्रुटियों का ज्ञान पहली रन पर डिबगिंग समय कम करता है।

स्क्रीनशॉट खाली या काले आते हैं

समस्या तब होती है जब Screengrab स्क्रीन रेंडरिंग पूरी होने से पहले स्क्रीनशॉट लेता है। समाधान screenshot() को कॉल करने से पहले Thread.sleep() विलंब जोड़ना या असिंक्रोनस संचालनों की प्रतीक्षा के लिए Espresso के IdlingResource का उपयोग करना है।

संस्करण असंगति त्रुटि

screengrab-lib का संस्करण Fastlane संस्करण से मेल खाना चाहिए। Fastlane मासिक रूप से अपडेट होता है, और पुरानी लाइब्रेरी नए कॉन्फ़िगरेशन पैरामीटर्स का समर्थन नहीं कर सकती है। समाधान Gemfile और gradle.properties के माध्यम से संस्करणों को सिंक करना है।

CI पर लंबा रन समय

5 उपकरणों पर 30 भाषाओं में रन को एक घंटे से अधिक समय लग सकता है। समाधान रन को विभाजित करना है: एक सभी भाषाओं में स्टोर के लिए, दूसरा दो भाषाओं में आंतरिक आवश्यकताओं के लिए। GitHub Actions समानांतर रन के लिए मैट्रिक्स रणनीतियों का उपयोग करने की अनुमति देता है।

CI पर एमुलेटर समस्याएँ

Android एमुलेटर को हार्डवेयर वर्चुअलाइजेशन की आवश्यकता होती है, जो CI सर्वरों पर हमेशा उपलब्ध नहीं होता है। KVM सक्रिय होना चाहिए, अन्यथा एमुलेटर शुरू नहीं होगा। समाधान GPU त्वरण के बिना x86 इमेज या Firebase Test Lab का उपयोग करना है।

अक्सर पूछे जाने वाले प्रश्न

Screengrab, ADB के माध्यम से सामान्य स्क्रीनशॉट से कैसे अलग है?

ADB वर्तमान में स्क्रीन पर जो कुछ भी प्रदर्शित है उसे कैप्चर करता है। Screengrab UI परीक्षणों के साथ एकीकृत होता है, स्वचालित रूप से भाषाएँ और उपकरण बदलता है, और मानव हस्तक्षेप के बिना एक परिदृश्य के अनुसार स्क्रीनशॉट की एक श्रृंखला लेता है।

क्या Screengrab का उपयोग Fastlane के बिना किया जा सकता है?

नहीं, Screengrab Fastlane इकोसिस्टम का एक घटक है और बिल्डिंग, इंस्टॉलेशन और समन्वय के लिए इसके बुनियादी ढांचे का उपयोग करता है। screengrab-lib लाइब्रेरी अलग से नहीं चलाई जा सकती — ऑर्केस्ट्रेटर के रूप में Fastlane की आवश्यकता होती है।

10 भाषाओं में स्क्रीनशॉट बनाने में कितना समय लगता है?

एक उपकरण पर, 10 भाषाओं पर एक रन में 15–25 मिनट लगते हैं। प्रत्येक भाषा के लिए एप्लिकेशन को पुनः स्थापित करने और UI परीक्षण का पूरा चक्र चलाने की आवश्यकता होती है। एकाधिक उपकरणों पर समानांतर निष्पादन समय को आनुपातिक रूप से कम करता है।

क्या Screengrab iOS एप्लिकेशनों का समर्थन करता है?

हाँ, Screengrab XCTest और Xcode सिमुलेटरों के माध्यम से iOS का समर्थन करता है। कॉन्फ़िगरेशन Android के समान है: भाषाएँ और उपकरण जोड़े जाते हैं, और Swift में UI परीक्षण XCTest का उपयोग करके XCUIScreenshot के माध्यम से कैप्चर के साथ लिखे जाते हैं।

केवल नई भाषाओं के लिए स्क्रीनशॉट कैसे अपडेट करें?

Screengrab इंक्रिमेंटल मोड का समर्थन नहीं करता — प्रत्येक रन स्क्रीनशॉट का पूरा सेट बनाता है। मुख्य रन से मौजूदा कैप्चर को ओवरराइट करने से बचने के लिए सीमित भाषा सूची के साथ CI के लिए एक अलग lane सेट करने की अनुशंसا की जاتी हوगا।

सारांश

  • Screengrab — Android और iOS पर मोबाइल एप्लिकेशनों के स्क्रीनशॉट को स्वचालित करने के लिए एक Fastlane घटक।
  • स्वचालन सौंवों स्क्रीनशॉट के मैन्युअल निर्माण को एक टर्मिनल कमांड से बदल देता है।
  • स्थानीयकरण — उपकरण प्रत्येक परीक्षण रन से पहले स्वचालित रूप से एप्लिकेशन की भाषा बदलता है।
  • CI/CD — ग्राफिकल इंटरफ़ेस के बिना Jenkins, GitHub Actions, GitLab CI और अन्य पाइपलाइन के साथ एकीकरण।
  • संरचना आउटपुट फ़ाइलों की सीधे अपलोड के लिए Google Play और App Store की आवश्यकताओं से मेल खाती है।
  • लचीलापन — एकाधिक उपकरणों, स्क्रीन ओरिएंटेशनों और कस्टम परीक्षण परिदृश्यों का समर्थन।
  • बचत — प्रत्येक अपडेट के साاथ कई घंटे मैन्युअल कार्य के बजाय 15 मिनट में सौ स्क्रीनशॉट।

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें