Provisioning Profile повезује сертификате програмера, идентификатор апликације и листу дозвољених уређаја за потписивање кода iOS апликација. Према подацима Apple Developer Documentation, 2026, профил је неопходан за свако покретање апликације на физичком уређају — без њега Xcode неће моћи да инсталира билд на iPhone или iPad. У чланку ћемо анализирати структуру, врсте и процес креирања профила.
Кључно
Provisioning Profile је дигитални конфигурациони фајл формата .mobileprovision (за iOS) или .provisionprofile (за macOS) који Apple користи за контролу инсталације и покретања апликација на уређајима. Профил садржи метаподатке потписивања кода без којих апликација не може да се покрене на физичком iPhone, iPad или Apple Watch — симулатор не захтева профил, јер се код не потписује за извршавање на правом процесору.
Профил се издаје преко Apple Developer Portal-а и има рок трајања — обично годину дана за Development и Distribution профиле. Према Apple политици, профил се аутоматски повезује са сертификатом Apple Developer Program под којим је потписан: ако сертификат буде опозван или истекне, профил престаје да ради.
Сваки профил садржи јединствени UUID који Xcode користи за идентификацију профила у ланцу кључева. Xcode аутоматски бира одговарајући профил при компајлирању, али програмер може да промени избор у подешавањима Signing & Capabilities. На једном уређају може да се инсталира неограничен број профила — Apple систем за управљање уређајима (MDM) користи ово за корпоративну дистрибуцију апликација.
Потписивање кода је главни разлог постојања профила. Apple захтева да свака апликација покренута на уређају са iOS буде потписана сертификатом издатим од стране Apple-а. Provisioning Profile је спона: потврђује да програмер има право да покреће апликацију на датом уређају. Према Apple Security Guide (2025), механизам профила спречава инсталацију злонамерног софтвера на уређаје корисника чак и у случају компромитације програмеровог сертификата.
Профил такође одређује које системске услуге су доступне апликацији. Ако апликација користи Push обавештења, Apple Push Notification service (APNs) захтева исправне entitlements унутар профила. Без тога, серверска обавештења неће бити достављена на уређај. Слично правило важи за iCloud, App Groups, Wallet, HealthKit и друге Apple фрејмворке.
Програмери често мешају Provisioning Profile и Apple Certificate. Сертификат је дигитални документ који потврђује идентитет (ко потписује), а профил је конфигурација (која апликација, на којим уређајима, са којим правима). Један сертификат може да се користи у више профила, а један профил је везан тачно за један сертификат. Apple препоручује креирање посебног профила за сваку апликацију и сваки сценарио — Development, Ad Hoc, App Store.
Процес потписивања апликације састоји се од неколико корака који се извршавају узастопно. Xcode узима бинарни фајл апликације (App Bundle), потписује га приватним кључем програмера, уграђује у њега Provisioning Profile и шаље на уређај. Уређај проверава потпис јавним кључем Apple-а, упоређује UUID профила са листом поузданих профила у систему и покреће апликацију само ако су све провере успешне.
Када корисник преузима апликацију из App Store-а, механизам је другачији. App Store Connect поново потписује апликацију сопственим Apple Distribution сертификатом, замењујући програмеров профил Store профилом. То значи да је апликација објављена преко App Store-а технички потписана од стране Apple-а, а не програмера — иако се оригинални програмеров потпис проверава у фази отпремања билда у App Store Connect.
За Ad Hoc дистрибуцију профил региструје конкретне UDID уређаја на којима је дозвољено покретање. Бесплатни налог Apple Developer Program ограничава 100 уређаја годишње за тестирање. Enterprise профили (за интерну дистрибуцију у организацији) немају ограничење броја уређаја, али захтевају активну претплату Apple Developer Enterprise Program по цени од $299 годишње.
Рок трајања Provisioning Profile-а је годину дана од момента креирања. 30 дана пре истека Apple почиње да шаље push обавештења програмеру преко Xcode-а и Developer Portal-а. Ако профил истекне, апликација на уређају наставља да ради (ако је већ инсталирана), али нови билд са тим профилом неће моћи да се инсталира. Xcode при покушају компајлирања са истеклим профилом издаје грешку потписивања кода са кодом -402620394. Apple препоручује подешавање аутоматског обнављања профила преко Xcode Accounts Preferences — тада Xcode ажурира профил 24 сата пре истека.
Apple нуди четири главне врсте Provisioning Profile-а, од којих је свака намењена одређеној фази животног циклуса апликације. Development профил омогућава покретање апликације на физичким уређајима додатим у Apple Developer Portal и користи се у фази развоја и QA тестирања. За креирање Development профила довољан је бесплатни Apple програмерски налог.
Ad Hoc профил је намењен дистрибуцији апликације ограниченом кругу тестера без коришћења App Store-а. Профил региструје до 100 уређаја по UDID-у, а апликација може да се инсталира директно преко iTunes, Apple Configurator или MDM решења. Ad Hoc билдови имају рок трајања од 12 месеци и не захтевају продазак кроз Apple ревизију.
App Store профил се користи искључиво за објављивање апликације у App Store-у и не садржи листу уређаја — Apple сам управља дистрибуцијом након одобравања билда. При отпремању архиве у App Store Connect, Xcode аутоматски користи App Store профил ако је инсталиран у систему. Enterprise профил је намењен организацијама са Apple Developer Enterprise Program и омогућава дистрибуцију апликација унутар компаније без ограничења броја уређаја и без Apple ревизије.
| Врста профила | Сврха | Уређаји | Цена претплате |
|---|---|---|---|
| Development | Развој и тестирање | До 100 UDID | Бесплатно / $99 годишње |
| Ad Hoc | Дистрибуција тестерима | До 100 UDID | $99 годишње |
| App Store | Објављивање у App Store-у | Било колико (преко Apple-а) | $99 годишње |
| Enterprise | Интерна дистрибуција | Неограничено | $299 годишње |
Provisioning Profile је фајл у DER формату потписан од стране Apple-а чији садржај може да се прегледа преко командне линије. Security framework у macOS-у омогућава декодирање .mobileprovision у читљив XML plist. Унутар профила налазе се: UUID профила, App ID (префикс тима + Bundle Identifier), листа сертификата, листа дозвољених уређаја (само за Development и Ad Hoc), entitlements и рок трајања.
App ID — јединствени идентификатор апликације који се састоји од Team ID-а (10 карактера, додељује га Apple) и Bundle Identifier-а (на пример, com.example.myapp). App ID може бити explicit (тачно поклапање са Bundle Identifier-ом) или wildcard (шаблон *.example.com за више апликација). Apple не препоручује коришћење wildcard-а за апликације које користе Push обавештења или iCloud — ове услуге захтевају explicit App ID.
Entitlements — XML блок унутар профила који одређује права приступа апликације системским ресурсима. Типични entitlements укључују: aps-environment (Push обавештења), com.apple.developer.icloud-services (iCloud), com.apple.security.application-groups (App Groups за Widget и Share Extension). Apple аутоматски додаје entitlements у профил на основу омогућених Capabilities у Xcode-у. Свако неслагање између entitlements-а у профилу и оних захтеваних у коду доводи до грешке потписивања.
Креирање профила могуће је на два начина: преко веб интерфејса Apple Developer Portal-а или аутоматски преко Xcode-а. За типичан пројекат Xcode управља профилима аутоматски када је омогућена опција Automatically manage signing. Xcode креира сертификат, профил и App ID за неколико секунди, синхронизујући се са Apple Developer Portal-ом. Међутим, за CI/CD пајплајнове потребно је ручно управљање.
За ручно креирање профила у Apple Developer Portal-у потребно је: отићи у одељак Certificates, Identifiers & Profiles, изабрати Profiles и кликнути на „+". Затим изабрати врсту профила (Development, Ad Hoc, App Store или Enterprise), изабрати App ID из листе регистрованих, изабрати програмерски сертификат и (за Development и Ad Hoc) изабрати уређаје. Након креирања, профил се преузима у формату .mobileprovision и инсталира двоструким кликом у Xcode-у.
CI/CD сервери захтевају посебан приступ: профил и сертификат треба чувати у заштићеном репозиторијуму (на пример, у secrets за GitHub Actions). При компајлирању профил се учитава на агента, поставља у фолдер ~/Library/MobileDevice/Provisioning Profiles, а сертификат се увози у ланац кључева. Fastlane — популарни алат за аутоматизацију потписивања — нуди команду match, која синхронизује профиле и сертификате између програмера преко шифрованог git репозиторијума.
За дијагностику проблема са потписивањем кода можете да декодирате .mobileprovision и проверите његов садржај. Доња команда извлачи XML plist из профила и чува га у читљивом формату:
# Декодирање .mobileprovision у XML
security cms -D -i "path/to/embedded.mobileprovision" \
-o "profile.plist"
# Провера рока трајања профила
plist -convert xml1 profile.plist -o -
grep -A 1 "ExpirationDate" profile.plist
Услужни програм Security из састава macOS Command Line Tools декодира CMS потписани фајл профила. Заставица -D означава декодирање, -i — улазни фајл. Након декодирања, услужни програм plist конвертује бинарни plist у XML, а grep извлачи датум истека. Овај метод је користан у CI/CD за проверу да профил није истекао пре компајлирања релиз билда.
Најчешћа грешка је „No matching provisioning profiles found" при компајлирању у Xcode-у. Јавља се када Xcode не може да пронађе профил који одговара конфигурацији компајлирања: Bundle Identifier се не поклапа са App ID-ем у профилу, сертификат није инсталиран у ланцу кључева или је профил истекао. Решење — проверити подешавања Signing & Capabilities у target-у и по потреби прећи на Automatically manage signing.
Грешка „Provisioning profile doesn't include the selected device" појављује се при покушају покретања Development или Ad Hoc билда на уређају чији UDID није додат у профил. Apple Developer Portal омогућава додавање уређаја у постојећи профил — након тога профил треба поново преузети и инсталирати. Xcode при аутоматском управљању потписивањем додаје повезани уређај у профил аутоматски.
Проблем са entitlements манифестује се грешком „The executable was signed with invalid entitlements" при отпремању у App Store Connect. Узрок — неслагање entitlements-а у профилу и фајла .entitlements пројекта. Apple захтева да скуп права у профилу буде надскуп права које захтева апликација. Решење — проверити Capabilities у target-у Xcode-а и уверити се да све омогућене услуге имају одговарајуће entitlements у профилу. Fastlane укључује команду produce, која синхронизује App ID и профиле са актуелним entitlements-има.
Често постављана питања
Да, ако App ID у профилу користи wildcard идентификатор облика com.example.*. Међутим, wildcard профили не подржавају Push обавештења, iCloud, Game Center и App Groups. Apple препоручује креирање посебног explicit профила за сваку апликацију која користи напредне Capabilities.
Апликација преузета преко App Store-а користи Apple Store профил, који не зависи од програмеровог профила. Корисници ће наставити да преузимају и покрећу апликацију. Истекао профил спречава само отпремање новог билда у App Store Connect — Apple захтева да Distribution профил буде важећи у тренутку слања.
Профил се може копирати у фолдер ~/Library/MobileDevice/Provisioning Profiles на новом рачунару. Међутим, профил је везан за сертификат чији се приватни кључ налази у ланцу кључева. Такође је потребно извести сертификат са приватним кључем преко Keychain Access-а и увести га на нови уређај.
Нема ограничења броја профила на рачунару. Профили се чувају у фолдеру ~/Library/MobileDevice/Provisioning Profiles и нумеришу се по UUID-у. Xcode аутоматски бира одговарајући профил према App ID-у и врсти компајлирања. Ради једноставнијег управљања препоручује се уклањање некоришћених профила преко Xcode Accounts Preferences.
Signing Certificate потврђује идентитет програмера — то је криптографски кључ издат од стране Apple-а. Provisioning Profile је конфигурациони фајл који одређује која апликација (App ID), под којим сертификатом и на којим уређајима може да се покрене. Профил увек упућује на одређени сертификат, али га не замењује.
Закључак
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође