Screengrab Fastlane اکوسسٹم کا ایک مفید پروگرام ہے جو Android اور iOS پر موبائل ایپلیکیشنز کے لیے اسکرین شاٹ بنانے کو خودکار بناتا ہے۔ درجنوں آلات پر دستی طور پر سکرینوں کو سکرول کرنے کے بجای، ڈیویلپر ایک کمانڈ چلاتا ہے اور Screengrab خود بخود سب ضروری سکرینوں کی تصویریں لے لیتا ہے۔ Fastlane Docs, 2026 کے مطابق، یہ پروگرام ایک ساتھ 30 زبانوں اور ترتیب میں متعین کی گئی کسی بھی سکرین ریزولیوشن کو سپورٹ کرتا ہے۔
اہم نکات
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-lib) اور ایک رنر جو ٹیسٹ کے انجام اور نتائج کی وصول کا انتظام کرتا ہے۔ Android پر، یہ انسٹرومینٹڈ ٹیسٹ فریم ورک استعمال کرتا ہے; iOS پر — XCTest۔
Fastlane screengrab ایکشن کو کال کرتا ہے، جو Screengrabfile ترتیب کی فائل کو پڑھتا ہے۔ رنر screengrab-lib لائبریری کے ساتھ ٹیسٹ APK بناتا ہے، اسے منسلک آلات یا ایمیولیٹرز پر انسٹل کرتا ہے، اور اسکرین شاٹ کے لیے انوٹیشن سے نشان شدہ UI ٹیسٹ چلاتا ہے۔
# 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 سیمیولیٹرز استعمال کرتا ہے۔
Screengrab کی تنصیب دو حصوں پر مشتمل ہے: لائبریری کو منصوبہ میں شامل کرنا اور ترتیب کی فائل کو ترتیب دینا۔ Android پر، Espresso UI فریم ورک اور Fastlane ریپوزیٹری سے screengrab-lib لائبریری درکار ہے۔
ایپلیکیشن ماڈیول کے build.gradle میں، screengrab-lib انحصار شامل کیا جاتا ہے۔ لائبریری ScreenCapturer کلاس فراہم کرتی ہے، جو کال کے وقت اسکرین شاٹ لیتا ہے۔
// build.gradle (module: app)
androidTestImplementation(
'tools.fastlane:screengrab-lib:2.1.0'
)
ایک UI ٹیسٹ کو ضروری مقامات پر Screengrab.screenshot() انوٹیشن سے نشان کیا جاتا ہے۔ ہر کال موجودہ سکرین کو کیپچر کرتا ہے اور اسے متعین نام سے محفوظ کرتا ہے۔
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 فائل لانچ پیرامیٹرز محفوظ کرتی ہے: آلات کی فہرست، زبانیں، وقتی حدود اور محفوظ کرنے کا راستہ۔ یہ فائل عام طور پر Fastfile کے پاس fastlane فائل میں واقع ہوتی ہے۔
لوکائیزیشن Screengrab کی کلیڈی خوبی ہے، اور بنیادی وجہ کے کئی اسے اکثر چونا جاتا ہے۔ یہ پروگرام ہر ٹیسٹ ران سے پہلے خودبخود ایپلیکیشن کی زبان بدلتا ہے اور متعین کردہ تمام زبانوں میں اسکرین شاٹ لیتا ہے۔
زبانیں Screengrabfile میں locales پیرامیٹر استعمال کرکے مقرر کی جاتی ہیں۔ ہر زبان کے لیے، Screengrab مناسب وسائل کے ساتھ ایپلیکیشن کو دوبارہ انسٹل کرتا ہے اور مکمل ٹیسٹ سائکل چلاتا ہے۔ Android پر LocaleTestRule خودبخود آلہ کی مقامی ترتیب کو بدل دیتا ہے۔
# 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 ماحول میں، آپ کو ایک Android ایمیولیٹر یا iOS سیمیولیٹر شروع کرنا ہوگا، پھر اسکرین شاٹ کے ساتھ lane کو کال کریں۔ GitHub Actions AVD کیشنگ کو سپورٹ کرتا ہے، جو دوہرائی ران کو تیز کرتا ہے۔
CI ترتیب میں، میموری اور وقت کی پابندیوں پر غور کرنا ضروری ہے۔ Android ایمیولیٹرز کو فی آلہ کم سے کم 2 GB RAM کی ضرورت ہے، اور 7 زبانوں اور 2 آلات پر ایک مکمل ران میں 20–40 منٹ لگتے ہیں۔
# 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 کے لیے، bundle exec fastlane کے کال کے ساتھ sh مرحلہ استعمال کیا جاتا ہے۔ ترقی کے چکر کو سست نہ کرنے کے لیے رات میں یا مین برانچ میں مرج کرنے کے بعد ٹرگر کے ذریعہ اسکرین شاٹ چلانے کی سفارش کی جاتی ہے۔
Screengrab اسکرین شاٹ خودکاری کا واحد آلہ نہیں ہے۔ مختلف طریقوں کے ساتھ متبادل موجود ہیں: مضمن OS آلات، تجارتی پلیٹ فارمز، اور کوڈ میں اسکرین شاٹ لائبریریز۔
| آلہ | پلیٹ فارم | لوکائیزیشن | CI/CD |
|---|---|---|---|
| Screengrab | Android, iOS | خودکار | مقامی |
| ADB Shell | Android | دستی | اسکریپٹ کے ذریعہ |
| XCTest | iOS | دستی | xcodebuild کے ذریعہ |
| Firebase Test Lab | Android | ترتیب درکار | ہاں |
| 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 کے ذریعہ ورژنز کو ہم آهنگ کرنا ہے۔
5 آلات پر 30 زبانوں میں ران کو ایک گھنٹے سے زیادہ وقت لگ سکتا ہے۔ حل ران کو تقسیم کرنا ہے: ایک تمام زبانوں میں اسٹور کے لیے، دوسرا دو زبانوں میں اندرونی ضرورتوں کے لیے۔ GitHub Actions متوازی ران کے لیے میٹرکس حکم عملی کے استعمال کی اجازت دیتا ہے۔
Android ایمیولیٹر کو ہارڈویئر ورچوئل ائیشن کی ضرورت ہے، جو CI سرورز پر ہمیشہ میسر نہیں ہوتا۔ KVM کو چالو کرنا چاہیے، ورنہ ایمیولیٹر شروع نہیں ہوگا۔ حل GPU اکسیلریشن کے بغیر x86 امیجز یا Firebase Test Lab استعمال کرنا ہے۔
اکثر پوچے جانے والے سوالات
ADB اس وقت سکرین پر جو کځھ بھی چے کا سکرین شاٹ لیتا ہے۔ Screengrab UI ٹیسٹز کے ساتھ ضم ہوتا ہے، خودبخود زبانیں اور آلات بدلتا ہے، اور انسانی مداخلت کے بغیر ایک منظر کے مطابق اسکرین شاٹ کا ایک سلسلہ لیتا ہے۔
نہیں، Screengrab Fastlane اکوسسٹم کا ایک جز ہے اور بنانے، انسٹل کرنے اور ہم آهنگی کے لیے اس کے بنیادی چھٹے کو استعمال کرتا ہے۔ screengrab-lib لائبریری الگ سے نہیں چلائی جا سکتی — آرکیسٹریٹر کے طور پر Fastlane زروری ہے۔
ایک آلہ پر، 10 زبانوں میں ایک ران میں 15–25 منٹ لگتے ہیں۔ ہر زبان کے لیے ایپلیکیشن کو دوبارہ انسٹل کرنا اور UI ٹیسٹ کا مکمل چکر چلانا ضروری ہے۔ کئی آلات پر متوازی عمل کرنا وقت کو متناسب طور پر کم کرتا ہے۔
جی ہاں، Screengrab XCTest اور Xcode سیمیولیٹرز کے ذریعہ iOS کو سپورٹ کرتا ہے۔ ترتیب Android کی طرح ہے: زبانیں اور آلات شامل کیئے جاتے ہیں، اور Swift میں UI ٹیسٹز XCTest استعمال کرکے XCUIScreenshot کے ذریعہ کیپچر کے ساتھ لیکھے جاتے ہیں۔
Screengrab انکریمنٹل موڈ کو سپورٹ نہیں کرتا — ہر ران اسکرین شاٹ کا ایک مکمل سیٹ تیار کرتا ہے۔ مرکزی ران سے موجودہ کیپچرز کو اووررائٹ کرنے سے بچنے کے لیے محدود زبانوں کی فہرست کے ساتھ CI کے لیے ایک علاحدہ lane مقرر کرنے کی سفارش کی جاتی ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں