Provisioning Profile iOS ilovalari kodini imzolash uchun dasturchi sertifikatlarini, ilova identifikatorini va ruxsat etilgan qurilmalar ro'yxatini bog'laydi. Apple Developer Documentation, 2026 ma'lumotlariga ko'ra, profil fizik qurilmada ilovani har qanday ishga tushirish uchun zarur — usiz Xcode build-ni iPhone yoki iPad-ga o'rnata olmaydi. Maqolada profillarning tuzilishi, turlari va yaratish jarayonini tahlil qilamiz.
Asosiy
Provisioning Profile — bu Apple qurilmalarga ilovalarni o'rnatish va ishga tushirishni boshqarish uchun foydalanadigan .mobileprovision (iOS uchun) yoki .provisionprofile (macOS uchun) formatidagi raqamli konfiguratsiya faylidir. Profil kod imzolash metama'lumotlarini o'z ichiga oladi, ularsiz ilovani jismoniy iPhone, iPad yoki Apple Watch da ishga tushirib bo'lmaydi — simulyator profilni talab qilmaydi, chunki kod haqiqiy protsessorda bajarilish uchun imzolanmaydi.
Profil Apple Developer Portal orqali chiqariladi va amal qilish muddatiga ega — odatda Development va Distribution profillari uchun bir yil. Apple siyosatiga ko'ra, profil avtomatik ravishda imzolangan Apple Developer Program sertifikati bilan bog'lanadi: agar sertifikat bekor qilinsa yoki muddati tugasa, profil ishlashdan to'xtaydi.
Har bir profil noyob UUID ni o'z ichiga oladi, Xcode undan profilni kalitlar bog'lamida identifikatsiya qilish uchun foydalanadi. Xcode qurish paytida avtomatik ravishda mos profilni tanlaydi, lekin dasturchi Signing & Capabilities sozlamalarida tanlovni o'zgartirishi mumkin. Bitta qurilmaga cheksiz miqdordagi profillar o'rnatilishi mumkin — Apple qurilmalarni boshqarish tizimi (MDM) bundan korporativ ilova tarqatish uchun foydalanadi.
Kod imzolash profillar mavjudligining asosiy sababidir. Apple iOS qurilmasida ishga tushiriladigan har bir ilova Apple tomonidan chiqarilgan sertifikat bilan imzolanishini talab qiladi. Provisioning Profile bog'lovchi halqa vazifasini bajaradi: dasturchining ushbu qurilmada ilovani ishga tushirish huquqini tasdiqlaydi. Apple Security Guide (2025) ma'lumotlariga ko'ra, profil mexanizmi hatto dasturchi sertifikati komprometatsiya qilingan taqdirda ham foydalanuvchilar qurilmalariga zararli dastur o'rnatilishining oldini oladi.
Profil, shuningdek, ilova uchun qaysi tizim xizmatlari mavjudligini aniqlaydi. Agar ilova Push bildirishnomalaridan foydalansa, Apple Push Notification service (APNs) profil ichida to'g'ri entitlements ni talab qiladi. Busiz server bildirishnomalari qurilmaga yetkazilmaydi. Xuddi shunday qoida iCloud, App Groups, Wallet, HealthKit va boshqa Apple freymvorklari uchun ham amal qiladi.
Dasturchilar ko'pincha Provisioning Profile ni Apple Certificate bilan chalkashtirib yuborishadi. Sertifikat shaxsni tasdiqlovchi raqamli hujjatdir (kim imzolaydi), profil esa konfiguratsiya (qaysi ilova, qaysi qurilmalarda, qanday huquqlar bilan). Bitta sertifikat bir nechta profilda ishlatilishi mumkin va bitta profil aynan bitta sertifikatga bog'langan. Apple har bir ilova va har bir stsenariy uchun alohida profil yaratishni tavsiya qiladi — Development, Ad Hoc, App Store.
Ilovani imzolash jarayoni ketma-ket bajariladigan bir necha bosqichdan iborat. Xcode ilovaning ikkilik faylini (App Bundle) oladi, uni dasturchining shaxsiy kaliti bilan imzolaydi, unga Provisioning Profile ni joylashtiradi va qurilmaga yuboradi. Qurilma imzoni Apple ning ochiq kaliti bilan tekshiradi, profil UUID sini tizimdagi ishonchli profillar ro'yxati bilan solishtiradi va ilovani faqat barcha tekshiruvlar muvaffaqiyatli bo'lganda ishga tushiradi.
Foydalanuvchi ilovani App Store dan yuklab olganda mexanizm boshqacha. App Store Connect ilovani Apple ning o'z Distribution sertifikati bilan qayta imzolaydi va dasturchi profilini Store profili bilan almashtiradi. Bu App Store orqali nashr etilgan ilova texnik jihatdan Apple tomonidan imzolangani, dasturchi tomonidan emasligini anglatadi — garchi dasturchining dastlabki imzosi build App Store Connect ga yuklash bosqichida tekshirilsa ham.
Ad Hoc tarqatish uchun profil ishga tushirishga ruxsat etilgan aniq qurilmalar UDID larini ro'yxatga oladi. Bepul Apple Developer Program hisobi sinov uchun yiliga 100 ta qurilma bilan cheklangan. Enterprise profillari (tashkilot ichida ichki tarqatish uchun) qurilmalar soni bo'yicha cheklovga ega emas, lekin yiliga $299 turadigan faol Apple Developer Enterprise Program obunasini talab qiladi.
Amal qilish muddati Provisioning Profile yaratilgan paytdan boshlab bir yil. Muddati tugashiga 30 kun qolganda Apple Xcode va Developer Portal orqali dasturchiga push bildirishnomalarini yuborishni boshlaydi. Agar profil muddati tugasa, qurilmadagi ilova ishlashda davom etadi (agar allaqachon o'rnatilgan bo'lsa), lekin bu profil bilan yangi build o'rnatib bo'lmaydi. Xcode muddati tugagan profil bilan qurishga urinishda -402620394 kodli kod imzolash xatosini beradi. Apple Xcode Accounts Preferences orqali profillarni avtomatik yangilashni sozlashni tavsiya qiladi — u holda Xcode profilni muddati tugashiga 24 soat qolganda yangilaydi.
Apple to'rtta asosiy Provisioning Profile turini taqdim etadi, ularning har biri ilova hayot aylanishining aniq bosqichi uchun mo'ljallangan. Development profili Apple Developer Portal ga qo'shilgan jismoniy qurilmalarda ilovani ishga tushirishga imkon beradi va ishlab chiqish hamda QA-sinov bosqichida ishlatiladi. Development profilini yaratish uchun bepul Apple dasturchi hisobi yetarli.
Ad Hoc profili App Store dan foydalanmasdan ilovani cheklangan testerlar doirasida tarqatish uchun mo'ljallangan. Profil UDID bo'yicha 100 tagacha qurilmani ro'yxatga oladi va ilova to'g'ridan-to'g'ri iTunes, Apple Configurator yoki MDM yechimlari orqali o'rnatilishi mumkin. Ad Hoc build-lar 12 oy amal qilish muddatiga ega va Apple review dan o'tishni talab qilmaydi.
App Store profili faqat ilovani App Store da nashr etish uchun ishlatiladi va qurilmalar ro'yxatini o'z ichiga olmaydi — Apple build tasdiqlangach tarqatishni o'zi boshqaradi. Arxivni App Store Connect ga yuklashda Xcode tizimda o'rnatilgan bo'lsa, avtomatik ravishda App Store profilidan foydalanadi. Enterprise profili Apple Developer Enterprise Program ga ega tashkilotlar uchun mo'ljallangan va qurilmalar soni cheklovsiz hamda Apple review siz kompaniya ichida ilovalarni tarqatish imkonini beradi.
| Profil turi | Maqsad | Qurilmalar | Obuna narxi |
|---|---|---|---|
| Development | Ishlab chiqish va sinov | 100 UDID gacha | Bepul / yiliga $99 |
| Ad Hoc | Testerlarga tarqatish | 100 UDID gacha | yiliga $99 |
| App Store | App Store da nashr | Har qanday (Apple orqali) | yiliga $99 |
| Enterprise | Ichki tarqatish | Cheksiz | yiliga $299 |
Provisioning Profile Apple tomonidan imzolangan DER formatidagi fayl bo'lib, uning mazmunini buyruqlar qatori orqali ko'rish mumkin. macOS dagi Security freymvorki .mobileprovision faylini o'qiladigan XML plist ga dekodlash imkonini beradi. Profil ichida: profil UUID si, App ID (jamoa prefiksi + Bundle Identifier), sertifikatlar ro'yxati, ruxsat etilgan qurilmalar ro'yxati (faqat Development va Ad Hoc uchun), entitlements va amal qilish muddati mavjud.
App ID — Team ID (Apple tomonidan tayinlanadigan 10 ta belgi) va Bundle Identifier (masalan, com.example.myapp) dan iborat ilovaning noyob identifikatori. App ID explicit (Bundle Identifier bilan aniq moslashuv) yoki wildcard (bir nechta ilovalar uchun *.example.com shabloni) bo'lishi mumkin. Apple Push bildirishnomalari yoki iCloud ishlatadigan ilovalar uchun wildcard dan foydalanishni tavsiya etmaydi — bu xizmatlar explicit App ID talab qiladi.
Entitlements — ilovaning tizim resurslariga kirish huquqlarini aniqlaydigan profil ichidagi XML blok. Odatdagi entitlements quyidagilarni o'z ichiga oladi: aps-environment (Push bildirishnomalari), com.apple.developer.icloud-services (iCloud), com.apple.security.application-groups (Widget va Share Extension uchun App Groups). Apple Xcode da yoqilgan Capabilities asosida profillarga avtomatik ravishda entitlements qo'shadi. Profildagi entitlements bilan kodda talab qilinadiganlar o'rtasidagi har qanday nomuvofiqlik imzolash xatosiga olib keladi.
Profil yaratish ikki usulda mumkin: Apple Developer Portal veb-interfeysi orqali yoki avtomatik ravishda Xcode orqali. Odatdagi loyiha uchun Automatically manage signing opsiyasi yoqilgan bo'lsa, Xcode profillarni avtomatik boshqaradi. Xcode bir necha soniya ichida sertifikat, profil va App ID yaratadi, Apple Developer Portal bilan sinxronlashadi. Biroq CI/CD-payplinalari uchun qo'lda boshqarish talab qilinadi.
Apple Developer Portal da profilni qo'lda yaratish uchun kerak: Certificates, Identifiers & Profiles bo'limiga o'tish, Profiles tanlash va "+" ni bosish. So'ng profil turini tanlash (Development, Ad Hoc, App Store yoki Enterprise), ro'yxatdan o'tganlar ro'yxatidan App ID tanlash, dasturchi sertifikatini tanlash va (Development hamda Ad Hoc uchun) qurilmalarni tanlash. Profil yaratilgach, u .mobileprovision formatida yuklab olinadi va Xcode da ikki marta bosish bilan o'rnatiladi.
CI/CD serverlari alohida yondashuvni talab qiladi: profil va sertifikat himoyalangan repozitoriyada saqlanishi kerak (masalan, GitHub Actions sirlarida). Qurish paytida profil agentga yuklanadi, ~/Library/MobileDevice/Provisioning Profiles papkasiga joylashtiriladi, sertifikat esa kalitlar bog'lamiga import qilinadi. Fastlane — imzolashni avtomatlashtirish uchun mashhur vosita — dasturchilar o'rtasida profillar va sertifikatlarni shifrlangan git-repozitoriya orqali sinxronlaydigan match buyrug'ini taqdim etadi.
Kod imzolash muammolarini diagnostika qilish uchun .mobileprovision faylini dekodlash va uning mazmunini tekshirish mumkin. Quyidagi buyruq profildan XML plist faylini chiqaradi va o'qiladigan formatda saqlaydi:
# mobileprovision faylini XML ga dekodlash
security cms -D -i "path/to/embedded.mobileprovision" \
-o "profile.plist"
# Profilning amal qilish muddatini tekshirish
plist -convert xml1 profile.plist -o -
grep -A 1 "ExpirationDate" profile.plist
Security macOS Command Line Tools tarkibidagi utilit profillning CMS imzolangan faylini dekodlaydi. -D bayrog'i dekodlashni, -i esa kiritish faylini bildiradi. Dekodlashdan so'ng plist utiliti ikkilik plist ni XML ga aylantiradi, grep esa amal qilish muddati tugash sanasini chiqaradi. Bu usul CI/CD da reliz build qurilishidan oldin profilning muddati o'tmaganligini tekshirish uchun foydali.
Eng keng tarqalgan xato Xcode da qurish paytida "No matching provisioning profiles found" xatosi. Bu Xcode qurish konfiguratsiyasiga mos profilni topa olmaganda yuzaga keladi: Bundle Identifier profildagi App ID bilan mos kelmaydi, sertifikat kalitlar bog'lamida o'rnatilmagan yoki profil muddati tugagan. Yechim — target dagi Signing & Capabilities sozlamalarini tekshirish va kerak bo'lsa Automatically manage signing ga o'tish.
"Provisioning profile doesn't include the selected device" xatosi Development yoki Ad Hoc build ni UDID si profilga qo'shilmagan qurilmada ishga tushirishga urinilganda paydo bo'ladi. Apple Developer Portal mavjud profilga qurilma qo'shish imkonini beradi — shundan so'ng profilni qayta yuklab olish va o'rnatish kerak. Xcode imzolashni avtomatik boshqarishda ulangan qurilmani profilga avtomatik qo'shadi.
entitlements muammosi App Store Connect ga yuklashda "The executable was signed with invalid entitlements" xatosi bilan namoyon bo'ladi. Sabab — profildagi entitlements ning loyihaning .entitlements fayli bilan nomuvofiqligi. Apple profilidagi huquqlar to'plami ilova talab qiladigan huquqlarning superto'plami bo'lishini talab qiladi. Yechim — Xcode target ida Capabilities ni tekshirish va barcha yoqilgan xizmatlar profilda tegishli entitlements larga ega ekanligiga ishonch hosil qilish. Fastlane App ID va profillarni joriy entitlements lar bilan sinxronlaydigan produce buyrug'ini o'z ichiga oladi.
Ko'p so'raladigan savollar
Ha, agar profildagi App ID com.example.* ko'rinishidagi wildcard-identifikatordan foydalansa. Biroq wildcard-profillar Push bildirishnomalari, iCloud, Game Center va App Groups ni qo'llab-quvvatlamaydi. Apple kengaytirilgan Capabilities ishlatadigan har bir ilova uchun alohida explicit profil yaratishni tavsiya qiladi.
App Store orqali yuklangan ilova dasturchi profiliga bog'liq bo'lmagan Apple Store profilidan foydalanadi. Foydalanuvchilar ilovani yuklab olish va ishga tushirishni davom ettiradilar. Muddati tugagan profil faqat App Store Connect ga yangi build yuklashga to'sqinlik qiladi — Apple Distribution profili yuborish paytida amal qilishini talab qiladi.
Profilni yangi kompyuterda ~/Library/MobileDevice/Provisioning Profiles papkasiga nusxalash mumkin. Biroq profil kalitlar bog'lamida joylashgan shaxsiy kaliti bo'lgan sertifikatga bog'langan. Shuningdek, Keychain Access orqali sertifikatni shaxsiy kaliti bilan eksport qilish va yangi qurilmada import qilish kerak.
Kompyuterda profillar soni bo'yicha cheklov yo'q. Profillar ~/Library/MobileDevice/Provisioning Profiles papkasida saqlanadi va UUID bo'yicha raqamlanadi. Xcode App ID va qurish turiga qarab avtomatik ravishda mos profilni tanlaydi. Boshqaruvni soddalashtirish uchun Xcode Accounts Preferences orqali foydalanilmayotgan profillarni o'chirish tavsiya etiladi.
Signing Certificate dasturchi shaxsini tasdiqlaydi — bu Apple tomonidan chiqarilgan kriptografik kalit. Provisioning Profile esa qaysi ilova (App ID) qaysi sertifikat bilan va qaysi qurilmalarda ishga tushirilishi mumkinligini ko'rsatadigan konfiguratsiya faylidir. Profil har doim aniq sertifikatga havola qiladi, lekin uni almashtirmaydi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.