Xcode — Apple platformalari uchun application yaratish, compile qilish, testdan o‘tkazish, debug qilish va tarqatishga mo‘ljallangan integratsiyalashgan development muhiti. U iOS, macOS, watchOS, tvOS va visionOS loyihalarida ishlatiladi. Xcode editor, compiler, simulator, debugger, Interface Builder, profiler va signing vositalarini birlashtiradi.
Xcode faqat matn editor emas. U Apple SDK, build system va distribution jarayoni bilan bevosita bog‘langan.
Project
Xcode project source fayl, resource, build setting va targetlarni birlashtiradi.
Project fayli:
.xcodeproj
ko‘rinishida bo‘ladi.
Bir project bir nechta application, framework yoki test targetga ega bo‘lishi mumkin.
Workspace
Workspace bir nechta projectni birgalikda ochadi:
.xcworkspace
Dependency manager yoki katta modular loyihada ishlatiladi.
CocoaPods odatda workspace yaratadi.
Developer workspace mavjud bo‘lsa faqat projectni ochib yubormasligi kerak.
Target
Target bitta build mahsulotini ifodalaydi:
Har target source membership, build phase va settingga ega.
Bir source bir nechta targetga kirishi mumkin.
Scheme
Scheme qaysi target va configuration bilan:
bajarilishini belgilaydi.
CI shared scheme’dan foydalanadi.
Local userga xos scheme repositoryga kirmasligi mumkin.
Build configuration
Keng configurationlar:
- Debug;
- Release.
Loyiha Staging yoki boshqa variantlarni qo‘shishi mumkin.
Har configuration optimization, logging, endpoint va signing settingiga ega.
Secret build setting ichida plaintext saqlanmaydi.
Build setting
Compiler, linker, search path, deployment target va code signing kabi qiymatlar build settinglarda saqlanadi.
Qiymat:
- project;
- target;
- configuration;
.xcconfig
qatlamlaridan kelishi mumkin.
Effective value inheritance va override orqali aniqlanadi.
xcconfig
Build settinglarni matnli .xcconfig faylida boshqarish mumkin.
Bu environment variantlari va source control uchun qulay.
Include orqali umumiy setting qayta ishlatiladi.
Secretlar alohida CI environment’dan keladi.
Swift compiler
Xcode Swift source’ni native codega compile qiladi.
bajaradi.
Katta expression type-checkingni sekinlashtirishi mumkin.
Clang
Objective-C, C va C++ kod Clang bilan compile qilinadi.
Xcode SDK header va Apple target toolchainini beradi.
Swift va Objective-C bridging header yoki module orqali birga ishlaydi.
Compiler warninglar build policy bilan errorga aylantirilishi mumkin.
Simulator
Simulator iPhone va boshqa Apple device muhitini Mac’da ishga tushiradi.
U real device architecture va hardware behaviorini to‘liq takrorlamasligi mumkin.
Camera, push, performance, thermal, biometric va sensor imkoniyatlari real qurilmada ham tekshiriladi.
Debugger
Xcode LLDB debuggerdan foydalanadi.
Imkoniyatlar:
UI debugger view hierarchy’ni tekshiradi.
Release optimizationda variable va stack boshqacha ko‘rinishi mumkin.
Interface Builder
Storyboard va XIB fayllari orqali UIKit interfeysi visual tarzda yaratilishi mumkin.
Auto Layout constraintlari ekranga moslashadi.
Merge conflict text XML ichida yuz berishi mumkin.
SwiftUI ko‘p UI’ni code orqali declarative yozishga imkon beradi.
Preview
SwiftUI preview view’ni to‘liq application ishga tushirmasdan ko‘rsatadi.
Turli device, locale, color scheme va dynamic type test qilinadi.
Preview build environmentga va dependency injectionga bog‘liq.
Og‘ir side effect preview’ni buzishi mumkin.
Asset Catalog
Image, color, icon va boshqa assetlar .xcassets ichida boshqariladi.
Scale, appearance va device variantlari mavjud.
App icon required slotlarga joylashtiriladi.
Build tool katalogni optimized formatga compile qiladi.
Test
XCTest framework unit, UI va performance test uchun ishlatiladi.
Xcode test plan turli configuration va test selectionni boshqarishi mumkin.
CI xcodebuild test orqali testlarni ishga tushiradi.
Result bundle diagnostika uchun saqlanadi.
Instruments
Instruments performance profilerlar to‘plami.
U:
- CPU;
- memory;
- allocation;
- leak;
- network;
- energy;
- Core Data;
- animation
ni tahlil qiladi.
Faqat simulator emas, real device profiling muhim.
Archive
Release tarqatish uchun Archive yaratiladi.
Archive:
- application;
- dSYM;
- metadata;
- signing ma’lumoti
ni saqlaydi.
Organizer orqali App Store Connect, Ad Hoc yoki boshqa distributionga export qilinadi.
Code signing
Xcode certificate, provisioning profile, team va entitlementni moslashtiradi.
Automatic signing developmentni soddalashtiradi.
CI’da signing identity va profile xavfsiz import qilinadi.
Noto‘g‘ri entitlement archive validation xatosi beradi.
Source control
Xcode Git integrationni taqdim etadi.
Branch, commit va diff ko‘rish mumkin.
Katta project file’da parallel o‘zgarish merge conflict yaratadi.
File systemga asoslangan group va project generation bu muammoni kamaytirishi mumkin.
Command-line build
xcodebuild avtomatik build, test va archive uchun ishlatiladi.
Muhim argumentlar:
- workspace yoki project;
- scheme;
- configuration;
- destination;
- archive path.
Xcode versioni CI image’da pin qilinadi.
Derived Data
Xcode intermediate build, index va generated fayllarni Derived Data directory’da saqlaydi. Corrupt cache g‘alati compiler yoki preview xatosini keltirishi mumkin. Uni tozalash diagnostika vositasi, ammo har buildda o‘chirish incremental compilation foydasini yo‘qotadi.
Device log
Real iPhone yoki boshqa device’dagi crash, console va system log Xcode orqali ko‘riladi. Simulator’da takrorlanmaydigan memory, thermal, permission va background muammolari shu orqali tahlil qilinadi.
Organizer
Organizer archive, crash, distribution va performance ma’lumotlarini boshqaradi. Release uchun qaysi build va signing identity ishlatilgani shu yerda ko‘rinadi.
Bog‘liq tushunchalar
Xcode, Apple SDK, Swift, Objective-C, Project, Workspace, Target, Scheme, Simulator, LLDB, Instruments, Code signing