একটি macOS অ্যাপের ভিতরে কী আছে, এবং সেগুলো কী করে? macOS অ্যাপগুলো একঘারে ফাইল যেন মনে হয়, কিন্তু আসলে সেগুলো ফ্যান্সি আইকন সম্বলিত ফোল্ডার যাকে বান্ডল বলে। সেই বান্ডলগুলো খুললে, আপনি অ্যাপ্লিকেশনের প্রয়োজনীয় ফাইল এর একটি অ্যারে পাবেন। এগুলো কী করে? এই বান্ডলগুলো বোঝা ডেভেলপার, অ্যাডমিনিস্ট্রেটর, গেম মডার, Hackintosh বিল্ডার, সিকিউরিটি-কনসার্নড ইউজার, এবং অ্যাপ ট্রাবলশুটিং করার যেকোনো কারো জন্য উপকারী।
macOS অ্যাপ বান্ডল কী?
অ্যাপল দ্বারা ডিফাইন করা মতে, একটি বান্ডল হলো "একটি ডিরেক্টরি যা একটি স্ট্যান্ডার্ডাইজড হায়েরার্কিক্যাল স্ট্রাকচার রেখে এক্সিকিউটেবল কোড এবং সেটি দিয়ে ব্যবহৃত রিসোর্সগুলো ধারণ করে।" অন্য নামে, সেটি একটি অ্যাপ্লিকেশন। একটি স্পেসিফিক স্ট্রাকচার এবং ফরম্যাট আছে যা ডেভেলপাররা মেনে চলে যাতে তাদের অ্যাপ ঠিকমতো চলে। সেই কনভেনশন ভাঙলে, আপনার অ্যাপ ভাঙতে পারে। যদি কিছু ঠিকমতো কাজ না করে, একটি অ্যাপ্লিকেশন বান্ডল একটি উপকারী ট্রাবলশুটিং লোকেশন হতে পারে।
অ্যাপগুলো বান্ডলের একমাত্র কínd নয়। .framework, .bundle, .plugin, এবং .kext এক্সটেনশনवाले ফাইলগুলোর জন্যও বান্ডল ব্যবহার হয়। Finder-এ বান্ডলগুলো ইউনিটারি অবজেক্ট হিসেবে ডিসপ্লে হয় যতক্ষণ না আপনি বান্ডলের প্যাকেজ খুলে সেটির ভিতরে ঢুকেন।
অ্যাপ্লিকেশন বান্ডল খোলা
ডিরেক্টরির মত নয়, অ্যাপ্লিকেশন বান্ডল খোলা একটু ড্যান্স লাগে।
১. "/Applications/"-এ অ্যাপ্লিকেশনের আইকোনে রাইট-ক্লিক করুন।
২. কনটেক্সট মেনুতে "Show Package Contents" ক্লিক করুন।
৩. "Contents" ফোল্ডারে ডাবল-ক্লিক করুন অ্যাপের প্রাইমারি ডিরেক্টরিতে ঢুকতে।
বেসিক macOS অ্যাপ বান্ডল এনাটমি
বান্ডলের "Contents" ফোল্ডারের ভিতরে, আপনি অনেক ফাইল পাবেন। সব macOS অ্যাপে নিচের ফাইলগুলো ন্যূনতম থাকতে হবে:
- Info.plist: ماندেটরি কনফিগারেশন ডিটেইলস এবং অ্যাপ্লিকেশন আইডেন্টিফায়ার স্ট্রিংস অন্তর্ভুক্ত।
- MacOS/Executable: যে কোডটি ইউজার অ্যাপ লঞ্চ করলে রান করে, যা "MacOS" ফোল্ডারের ভিতরে থাকে। এক্সিকিউটেবল ছাড়া, আপনার কাছে একটু বান্ডল থাকবে।
আপনি আরো কিছু কমন ফোল্ডারে অতিরিক্ত ফাইল পাওয়ার সম্ভাবনা:
- Plugins: এক্সটেনশন-লাইক মিনি-এক্সিকিউটেবলস যা কোর এক্সিকিউটেবলের ফাংশনালিটি এক্সটেন্ড করে। স্ট্যাটিক রিসোর্সের ভিন্ন, প্লাগইনগুলো অ্যাপ্লিকেশনে ডাইনামিক্যালি ফাংশনালিটি যোগ করে।
- Resources: সাপোর্ট ফাইলগুলো যেগুলো আপনার অ্যাপ্লিকেশন নির্ভর করে। এই ফোল্ডারে ছবি, আইকন, সাউন্ড, ফন্ট, nib ফাইল, লোকালাইজেশন, এবং ডেটা স্টোর থাকতে পারে কিন্তু সীমাবদ্ধ নয়। প্লাগইনএর ভিন্ন, এই রিসোর্সগুলো এক্সিকিউটেবলের কোর ফাংশনালিটি সাপোর্ট করে।
- Frameworks: প্লাগইনের মত, আপনার অ্যাপ্লিকেশনের প্রয়োজনীয় হাই-লেভেল ফ্রেমওয়ার্কগুলো তাদের নিজস্ব বান্ডল। কিন্তু তারা একটি হায়েরার্কিক্যাল ডিফারেন্ট স্ট্রাকচার ফলো করে।
- CodeSignature: একটি স্ট্রাকচারড plist ফাইল যা অ্যাপ্লিকেশনের প্রতিটি পার্টের জন্য কোড সিগনেচার প্রদান করে। এই সিগনেচারগুলো অ্যাপ এবং macOS কে অ্যাপ্লিকেশনের ইন্টিগ্রিটি ভেরিফাই করতে এবং অ্যাপ হাইজ্যাকিং অ্যাটাক প্রতিরোধ করতে দেয়।
iOS অ্যাপ বান্ডলগুলো একই বেসিক স্ট্রাকচার এবং ফাইল ফরম্যাট ব্যবহার করে, যদিও তারা প্রায়শই একটি ভিন্ন হায়েরার্কিতে দেখা যায়।
Info.plist
Info.plist আপনার অ্যাপ্লিকেশনের বেসিক ডেমোগ্রাফিক্সের প্রাইমারি ডাইজেস্ট। এতে আপনার বান্ডেল আইডেন্টিফায়ার থাকে, যা সব অপর বান্ডেল আইডেন্টিফায়ার থেকে ইউনিক হতে হবে। এই প্রসেস সিম্পল করতে, অ্যাপল রিভার্স ডোমেইন নোটেশন রিকমেন্ড করে, যেমন "com.apple.siri.launcher" বা "org.videolan.vlc." Info.plist সম্পর্কে আরও জানতে, অ্যাপল-এর কী লিস্ট চেক করুন এবং প্রতিটি কী কী করে সেটি বিবেচনা করুন।
এই ফাইলটি বেসিক অ্যাপ ইনফোও ধারণ করে যেমন অ্যাপ আইকন, অ্যাপ নাম, ভার্সন নম্বর, কপিরাইট ডেটা, এরর রিপোর্টিং লিংক, এবং ডিফল্ট ল্যাঙ্গুয়েজ। কনভেনশন এবং সিস্টেম রুল অনুযায়ী, "Info"-তে "I" সবসময় ক্যাপিটালাইজড থাকে।
এক্সিকিউটেবল
এখানেই আপনার অ্যাপ্লিকেশনের প্রাইমারি কোড থাকে। যখন অ্যাপ্লিকেশন খোলা হয়, macOS বান্ডলের "MacOS" ডিরেক্টরিতে থাকা এক্সিকিউটেবলে থাকা কোড রান করে। প্রায় সব অ্যাপ্লিকেশনের শুধু একটি এক্সিকিউটেবল থাকে, যদিও দুটি বা তার বেশি হেল্পার এক্সিকিউটেবলের জন্য ব্যবহার করা যায়। এই ফাইল সাধারণত ডেভেলপারের বাদে কারো জন্য আকর্ষণীয় নয় কারণ এটি ইউজার সহজে ভিউ বা এডিট করতে পারে না।
রিসোর্স এবং অতিরিক্ত সাপোর্ট ফাইল
আপনার অ্যাপ্লিকেশনের জন্য অপরিহার্য যেকোনো জিনিস এর বান্ডলে থাকা উচিত। যদি সেটি এক্সিকিউটেবল পার্ট না হয়, তবে সেটি বান্ডলের রিসোর্স ফোল্ডারগুলোতে যেতে হবে। এই রিসোর্সগুলো প্রাইমারি "Resources" ফোল্ডারে বা ভিন্ন ফোল্ডারে সাব-ডিভাইডেড থাকতে পারে।
- সন্দেহ হলে, অধিকাংশ রিসোর্স "Resources" ফোল্ডারে যায়।
- ফ্রেমওয়ার্ক "Frameworks" ফোল্ডারে যায়।
- প্লাগইন "Plugins" ফোল্ডারে যায়।
- লোকালাইজেশন ফাইল (.lproj ডিরেক্টরি) "Resources" ফোল্ডারে যায়।
সেসব রিকোয়ারমেন্টের বাইরে, অ্যাপল অনেক সাজেশন এবং কনভেনশন দেয় যেগুলো ফলো করা উচিত যদি না আপনার কাছে একটি ডিফেনসিবল রিজন থাকে অন্যথা করার জন্য।
উপসংহার
macOS অ্যাপ্লিকেশনগুলো বান্ডলে কন্টেইন করা থাকে, যেগুলো অ্যাপ্লিকেশন ফাইলগুলোর জন্য হায়েরার্কিক্যাল কন্টেইনার। বেসিক স্ট্রাকচার সব অ্যাপ্লিকেশনের জন্য একই। ইউজারের জন্য সবচেয়ে আকর্ষণীয় ফাইলগুলো অ্যাপের বান্ডলের ভিতরে "Resources" ফোল্ডারে থাকে।