Bosh sahifa Wiki Xcode

Xcode

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:

  • build;
  • run;
  • test;
  • profile;
  • analyze;
  • archive

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.

Compiler:

  • type checking;
  • optimization;
  • module generation;
  • diagnostic;
  • debug info

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:

  • breakpoint;
  • watch;
  • stack;
  • memory;
  • thread;
  • expression;
  • symbolic breakpoint.

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:

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