गाइड

iOS कोडिंग एजेंट को असली Mac क्यों चाहिए

एजेंट Swift कहीं भी लिख सकता है। पर iOS ऐप को बिल्ड करना, चलाना और देखना सिर्फ़ Mac पर हो सकता है। यही फ़र्क वजह है कि iOS के काम में Mac चाहिए। यही वजह यह भी है कि Mac वाला एजेंट इतना बेहतर हो जाता है। वह अपना काम खुद जाँच सकता है। यह पेज बताता है कि क्या सिर्फ़ macOS पर होता है। फिर वह लूप देता है जो हम अपनी मशीनों पर एजेंट के लिए सेट करते हैं।

जो सिर्फ़ macOS पर होता है

  • ऐप बिल्ड करना। xcodebuild और Xcode सिर्फ़ macOS पर हैं। Linux मशीन Swift packages और server-side Swift कंपाइल कर सकती है। वह iOS ऐप नहीं बना सकती।
  • उसे चलाना। iOS Simulator, Xcode का हिस्सा है। सिम्युलेटर नहीं, तो एजेंट ने अभी जो ऐप बदला उसे चलाने का कोई तरीका नहीं।
  • उसे देखना। चलते ऐप का स्क्रीनशॉट ही वह तरीका है जिससे एजेंट को पता चलता है कि लेआउट टूट गया। इसके लिए सिम्युलेटर चाहिए।
  • UI टेस्ट। XCUITest ऐप को सिम्युलेटर या डिवाइस पर चलाता है। सिर्फ़ macOS।
  • Signing और अपलोड। Code signing, provisioning profiles, और App Store Connect पर अपलोड, सब macOS पर Apple के टूल से होते हैं।

तो Linux पर एजेंट आपकी Swift फ़ाइलें एडिट करके अंदाज़ा लगा सकता है। Mac पर एजेंट एडिट, बिल्ड, रन, देख और ठीक कर सकता है। काम का दूसरा वाला है।

लूप, कदम दर कदम

इसे एक बार सेट करें और कमांड अपने एजेंट की instructions फ़ाइल में डाल दें, ताकि उसे हर बार बताना न पड़े। पहले एक सिम्युलेटर ढूँढें और उसे boot करें।

xcrun simctl list devices available
xcrun simctl boot "iPhone 16"

उस सिम्युलेटर के लिए बिल्ड करें। scheme की जगह अपनी scheme डालें।

xcodebuild -scheme MyApp \
  -destination 'platform=iOS Simulator,name=iPhone 16' \
  -derivedDataPath build \
  build

बिल्ड को इंस्टॉल और लॉन्च करें।

xcrun simctl install booted build/Build/Products/Debug-iphonesimulator/MyApp.app
xcrun simctl launch booted com.example.MyApp

ऐसा स्क्रीनशॉट लें जिसे एजेंट पढ़ सके।

xcrun simctl io booted screenshot /tmp/screen.png

Claude Code और Codex दोनों इमेज फ़ाइल खोल सकते हैं। एजेंट से कहें कि हर UI बदलाव के बाद स्क्रीनशॉट ले। काम पूरा मानने से पहले वह बताए कि उसे क्या दिख रहा है। यह एक निर्देश लेआउट की ज़्यादातर गलतियाँ पकड़ लेता है।

टेस्ट भी इसी तरह चलाएँ

xcodebuild -scheme MyApp \
  -destination 'platform=iOS Simulator,name=iPhone 16' \
  -derivedDataPath build \
  test

derived data path मायने रखता है। इसे प्रोजेक्ट फ़ोल्डर के अंदर रखने से दूसरा बिल्ड incremental होता है, और मिनटों की जगह सेकंड लेता है। जो एजेंट हर बिल्ड पर चार मिनट रुकता है, वह एक चौथाई काम ही कर पाता है।

लूप को instructions फ़ाइल में डालें

दोनों एजेंट प्रोजेक्ट के निर्देशों के लिए रिपॉज़िटरी रूट की एक फ़ाइल पढ़ते हैं। Claude Code, CLAUDE.md पढ़ता है और Codex, AGENTS.md पढ़ता है। लूप वहाँ डालें, ताकि हर सेशन इसी से शुरू हो।

## Building and checking this app
- Build: xcodebuild -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 16' -derivedDataPath build build
- Run: xcrun simctl install booted build/Build/Products/Debug-iphonesimulator/MyApp.app && xcrun simctl launch booted com.example.MyApp
- Look: xcrun simctl io booted screenshot /tmp/screen.png, then open the image
- After any UI change, build, run, and look before saying it is done.
- Tests: same xcodebuild command with test instead of build.

एजेंट कहाँ अटकते हैं

  • Xcode चुना नहीं गया। नया Xcode इंस्टॉल करने के बाद xcode-select चलाकर उसे चुनें। वरना xcodebuild पुराना वाला इस्तेमाल करता है।
  • सिम्युलेटर boot नहीं हुआ। launch कमांड एक अस्पष्ट error के साथ फ़ेल होती है। पहले उसे boot करें और boot ही रहने दें।
  • Runtime इंस्टॉल नहीं है। नए Xcode में तब तक कोई iOS runtime नहीं होता, जब तक आप उसे डाउनलोड न करें। वह डाउनलोड कई गीगाबाइट का है, और एजेंट के शुरू होने से पहले हो जाना चाहिए।
  • कोई लॉग इन सेशन नहीं। सिम्युलेटर एक GUI ऐप्लिकेशन है। जिस headless मशीन पर कोई लॉग इन नहीं है, वहाँ यह शुरू नहीं होगा। एजेंट के यूज़र को एक सक्रिय डेस्कटॉप सेशन चाहिए। इसीलिए बिना निगरानी वाले Mac पर automatic login ज़रूरी है।

हम आपके लिए क्या सेट करते हैं

हमारे एजेंट Mac पर Xcode इंस्टॉल है, और एक iOS runtime डाउनलोड हो चुका है। एजेंट यूज़र का डेस्कटॉप सेशन हमेशा चालू रहता है। Claude Code और Codex आपके साइन-इन का इंतज़ार कर रहे हैं। ऊपर वाला लूप अपनी instructions फ़ाइल में जोड़ें। फिर पहले ही टास्क से एजेंट आपका ऐप बिल्ड कर सकता है और देख सकता है। क्षमताओं वाली गाइड बताती है कि मशीन पर और क्या चलता है और क्या नहीं।

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

क्या Claude Code, Linux पर iOS ऐप बिल्ड कर सकता है?

+

नहीं। वह Linux पर Swift फ़ाइलें एडिट कर सकता है। वह ऐसे Swift packages भी कंपाइल कर सकता है जो Apple frameworks पर निर्भर नहीं हैं। iOS ऐप बिल्ड करने के लिए Xcode चाहिए, जो सिर्फ़ macOS पर चलता है।

क्या एजेंट को असली iPhone चाहिए?

+

ज़्यादातर काम के लिए नहीं। सिम्युलेटर बिल्ड, रन, स्क्रीनशॉट और UI टेस्ट संभाल लेता है। कैमरा, push notifications, और असली हार्डवेयर पर परफ़ॉर्मेंस जैसी चीज़ों के लिए डिवाइस चाहिए।

क्या एजेंट सिम्युलेटर के स्क्रीनशॉट ले सकता है?

+

हाँ, simctl screenshot कमांड से। शर्त यह है कि सिम्युलेटर boot हो और एजेंट के यूज़र का डेस्कटॉप सेशन हो। फिर एजेंट इमेज खोलकर उसे पढ़ सकता है।

एजेंट कौन सा Xcode वर्ज़न इस्तेमाल करेगा?

+

वही, जिसे xcode-select चुनता है। इसे अपनी instructions फ़ाइल में तय करें। जिस मशीन पर कई वर्ज़न हैं, वहाँ एजेंट से कहें कि बिल्ड से पहले जाँच ले।

संबंधित गाइड