আপনার অ্যাপ্লিকেশন উত্স এবং সংস্থানগুলিকে সংগঠিত করতে Android প্রকল্পগুলিতে অনেকগুলি বিল্ড-সম্পর্কিত ফাইল এবং ডিরেক্টরি কাঠামো রয়েছে৷ কনফিগারেশনের বিশদ বিবরণে ডুব দেওয়ার আগে, আমরা সামগ্রিক কাঠামো এবং প্রতিটি অংশে কী রয়েছে তার মূল বিষয়গুলি একবার দেখে নেব৷
এই টেবিলটি একটি অ্যান্ড্রয়েড প্রকল্পের সাধারণ ফাইলগুলিকে তালিকাভুক্ত করে৷ প্রতিটি ফাইল বা ডিরেক্টরির বিবরণের মধ্যে কোন ধরনের বিষয়বস্তু রয়েছে তার নোট অন্তর্ভুক্ত করে। সর্বোত্তম অনুশীলনগুলি সময়ের সাথে বিকশিত হয়, এবং এই বিবরণগুলি আপনার উত্তরাধিকারসূত্রে পাওয়া বা ইন্টারনেট থেকে ডাউনলোড করা কোনও প্রকল্পের সাথে মেলে না।
আপনার বিল্ড ফাইল লেখার সময়, একটি ঘোষণামূলক পদ্ধতি ব্যবহার করুন; বিল্ড লজিক এবং টাস্ক সংজ্ঞা শুধুমাত্র প্লাগইনগুলিতে উপস্থিত হওয়া উচিত। বিল্ড লজিককে প্লাগইনগুলিতে সীমিত করে, বিল্ড ফাইলগুলি ডেটা ঘোষণায় পরিণত হয়, যা বোঝার এবং সম্পাদনার জন্য আরও সরাসরি। ভবিষ্যত সংস্করণে একটি বিকল্প স্পেসিফিকেশন অন্তর্ভুক্ত থাকতে পারে যেমন Declarative Gradle , যা ফাইলগুলিতে বিল্ড লজিক প্রতিরোধ করবে।
ফোল্ডার/ফাইল | ব্যবহার করুন |
---|---|
.gradle/ | Gradle প্রজেক্ট ক্যাশে ডিরেক্টরি Gradle দ্বারা পরিচালিত এবং ডাউনলোড করা Gradle ডিস্ট্রিবিউশন, প্রোজেক্ট ক্যাশে এবং কনফিগারেশন ফাইল রয়েছে। এই ডিরেক্টরিতে ফাইল পরিবর্তন করবেন না! |
.idea/ | অ্যান্ড্রয়েড স্টুডিও প্রকল্প মেটাডেটা এই ডিরেক্টরিতে ফাইল পরিবর্তন করবেন না! |
build.gradle(.kts) | সাবপ্রজেক্ট জুড়ে একটি সাধারণ প্লাগইন ক্লাসপাথ সেট আপ করার জন্য শুধুমাত্র প্লাগইন ঘোষণা থাকা উচিত। অন্যান্য কোড সেটিংস বা নেস্টেড-প্রকল্প-স্তরের বিল্ড ফাইলগুলিতে থাকা উচিত। |
gradle.properties | Gradle বৈশিষ্ট্যগুলি ধারণ করে, Gradle বিল্ড এনভায়রনমেন্টের দিকগুলি যেমন হিপ সাইজ, ক্যাশিং এবং সমান্তরাল এক্সিকিউশন নিয়ন্ত্রণ করে। কিছু অস্থায়ী অ্যান্ড্রয়েড বৈশিষ্ট্য এখানে সংজ্ঞায়িত করা হয়েছে, এজিপি ডিএসএল-এ পরিবর্তনগুলিকে কমাতে যেহেতু সেগুলি যোগ করা হয়েছে এবং পরে সরানো হয়েছে৷ |
gradlew (লিনাক্স, ম্যাক) gradlew.bat (উইন্ডোজ) | গ্রেডল র্যাপার ফাইল একটি Gradle ডিস্ট্রিবিউশন ডাউনলোড করে এবং তারপরে কমান্ড ফরোয়ার্ড করে আপনার বিল্ড বুটস্ট্র্যাপ করে। এটি আপনাকে Gradle পূর্ব-ইন্সটল না করেই বিল্ডগুলি চালাতে দেয়। |
local.properties | স্থানীয় মেশিন কনফিগারেশন স্থানীয় মেশিনের সাথে সম্পর্কিত বৈশিষ্ট্য রয়েছে, যেমন Android SDK-এর অবস্থান। উৎস নিয়ন্ত্রণ থেকে এই ফাইল বাদ! |
settings.gradle(.kts) | গ্রেডল ইনিশিয়ালাইজেশন এবং প্রোজেক্ট কনফিগারেশনের জন্য গ্লোবাল বিল্ড তথ্য রয়েছে, যেমন
|
গ্রেডল/ | |
↳ libs.versions.toml | নির্ভরতা এবং আপনার বিল্ডের ভিতরে ব্যবহৃত প্লাগইনগুলির জন্য ভেরিয়েবল সংজ্ঞায়িত করে। আপনার প্রকল্পের সমস্ত সাবপ্রজেক্ট জুড়ে সামঞ্জস্য নিশ্চিত করে আপনি এখানে কোন সংস্করণগুলি ব্যবহার করতে চান তা নির্দিষ্ট করুন৷ |
↳ মোড়ক/ | |
↳ gradle-wrapper.jar | গ্রেডল বুটস্ট্র্যাপিং এক্সিকিউটেবল নির্দিষ্ট গ্রেডেল ডিস্ট্রিবিউশন ডাউনলোড করে (যদি এটি বিদ্যমান না থাকে), এবং এটি চালায়, যেকোনো আর্গুমেন্ট বরাবর পাস করে |
↳ gradle-wrapper.properties | গ্রেডল র্যাপারের জন্য কনফিগারেশন গ্র্যাডল ডিস্ট্রিবিউশন কোথায় ডাউনলোড করতে হবে তা নির্দিষ্ট করে (কোন সংস্করণ ব্যবহার করতে হবে সহ)। |
অ্যাপ/ | সাবপ্রকল্প (অ্যান্ড্রয়েড স্টুডিওতে "মডিউল" নামে পরিচিত) অ্যাপ্লিকেশন বা লাইব্রেরি তৈরি করতে পারে এবং অন্যান্য সাবপ্রজেক্ট বা বাহ্যিক নির্ভরতার উপর নির্ভর করতে পারে। |
↳ build.gradle(.kts) | এই সাবপ্রজেক্টটি কীভাবে তৈরি করবেন তা ঘোষণা করে। প্রতিটি সাবপ্রজেক্টের জন্য একটি পৃথক বিল্ড ফাইল প্রয়োজন এবং এটি থাকা উচিত
আপনার বিল্ড ফাইলগুলিতে বিল্ড লজিক (যেমন কোটলিন ফাংশন সংজ্ঞা বা শর্তাবলী) বা টাস্ক ঘোষণা অন্তর্ভুক্ত করা উচিত নয়। যুক্তি তৈরি করুন এবং কাজগুলি শুধুমাত্র প্লাগইনগুলির মধ্যে থাকা উচিত । |
↳ src/ | সাবপ্রজেক্ট সোর্স ফাইল সোর্স ফাইলগুলিকে (অ্যাপ্লিকেশন কোড এবং রিসোর্স) সোর্স সেটে গ্রুপ করে। |
↳ প্রধান/ | প্রধান উৎস সেট সোর্স কোড এবং রিসোর্স যা সমস্ত বিল্ড ভেরিয়েন্ট জুড়ে সাধারণ। এই উত্সটি সমস্ত বিল্ডের ভিত্তি হিসাবে কাজ করে এবং অন্যান্য, আরও নির্দিষ্ট উত্স সেটগুলি এই উত্সটিতে যুক্ত বা ওভাররাইড করে৷ |
↳ জাভা/ ↳ কোটলিন/ | কোটলিন এবং জাভা সোর্স কোড |
↳ রেস/ | অ্যাপ্লিকেশন সংস্থান রয়েছে, যেমন XML ফাইল এবং ছবি। সমস্ত অ্যাপ্লিকেশন কিছু মৌলিক সম্পদ ব্যবহার করে, যেমন লঞ্চার আইকন, কিন্তু এই সম্পদগুলির অনেকগুলি, যেমন লেআউট এবং মেনু, শুধুমাত্র ভিউ-ভিত্তিক অ্যাপ্লিকেশনগুলিতে ব্যবহৃত হয়। রচনা অ্যাপ্লিকেশন এই ডিরেক্টরির অধীনে সংজ্ঞায়িত স্ট্রিং সংস্থান ব্যবহার করে। |
↳ AndroidManifest.xml | অ্যান্ড্রয়েড অ্যাপ্লিকেশন মেটাডেটা সিস্টেম বলতে Android প্যাকেজ ম্যানেজার দ্বারা পড়ুন
|
↳ অ্যান্ড্রয়েড টেস্ট/ | ডিভাইস পরীক্ষার উৎস সেট একটি Android-চালিত ডিভাইস বা এমুলেটরে চালানো হবে এমন পরীক্ষার জন্য উৎস রয়েছে। এই পরীক্ষাগুলির একটি বাস্তব অ্যান্ড্রয়েড পরিবেশে অ্যাক্সেস রয়েছে, তবে হোস্ট পরীক্ষার চেয়ে ধীরে ধীরে সম্পাদন করা হয়। |
↳ পরীক্ষা/ | হোস্ট পরীক্ষার উৎস সেট একটি ডিভাইসে চালানো পরীক্ষার বিপরীতে একটি JVM-এ স্থানীয়ভাবে চালানো পরীক্ষার জন্য উৎস রয়েছে। এই পরীক্ষাগুলি ডিভাইস পরীক্ষার তুলনায় চালানোর জন্য অনেক দ্রুত। যাইহোক, যেকোন সিস্টেম কল (আপনার অ্যাপ্লিকেশন চালানো লাইফসাইকেল সহ) অবশ্যই উপহাস, জাল, স্টাবড বা অন্যথায় সিমুলেটেড হতে হবে। |
↳ proguard-rules.pro | অ্যাপ্লিকেশন সঙ্কুচিত, অপ্টিমাইজেশান, এবং অস্পষ্টতা নিয়ন্ত্রণ করার নিয়মগুলি সংজ্ঞায়িত করে৷ R8 অপ্রয়োজনীয় কোড এবং সংস্থানগুলি সরিয়ে দেয়, রানটাইম কর্মক্ষমতা অপ্টিমাইজ করে এবং শনাক্তকারীর নাম পরিবর্তন করে আপনার কোডকে আরও ছোট করে। |
আপনার অ্যাপ্লিকেশন উত্স এবং সংস্থানগুলিকে সংগঠিত করতে Android প্রকল্পগুলিতে অনেকগুলি বিল্ড-সম্পর্কিত ফাইল এবং ডিরেক্টরি কাঠামো রয়েছে৷ কনফিগারেশনের বিশদ বিবরণে ডুব দেওয়ার আগে, আমরা সামগ্রিক কাঠামো এবং প্রতিটি অংশে কী রয়েছে তার মূল বিষয়গুলি একবার দেখে নেব৷
এই টেবিলটি একটি অ্যান্ড্রয়েড প্রকল্পের সাধারণ ফাইলগুলিকে তালিকাভুক্ত করে৷ প্রতিটি ফাইল বা ডিরেক্টরির বিবরণের মধ্যে কোন ধরনের বিষয়বস্তু রয়েছে তার নোট অন্তর্ভুক্ত করে। সর্বোত্তম অনুশীলনগুলি সময়ের সাথে বিকশিত হয়, এবং এই বিবরণগুলি আপনার উত্তরাধিকারসূত্রে পাওয়া বা ইন্টারনেট থেকে ডাউনলোড করা কোনও প্রকল্পের সাথে মেলে না।
আপনার বিল্ড ফাইল লেখার সময়, একটি ঘোষণামূলক পদ্ধতি ব্যবহার করুন; বিল্ড লজিক এবং টাস্ক সংজ্ঞা শুধুমাত্র প্লাগইনগুলিতে উপস্থিত হওয়া উচিত। বিল্ড লজিককে প্লাগইনগুলিতে সীমিত করে, বিল্ড ফাইলগুলি ডেটা ঘোষণায় পরিণত হয়, যা বোঝার এবং সম্পাদনার জন্য আরও সরাসরি। ভবিষ্যত সংস্করণে একটি বিকল্প স্পেসিফিকেশন অন্তর্ভুক্ত থাকতে পারে যেমন Declarative Gradle , যা ফাইলগুলিতে বিল্ড লজিক প্রতিরোধ করবে।
ফোল্ডার/ফাইল | ব্যবহার করুন |
---|---|
.gradle/ | Gradle প্রজেক্ট ক্যাশে ডিরেক্টরি Gradle দ্বারা পরিচালিত এবং ডাউনলোড করা Gradle ডিস্ট্রিবিউশন, প্রোজেক্ট ক্যাশে এবং কনফিগারেশন ফাইল রয়েছে। এই ডিরেক্টরিতে ফাইল পরিবর্তন করবেন না! |
.idea/ | অ্যান্ড্রয়েড স্টুডিও প্রকল্প মেটাডেটা এই ডিরেক্টরিতে ফাইল পরিবর্তন করবেন না! |
build.gradle(.kts) | সাবপ্রজেক্ট জুড়ে একটি সাধারণ প্লাগইন ক্লাসপাথ সেট আপ করার জন্য শুধুমাত্র প্লাগইন ঘোষণা থাকা উচিত। অন্যান্য কোড সেটিংস বা নেস্টেড-প্রকল্প-স্তরের বিল্ড ফাইলগুলিতে থাকা উচিত। |
gradle.properties | Gradle বৈশিষ্ট্যগুলি ধারণ করে, Gradle বিল্ড এনভায়রনমেন্টের দিকগুলি যেমন হিপ সাইজ, ক্যাশিং এবং সমান্তরাল এক্সিকিউশন নিয়ন্ত্রণ করে। কিছু অস্থায়ী অ্যান্ড্রয়েড বৈশিষ্ট্য এখানে সংজ্ঞায়িত করা হয়েছে, এজিপি ডিএসএল-এ পরিবর্তনগুলিকে কমাতে যেহেতু সেগুলি যোগ করা হয়েছে এবং পরে সরানো হয়েছে৷ |
gradlew (লিনাক্স, ম্যাক) gradlew.bat (উইন্ডোজ) | গ্রেডল র্যাপার ফাইল একটি Gradle ডিস্ট্রিবিউশন ডাউনলোড করে এবং তারপরে কমান্ড ফরোয়ার্ড করে আপনার বিল্ড বুটস্ট্র্যাপ করে। এটি আপনাকে Gradle পূর্ব-ইন্সটল না করেই বিল্ডগুলি চালাতে দেয়। |
local.properties | স্থানীয় মেশিন কনফিগারেশন স্থানীয় মেশিনের সাথে সম্পর্কিত বৈশিষ্ট্য রয়েছে, যেমন Android SDK-এর অবস্থান। উৎস নিয়ন্ত্রণ থেকে এই ফাইল বাদ! |
settings.gradle(.kts) | গ্রেডল ইনিশিয়ালাইজেশন এবং প্রোজেক্ট কনফিগারেশনের জন্য গ্লোবাল বিল্ড তথ্য রয়েছে, যেমন
|
গ্রেডল/ | |
↳ libs.versions.toml | নির্ভরতা এবং আপনার বিল্ডের ভিতরে ব্যবহৃত প্লাগইনগুলির জন্য ভেরিয়েবল সংজ্ঞায়িত করে। আপনার প্রকল্পের সমস্ত সাবপ্রজেক্ট জুড়ে সামঞ্জস্য নিশ্চিত করে আপনি এখানে কোন সংস্করণগুলি ব্যবহার করতে চান তা নির্দিষ্ট করুন৷ |
↳ মোড়ক/ | |
↳ gradle-wrapper.jar | গ্রেডল বুটস্ট্র্যাপিং এক্সিকিউটেবল নির্দিষ্ট গ্রেডেল ডিস্ট্রিবিউশন ডাউনলোড করে (যদি এটি বিদ্যমান না থাকে), এবং এটি চালায়, যেকোনো আর্গুমেন্ট বরাবর পাস করে |
↳ gradle-wrapper.properties | গ্রেডল র্যাপারের জন্য কনফিগারেশন গ্র্যাডল ডিস্ট্রিবিউশন কোথায় ডাউনলোড করতে হবে তা নির্দিষ্ট করে (কোন সংস্করণ ব্যবহার করতে হবে সহ)। |
অ্যাপ/ | সাবপ্রকল্প (অ্যান্ড্রয়েড স্টুডিওতে "মডিউল" নামে পরিচিত) অ্যাপ্লিকেশন বা লাইব্রেরি তৈরি করতে পারে এবং অন্যান্য সাবপ্রজেক্ট বা বাহ্যিক নির্ভরতার উপর নির্ভর করতে পারে। |
↳ build.gradle(.kts) | এই সাবপ্রজেক্টটি কীভাবে তৈরি করবেন তা ঘোষণা করে। প্রতিটি সাবপ্রজেক্টের জন্য একটি পৃথক বিল্ড ফাইল প্রয়োজন এবং এটি থাকা উচিত
আপনার বিল্ড ফাইলগুলিতে বিল্ড লজিক (যেমন কোটলিন ফাংশন সংজ্ঞা বা শর্তাবলী) বা টাস্ক ঘোষণা অন্তর্ভুক্ত করা উচিত নয়। যুক্তি তৈরি করুন এবং কাজগুলি শুধুমাত্র প্লাগইনগুলির মধ্যে থাকা উচিত । |
↳ src/ | সাবপ্রজেক্ট সোর্স ফাইল সোর্স ফাইলগুলিকে (অ্যাপ্লিকেশন কোড এবং রিসোর্স) সোর্স সেটে গ্রুপ করে। |
↳ প্রধান/ | প্রধান উৎস সেট সোর্স কোড এবং রিসোর্স যা সমস্ত বিল্ড ভেরিয়েন্ট জুড়ে সাধারণ। এই উত্সটি সমস্ত বিল্ডের ভিত্তি হিসাবে কাজ করে এবং অন্যান্য, আরও নির্দিষ্ট উত্স সেটগুলি এই উত্সটিতে যুক্ত বা ওভাররাইড করে৷ |
↳ জাভা/ ↳ কোটলিন/ | কোটলিন এবং জাভা সোর্স কোড |
↳ রেস/ | অ্যাপ্লিকেশন সংস্থান রয়েছে, যেমন XML ফাইল এবং ছবি। সমস্ত অ্যাপ্লিকেশন কিছু মৌলিক সম্পদ ব্যবহার করে, যেমন লঞ্চার আইকন, কিন্তু এই সম্পদগুলির অনেকগুলি, যেমন লেআউট এবং মেনু, শুধুমাত্র ভিউ-ভিত্তিক অ্যাপ্লিকেশনগুলিতে ব্যবহৃত হয়। রচনা অ্যাপ্লিকেশন এই ডিরেক্টরির অধীনে সংজ্ঞায়িত স্ট্রিং সংস্থান ব্যবহার করে। |
↳ AndroidManifest.xml | অ্যান্ড্রয়েড অ্যাপ্লিকেশন মেটাডেটা সিস্টেম বলতে Android প্যাকেজ ম্যানেজার দ্বারা পড়ুন
|
↳ অ্যান্ড্রয়েড টেস্ট/ | ডিভাইস পরীক্ষার উৎস সেট একটি Android-চালিত ডিভাইস বা এমুলেটরে চালানো হবে এমন পরীক্ষার জন্য উৎস রয়েছে। এই পরীক্ষাগুলির একটি বাস্তব অ্যান্ড্রয়েড পরিবেশে অ্যাক্সেস রয়েছে, তবে হোস্ট পরীক্ষার চেয়ে ধীরে ধীরে সম্পাদন করা হয়। |
↳ পরীক্ষা/ | হোস্ট পরীক্ষার উৎস সেট একটি ডিভাইসে চালানো পরীক্ষার বিপরীতে একটি JVM-এ স্থানীয়ভাবে চালানো পরীক্ষার জন্য উৎস রয়েছে। এই পরীক্ষাগুলি ডিভাইস পরীক্ষার তুলনায় চালানোর জন্য অনেক দ্রুত। যাইহোক, যেকোন সিস্টেম কল (আপনার অ্যাপ্লিকেশন চালানো লাইফসাইকেল সহ) অবশ্যই উপহাস, জাল, স্টাবড বা অন্যথায় সিমুলেটেড হতে হবে। |
↳ proguard-rules.pro | অ্যাপ্লিকেশন সঙ্কুচিত, অপ্টিমাইজেশান, এবং অস্পষ্টতা নিয়ন্ত্রণ করার নিয়মগুলি সংজ্ঞায়িত করে৷ R8 অপ্রয়োজনীয় কোড এবং সংস্থানগুলি সরিয়ে দেয়, রানটাইম কর্মক্ষমতা অপ্টিমাইজ করে এবং শনাক্তকারীর নাম পরিবর্তন করে আপনার কোডকে আরও ছোট করে। |