প্রোভিশনিং প্রোফাইল iOS অ্যাপ্লিকেশনের কোড সাইনিংয়ের জন্য ডেভেলপার সার্টিফিকেট, অ্যাপ আইডেন্টিফায়ার এবং অনুমোদিত ডিভাইসের তালিকা সংযুক্ত করে। Apple Developer Documentation, 2026 অনুসারে, ফিজিক্যাল ডিভাইসে যেকোনো অ্যাপ চালানোর জন্য প্রোফাইল প্রয়োজন — এটি ছাড়া Xcode iPhone বা iPad-এ বিল্ড ইনস্টল করতে পারে না। এই নিবন্ধে আমরা প্রোফাইলের গঠন, প্রকারভেদ এবং তৈরি করার প্রক্রিয়া নিয়ে আলোচনা করব।
মূল বিষয়
প্রোভিশনিং প্রোফাইল হল .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-এর জারি করা সার্টিফিকেট দিয়ে স্বাক্ষরিত হতে হবে। প্রোভিশনিং প্রোফাইল একটি সংযোগকারী হিসাবে কাজ করে: এটি নিশ্চিত করে যে ডেভেলপারের সেই ডিভাইসে অ্যাপ চালানোর অধিকার রয়েছে। Apple Security Guide (2025) অনুসারে, প্রোফাইল মেকানিজম ডেভেলপার সার্টিফিকেট আপস করা হলেও ব্যবহারকারীদের ডিভাইসে ম্যালওয়্যার ইনস্টলেশন প্রতিরোধ করে।
প্রোফাইল আরও নির্ধারণ করে যে অ্যাপের জন্য কোন সিস্টেম পরিষেবাগুলি উপলব্ধ। যদি অ্যাপ Push বিজ্ঞপ্তি ব্যবহার করে, Apple Push Notification service (APNs)-এর প্রোফাইলের ভিতরে সঠিক entitlements প্রয়োজন। এটি ছাড়া, সার্ভার বিজ্ঞপ্তিগুলি ডিভাইসে পৌঁছাবে না। একই নিয়ম iCloud, App Groups, Wallet, HealthKit এবং অন্যান্য Apple ফ্রেমওয়ার্কের জন্য প্রযোজ্য।
ডেভেলপাররা প্রায়ই প্রোভিশনিং প্রোফাইল এবং Apple সার্টিফিকেটকে গুলিয়ে ফেলেন। সার্টিফিকেট হল একটি ডিজিটাল ডকুমেন্ট যা পরিচয় নিশ্চিত করে (কে স্বাক্ষর করে), যখন প্রোফাইল হল একটি কনফিগারেশন (কোন অ্যাপ, কোন ডিভাইসে, কোন অনুমতি নিয়ে)। একটি সার্টিফিকেট একাধিক প্রোফাইলে ব্যবহার করা যেতে পারে, এবং একটি প্রোফাইল ঠিক একটি সার্টিফিকেটের সাথে আবদ্ধ। Apple প্রতিটি অ্যাপ এবং প্রতিটি পরিস্থিতির জন্য আলাদা প্রোফাইল তৈরি করার পরামর্শ দেয় — Development, Ad Hoc, App Store।
অ্যাপ স্বাক্ষর প্রক্রিয়ায় বেশ কয়েকটি ক্রমিক ধাপ রয়েছে। Xcode অ্যাপ বাইনারি (App Bundle) নেয়, এটি ডেভেলপারের প্রাইভেট কী দিয়ে স্বাক্ষর করে, এতে প্রোভিশনিং প্রোফাইল এম্বেড করে এবং ডিভাইসে পাঠায়। ডিভাইস Apple-এর পাবলিক কী দিয়ে স্বাক্ষর যাচাই করে, সিস্টেমের বিশ্বস্ত প্রোফাইলের তালিকার সাথে প্রোফাইল UUID মিলিয়ে দেখে এবং সমস্ত পরীক্ষা সফল হলেই অ্যাপ চালু করে।
যখন একজন ব্যবহারকারী App Store থেকে অ্যাপ ডাউনলোড করেন, প্রক্রিয়াটি ভিন্ন। App Store Connect Apple-এর নিজস্ব Distribution সার্টিফিকেট দিয়ে অ্যাপটি পুনরায় স্বাক্ষর করে, ডেভেলপারের প্রোফাইলকে Store প্রোফাইল দিয়ে প্রতিস্থাপন করে। এর মানে হল App Store-এর মাধ্যমে প্রকাশিত অ্যাপ টেকনিক্যালি Apple-এর দ্বারা স্বাক্ষরিত, ডেভেলপার দ্বারা নয় — যদিও App Store Connect-এ বিল্ড আপলোড করার সময় মূল ডেভেলপার স্বাক্ষর যাচাই করা হয়।
Ad Hoc বিতরণের জন্য, প্রোফাইল নির্দিষ্ট ডিভাইস UDIDs নিবন্ধন করে যেখানে অ্যাপ চালানোর অনুমতি রয়েছে। একটি বিনামূল্যের Apple Developer Program অ্যাকাউন্ট পরীক্ষাকে বছরে ১০০টি ডিভাইসে সীমাবদ্ধ করে। এন্টারপ্রাইজ প্রোফাইল (সংস্থার অভ্যন্তরীণ বিতরণের জন্য) এর কোনো ডিভাইস সীমা নেই তবে সক্রিয় Apple Developer Enterprise Program সাবস্ক্রিপশন প্রয়োজন যার খরচ $২৯৯ প্রতি বছর।
প্রোভিশনিং প্রোফাইলের বৈধতা সময়কাল তৈরি হওয়ার থেকে এক বছর। মেয়াদ শেষ হওয়ার ৩০ দিন আগে, Apple Xcode এবং Developer Portal-এর মাধ্যমে ডেভেলপারকে push বিজ্ঞপ্তি পাঠানো শুরু করে। যদি প্রোফাইলের মেয়াদ শেষ হয়, ইতিমধ্যে ইনস্টল করা অ্যাপ কাজ করতে থাকে, কিন্তু সেই প্রোফাইলের সাথে নতুন বিল্ড ইনস্টল করা যায় না। Xcode মেয়াদোত্তীর্ণ প্রোফাইলের সাথে বিল্ড করার চেষ্টায় কোড -402620394 সহ কোড সাইনিং ত্রুটি দেখায়। Apple Xcode Accounts Preferences-এর মাধ্যমে স্বয়ংক্রিয় প্রোফাইল নবায়ন সেট আপ করার পরামর্শ দেয় — তাহলে Xcode মেয়াদ শেষ হওয়ার ২৪ ঘন্টা আগে প্রোফাইল নবায়ন করে।
Apple চারটি প্রধান ধরনের প্রোভিশনিং প্রোফাইল প্রদান করে, প্রতিটি অ্যাপ জীবনচক্রের নির্দিষ্ট ধাপের জন্য ডিজাইন করা। Development প্রোফাইল Apple Developer Portal-এ যোগ করা ফিজিক্যাল ডিভাইসে অ্যাপ চালানোর অনুমতি দেয় এবং ডেভেলপমেন্ট ও QA পরীক্ষার সময় ব্যবহৃত হয়। Development প্রোফাইল তৈরি করতে একটি বিনামূল্যের Apple ডেভেলপার অ্যাকাউন্ট যথেষ্ট।
Ad Hoc প্রোফাইল App Store ব্যবহার না করেই সীমিত সংখ্যক পরীক্ষকের কাছে অ্যাপ বিতরণের জন্য ডিজাইন করা। প্রোফাইল UDID দ্বারা ১০০টি পর্যন্ত ডিভাইস নিবন্ধন করে, এবং অ্যাপ সরাসরি iTunes, Apple Configurator বা MDM সমাধানের মাধ্যমে ইনস্টল করা যেতে পারে। Ad Hoc বিল্ডের বৈধতা সময়কাল ১২ মাস এবং Apple পর্যালোচনার প্রয়োজন হয় না।
App Store প্রোফাইল exclusively App Store-এ অ্যাপ প্রকাশের জন্য ব্যবহৃত হয় এবং এতে ডিভাইসের তালিকা থাকে না — বিল্ড অনুমোদনের পরে Apple নিজেই বিতরণ পরিচালনা করে। App Store Connect-এ আর্কাইভ আপলোড করার সময়, Xcode স্বয়ংক্রিয়ভাবে App Store প্রোফাইল ব্যবহার করে যদি তা সিস্টেমে ইনস্টল থাকে। Enterprise প্রোফাইল Apple Developer Enterprise Program-এর সাথে সংস্থাগুলির জন্য এবং ডিভাইস সীমা বা Apple পর্যালোচনা ছাড়াই অভ্যন্তরীণ অ্যাপ বিতরণের অনুমতি দেয়।
| প্রোফাইলের ধরন | উদ্দেশ্য | ডিভাইস | সাবস্ক্রিপশন খরচ |
|---|---|---|---|
| Development | ডেভেলপমেন্ট এবং পরীক্ষা | ১০০ UDID পর্যন্ত | বিনামূল্যে / $৯৯ প্রতি বছর |
| Ad Hoc | পরীক্ষকদের বিতরণ | ১০০ UDID পর্যন্ত | $৯৯ প্রতি বছর |
| App Store | App Store প্রকাশনা | যেকোনো (Apple-এর মাধ্যমে) | $৯৯ প্রতি বছর |
| Enterprise | অভ্যন্তরীণ বিতরণ | সীমাহীন | $২৯৯ প্রতি বছর |
প্রোভিশনিং প্রোফাইল হল DER ফরম্যাটে Apple-এর স্বাক্ষরিত একটি ফাইল, যার বিষয়বস্তু কমান্ড লাইনের মাধ্যমে দেখা যায়। macOS-এর Security framework .mobileprovision-কে পঠনযোগ্য XML plist-এ ডিকোড করার অনুমতি দেয়। প্রোফাইলের ভিতরে থাকে: প্রোফাইল UUID, App ID (টিম উপসর্গ + Bundle Identifier), সার্টিফিকেট তালিকা, অনুমোদিত ডিভাইসের তালিকা (শুধুমাত্র Development এবং Ad Hoc-এর জন্য), entitlements এবং মেয়াদ শেষ হওয়ার তারিখ।
App ID হল একটি অনন্য অ্যাপ শনাক্তকারী যা Team ID (Apple-এর দেওয়া ১০টি অক্ষর) এবং Bundle Identifier (যেমন com.example.myapp) নিয়ে গঠিত। App ID স্পষ্ট (Bundle Identifier-এর সাথে সঠিক মিল) বা wildcard (একাধিক অ্যাপের জন্য প্যাটার্ন *.example.com) হতে পারে। Apple Push বিজ্ঞপ্তি বা iCloud ব্যবহার করে এমন অ্যাপের জন্য wildcard ব্যবহারের পরামর্শ দেয় না — এই পরিষেবাগুলির জন্য স্পষ্ট App ID প্রয়োজন।
Entitlements প্রোফাইলের ভিতরে একটি XML ব্লক যা সিস্টেম রিসোর্সে অ্যাপের অ্যাক্সেস অধিকার নির্ধারণ করে। সাধারণ entitlements এর মধ্যে রয়েছে: aps-environment (Push বিজ্ঞপ্তি), com.apple.developer.icloud-services (iCloud), com.apple.security.application-groups (Widget এবং Share Extension-এর জন্য App Groups)। Apple Xcode-এ সক্ষম Capabilities-এর ভিত্তিতে প্রোফাইলে স্বয়ংক্রিয়ভাবে entitlements যোগ করে। প্রোফাইলে entitlements এবং কোডে অনুরোধ করা entitlements-এর মধ্যে যেকোনো অমিল স্বাক্ষর ত্রুটির কারণ হয়।
প্রোফাইল তৈরি দুটি উপায়ে সম্ভব: Apple Developer Portal ওয়েব ইন্টারফেসের মাধ্যমে বা স্বয়ংক্রিয়ভাবে Xcode-এর মাধ্যমে। একটি সাধারণ প্রকল্পের জন্য, Automatically manage signing অপশন সক্রিয় থাকলে Xcode স্বয়ংক্রিয়ভাবে প্রোফাইল পরিচালনা করে। Xcode Apple Developer Portal-এর সাথে সিঙ্ক করে সেকেন্ডের মধ্যে সার্টিফিকেট, প্রোফাইল এবং App ID তৈরি করে। তবে CI/CD পাইপলাইনের জন্য ম্যানুয়াল পরিচালনা প্রয়োজন।
Apple Developer Portal-এ ম্যানুয়ালি প্রোফাইল তৈরি করতে: Certificates, Identifiers & Profiles-এ যান, Profiles নির্বাচন করুন এবং "+" চাপুন। তারপর প্রোফাইলের ধরন (Development, Ad Hoc, App Store বা Enterprise) নির্বাচন করুন, নিবন্ধিত তালিকা থেকে App ID নির্বাচন করুন, ডেভেলপার সার্টিফিকেট নির্বাচন করুন এবং (Development ও Ad Hoc-এর জন্য) ডিভাইস নির্বাচন করুন। তৈরি হওয়ার পর, প্রোফাইল .mobileprovision ফরম্যাটে ডাউনলোড হয় এবং Xcode-এ ডাবল-ক্লিক করে ইনস্টল করা হয়।
CI/CD সার্ভারগুলির একটি বিশেষ পদ্ধতির প্রয়োজন: প্রোফাইল এবং সার্টিফিকেট একটি সুরক্ষিত রিপোজিটরিতে (যেমন GitHub Actions secrets) সংরক্ষণ করতে হবে। বিল্ডিংয়ের সময়, প্রোফাইল এজেন্টে লোড করা হয়, ~/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-তে উপযোগী।
সবচেয়ে সাধারণ ত্রুটি হল Xcode-এ বিল্ড করার সময় "No matching provisioning profiles found"। এটি ঘটে যখন Xcode বিল্ড কনফিগারেশনের সাথে মিলে যাওয়া প্রোফাইল খুঁজে পায় না: Bundle Identifier প্রোফাইলের App ID-এর সাথে মেলে না, সার্টিফিকেট কীচেইনে ইনস্টল নেই, বা প্রোফাইলের মেয়াদ শেষ। সমাধান — টার্গেটে Signing & Capabilities সেটিংস পরীক্ষা করুন এবং প্রয়োজন হলে Automatically manage signing-এ স্যুইচ করুন।
ত্রুটি "Provisioning profile doesn't include the selected device" এমন একটি ডিভাইসে Development বা Ad Hoc বিল্ড চালানোর চেষ্টায় দেখা যায় যার UDID প্রোফাইলে যোগ করা হয়নি। Apple Developer Portal বিদ্যমান প্রোফাইলে ডিভাইস যোগ করার অনুমতি দেয় — তারপর প্রোফাইল পুনরায় ডাউনলোড এবং ইনস্টল করতে হবে। Xcode স্বয়ংক্রিয় স্বাক্ষর পরিচালনার সাথে সংযুক্ত ডিভাইস স্বয়ংক্রিয়ভাবে প্রোফাইলে যোগ করে।
Entitlements-এর সমস্যা App Store Connect-এ আপলোড করার সময় "The executable was signed with invalid entitlements" ত্রুটি হিসাবে প্রকাশ পায়। কারণ — প্রোফাইলে entitlements এবং প্রকল্পের .entitlements ফাইলের মধ্যে অমিল। Apple প্রয়োজন করে যে প্রোফাইলের অধিকার সেট অ্যাপের অনুরোধ করা অধিকারগুলির সুপারসেট হতে হবে। সমাধান — Xcode টার্গেটে Capabilities পরীক্ষা করুন এবং নিশ্চিত করুন যে সমস্ত সক্রিয় পরিষেবার জন্য প্রোফাইলে সংশ্লিষ্ট entitlements রয়েছে। Fastlane-এ produce কমান্ড অন্তর্ভুক্ত রয়েছে, যা বর্তমান entitlements-এর সাথে App ID এবং প্রোফাইল সিঙ্ক্রোনাইজ করে।
সচরাচর জিজ্ঞাসিত প্রশ্ন
হ্যাঁ, যদি প্রোফাইলে App ID com.example.* ধরণের wildcard শনাক্তকারী ব্যবহার করে। তবে wildcard প্রোফাইল Push বিজ্ঞপ্তি, iCloud, Game Center এবং App Groups সমর্থন করে না। Apple উন্নত 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-এর মাধ্যমে অব্যবহৃত প্রোফাইলগুলি সরানোর পরামর্শ দেওয়া হয়।
সাইনিং সার্টিফিকেট ডেভেলপারের পরিচয় নিশ্চিত করে — এটি Apple-এর জারি করা একটি ক্রিপ্টোগ্রাফিক কী। প্রোভিশনিং প্রোফাইল হল একটি কনফিগারেশন ফাইল যা নির্দিষ্ট করে কোন অ্যাপ (App ID) কোন সার্টিফিকেটের অধীনে এবং কোন ডিভাইসে চালু করা যেতে পারে। প্রোফাইল সর্বদা একটি নির্দিষ্ট সার্টিফিকেট উল্লেখ করে কিন্তু এটি প্রতিস্থাপন করে না।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন