প্রকল্প ওভারভিউ

অ্যান্ড্রয়েড স্টুডিওর একটি প্রজেক্টে সোর্স কোড ও অ্যাসেট থেকে শুরু করে টেস্ট কোড ও বিল্ড কনফিগারেশন পর্যন্ত এমন সবকিছু থাকে, যা একটি অ্যাপের জন্য আপনার ওয়ার্কস্পেসকে সংজ্ঞায়িত করে।

যখন আপনি একটি নতুন প্রজেক্ট শুরু করেন, অ্যান্ড্রয়েড স্টুডিও আপনার সমস্ত ফাইলের জন্য প্রয়োজনীয় কাঠামো তৈরি করে এবং সেগুলোকে অ্যান্ড্রয়েড স্টুডিওর প্রজেক্ট উইন্ডোতে দৃশ্যমান করে তোলে। উইন্ডোটি খুলতে, ভিউ > টুল উইন্ডোজ > প্রজেক্ট নির্বাচন করুন।

এই পৃষ্ঠাটি আপনার প্রকল্পের মূল উপাদানগুলোর একটি সংক্ষিপ্ত বিবরণ প্রদান করে।

মডিউল

মডিউল হলো সোর্স ফাইল এবং বিল্ড সেটিংসের একটি সংগ্রহ, যা আপনাকে আপনার প্রোজেক্টকে কার্যকারিতার স্বতন্ত্র ইউনিটে ভাগ করতে দেয়। আপনার প্রোজেক্টে এক বা একাধিক মডিউল থাকতে পারে এবং একটি মডিউল ডিপেন্ডেন্সি হিসেবে অন্য একটি মডিউল ব্যবহার করতে পারে। আপনি প্রতিটি মডিউলকে স্বাধীনভাবে বিল্ড, টেস্ট এবং ডিবাগ করতে পারেন। উল্লেখ্য যে, গ্রেডল ডকুমেন্টেশনে মডিউলগুলোকে "প্রোজেক্ট" বা "সাবপ্রোজেক্ট" হিসেবেও উল্লেখ করা হতে পারে।

আপনার নিজের প্রোজেক্টের মধ্যে কোড লাইব্রেরি তৈরি করার সময় অথবা ফোন এবং পরিধানযোগ্য ডিভাইসের মতো বিভিন্ন ধরণের ডিভাইসের জন্য আলাদা আলাদা কোড ও রিসোর্সের সেট তৈরি করতে চাইলে অতিরিক্ত মডিউলগুলো কার্যকর হয়, যেখানে সমস্ত ফাইল একই প্রোজেক্টের মধ্যে রাখা এবং কিছু কোড শেয়ার করা হয়।

আপনার প্রজেক্টে একটি নতুন মডিউল যোগ করতে, ফাইল > নতুন > নতুন মডিউল-এ ক্লিক করুন।

অ্যান্ড্রয়েড স্টুডিওতে কয়েকটি স্বতন্ত্র ধরনের মডিউল রয়েছে:

অ্যান্ড্রয়েড অ্যাপ মডিউল

এটি আপনার অ্যাপের সোর্স কোড, রিসোর্স ফাইল এবং অ্যাপ-স্তরের সেটিংস, যেমন মডিউল-স্তরের বিল্ড ফাইল ও অ্যান্ড্রয়েড ম্যানিফেস্ট ফাইলের জন্য একটি ধারক প্রদান করে। যখন আপনি একটি নতুন প্রজেক্ট তৈরি করেন, তখন ডিফল্ট অ্যাপ মডিউলটির নাম 'app' হয়।

অ্যান্ড্রয়েড স্টুডিও নিম্নলিখিত ধরণের অ্যাপ মডিউলগুলো প্রদান করে:

  • ফোন ও ট্যাবলেট
  • স্বয়ংচালিত
  • Wear OS
  • টেলিভিশন

প্রতিটি মডিউলে প্রয়োজনীয় ফাইল এবং কিছু কোড টেমপ্লেট দেওয়া থাকে, যা সংশ্লিষ্ট অ্যাপ বা ডিভাইসের ধরনের জন্য উপযুক্ত।

মডিউল যোগ করার বিষয়ে আরও তথ্যের জন্য, “নতুন ডিভাইসের জন্য মডিউল যোগ করুন” পড়ুন।

বৈশিষ্ট্য মডিউল
এটি আপনার অ্যাপের একটি মডিউলারাইজড ফিচারকে উপস্থাপন করে যা প্লে ফিচার ডেলিভারির সুবিধা নিতে পারে। উদাহরণস্বরূপ, ফিচার মডিউলের মাধ্যমে, আপনি আপনার ব্যবহারকারীদেরকে আপনার অ্যাপের নির্দিষ্ট কিছু ফিচার চাহিদা অনুযায়ী অথবা গুগল প্লে ইনস্ট্যান্ট- এর মাধ্যমে তাৎক্ষণিক অভিজ্ঞতা হিসেবে প্রদান করতে পারেন।

অ্যান্ড্রয়েড স্টুডিও নিম্নলিখিত ধরণের ফিচার মডিউলগুলো প্রদান করে:

  • ডাইনামিক ফিচার মডিউল
  • ইনস্ট্যান্ট ডাইনামিক ফিচার লাইব্রেরি মডিউল

আরও জানতে, প্লে ফিচার ডেলিভারি সম্পর্কে পড়ুন।

লাইব্রেরি মডিউল

এটি আপনার পুনঃব্যবহারযোগ্য কোডের জন্য একটি ধারক প্রদান করে, যা আপনি অন্যান্য অ্যাপ মডিউলে ডিপেন্ডেন্সি হিসেবে ব্যবহার করতে পারেন অথবা অন্য প্রজেক্টে ইম্পোর্ট করতে পারেন। গঠনগতভাবে, একটি লাইব্রেরি মডিউল একটি অ্যাপ মডিউলের মতোই, কিন্তু বিল্ড করার সময় এটি APK-এর পরিবর্তে একটি কোড আর্কাইভ ফাইল তৈরি করে, তাই এটি কোনো ডিভাইসে ইনস্টল করা যায় না।

'Create New Module' উইন্ডোতে, অ্যান্ড্রয়েড স্টুডিও নিম্নলিখিত ধরণের লাইব্রেরি মডিউলগুলো প্রদান করে:

  • অ্যান্ড্রয়েড লাইব্রেরি: এতে নেটিভ C++ কোড ছাড়া একটি অ্যান্ড্রয়েড প্রকল্পে সমর্থিত সমস্ত ধরণের ফাইল থাকে, যার মধ্যে জাভা ও কোটলিন সোর্স কোড, রিসোর্স এবং ম্যানিফেস্ট ফাইল অন্তর্ভুক্ত। বিল্ডের ফলাফল একটি অ্যান্ড্রয়েড আর্কাইভ (AAR) ফাইল, যা আপনি আপনার অ্যান্ড্রয়েড অ্যাপ মডিউলগুলির জন্য ডিপেন্ডেন্সি হিসেবে যোগ করতে পারেন।
  • অ্যান্ড্রয়েড নেটিভ লাইব্রেরি: একটি অ্যান্ড্রয়েড লাইব্রেরির মতোই, এতে অ্যান্ড্রয়েড প্রজেক্টে সমর্থিত সব ধরনের ফাইল থাকে। তবে, অ্যান্ড্রয়েড নেটিভ লাইব্রেরিতে নেটিভ C++ সোর্স কোডও থাকতে পারে। এর বিল্ড ফলাফল হলো একটি অ্যান্ড্রয়েড আর্কাইভ (AAR) ফাইল, যা আপনি আপনার অ্যান্ড্রয়েড অ্যাপ মডিউলগুলোর জন্য ডিপেন্ডেন্সি হিসেবে যোগ করতে পারেন।
  • জাভা বা কোটলিন লাইব্রেরি: এতে শুধুমাত্র কোটলিন বা জাভা সোর্স ফাইল থাকে। বিল্ডের ফলে একটি জাভা আর্কাইভ (JAR) ফাইল তৈরি হয়, যা আপনি আপনার অ্যান্ড্রয়েড অ্যাপ মডিউল বা অন্যান্য কোটলিন বা জাভা প্রজেক্টের জন্য ডিপেন্ডেন্সি হিসেবে যোগ করতে পারেন।
  • বেঞ্চমার্ক > মাইক্রোবেঞ্চমার্ক: এতে কোডের পারফরম্যান্স নিয়মিত পরিমাপ করতে এবং বেঞ্চমার্কিং ফলাফল আউটপুট করার জন্য প্রয়োজনীয় ফাইল থাকে। বারবার ব্যবহৃত হয় এমন ছোট ছোট কোডের অংশের পারফরম্যান্স পরিমাপের জন্য মাইক্রোবেঞ্চমার্ক মডিউলগুলো বিশেষভাবে সহায়ক। আরও তথ্যের জন্য, ‘মাইক্রোবেঞ্চমার্ক সম্পর্কে ’ দেখুন।

যখন আপনি একটি লাইব্রেরি মডিউল তৈরি করেন এবং সেটিকে আপনার অ্যান্ড্রয়েড অ্যাপ মডিউলে ডিপেন্ডেন্সি হিসেবে যোগ করতে চান, তখন আপনাকে অবশ্যই এটিকে নিম্নরূপে ডিক্লেয়ার করতে হবে:

গ্রুভি

    dependencies {
        implementation project(':my-library-module')
    }
    

কোটলিন

    dependencies {
        implementation(project(":my-library-module"))
    }
    
টেস্ট মডিউল

আপনার টেস্টগুলোকে কোডের বাকি অংশ থেকে আলাদা রাখে। আপনি নির্দিষ্ট বিল্ড ভ্যারিয়েন্টকে টার্গেট করার জন্য টেস্ট মডিউলটি কনফিগার করতে পারেন।

অ্যান্ড্রয়েড স্টুডিও নিম্নলিখিত ধরণের টেস্ট মডিউলগুলো প্রদান করে:

  • বেসলাইন প্রোফাইল জেনারেটর: বেসলাইন প্রোফাইল নেভিগেশন এবং স্ক্রলিং-এর মতো ইউজার ইন্টারঅ্যাকশনগুলোকে প্রথমবার চলার সময় আরও মসৃণ করে তোলে। অ্যাপের পারফরম্যান্স এবং ইউজার এক্সপেরিয়েন্স উন্নত করতে আপনার গুরুত্বপূর্ণ ইউজার জার্নিগুলোর জন্য বেসলাইন প্রোফাইল তৈরি করুন।
  • বেঞ্চমার্ক > ম্যাক্রোবেঞ্চমার্ক: এতে কোডের পারফরম্যান্স নিয়মিত পরিমাপ করতে এবং বেঞ্চমার্কিং ফলাফল আউটপুট করার জন্য প্রয়োজনীয় ফাইল থাকে। ম্যাক্রোবেঞ্চমার্ক মডিউলগুলো আপনার অ্যাপের বড় ধরনের ব্যবহারের ক্ষেত্রে, যেমন একটি তালিকা স্ক্রল করা বা অন্যান্য UI ম্যানিপুলেশনের পারফরম্যান্স পরিমাপের জন্য বিশেষভাবে সহায়ক। আরও তথ্যের জন্য, "একটি ম্যাক্রোবেঞ্চমার্ক লিখুন " দেখুন।

প্রকল্পের ফাইল

ডিফল্টরূপে, অ্যান্ড্রয়েড স্টুডিও আপনার প্রোজেক্ট ফাইলগুলো অ্যান্ড্রয়েড ভিউতে প্রদর্শন করে। এই ভিউটি ডিস্কে থাকা ফাইলের প্রকৃত কাঠামোকে প্রতিফলিত করে না। এর পরিবর্তে, এটি মডিউল এবং ফাইলের ধরন অনুযায়ী সাজানো থাকে, যাতে আপনার প্রোজেক্টের গুরুত্বপূর্ণ সোর্স ফাইলগুলোর মধ্যে চলাচল সহজ হয় এবং সচরাচর ব্যবহৃত হয় না এমন কিছু ফাইল বা ডিরেক্টরি আড়াল করা থাকে।

অ্যান্ড্রয়েড ভিউ এবং ডিস্কের কাঠামোর মধ্যে কিছু কাঠামোগত পার্থক্য হলো এই যে, অ্যান্ড্রয়েড ভিউ:

  • প্রকল্পের সমস্ত বিল্ড-সম্পর্কিত কনফিগারেশন ফাইল একটি শীর্ষ-স্তরের গ্রেডল স্ক্রিপ্ট গ্রুপে দেখায়।
  • যখন বিভিন্ন প্রোডাক্ট ফ্লেভার এবং বিল্ড টাইপের জন্য আলাদা আলাদা ম্যানিফেস্ট ফাইল থাকে, তখন এটি একটি মডিউল-লেভেল গ্রুপের প্রতিটি মডিউলের জন্য সমস্ত ম্যানিফেস্ট ফাইল দেখায়।
  • প্রতিটি রিসোর্স কোয়ালিফায়ার অনুযায়ী আলাদা ফোল্ডারের পরিবর্তে সমস্ত বিকল্প রিসোর্স ফাইল একটি একক গ্রুপে দেখায়। উদাহরণস্বরূপ, আপনার লঞ্চার আইকনের সমস্ত ডেনসিটি সংস্করণ পাশাপাশি দেখা যায়।

প্রতিটি অ্যান্ড্রয়েড অ্যাপ মডিউলের মধ্যে ফাইলগুলো নিম্নলিখিত গ্রুপগুলোতে দেখানো হয়:

প্রকাশ পায়
AndroidManifest.xml ফাইলটি এতে রয়েছে।
জাভা
এতে প্যাকেজের নাম অনুসারে আলাদা করা কোটলিন এবং জাভা সোর্স কোড ফাইলগুলো রয়েছে, যার মধ্যে JUnit টেস্ট কোডও অন্তর্ভুক্ত।
রেস
এতে UI স্ট্রিং এবং বিটম্যাপ ইমেজের মতো সমস্ত নন-কোড রিসোর্স রয়েছে, যা সংশ্লিষ্ট সাবডিরেক্টরিতে বিভক্ত। সম্ভাব্য রিসোর্সের প্রকারভেদ সম্পর্কে আরও তথ্যের জন্য, অ্যাপ রিসোর্স ওভারভিউ দেখুন।

প্রকল্পের দৃশ্য

অ্যান্ড্রয়েড ভিউ থেকে লুকানো সমস্ত ফাইল সহ প্রজেক্টের প্রকৃত ফাইল কাঠামো দেখতে, প্রজেক্ট উইন্ডোর উপরের মেনু থেকে প্রজেক্ট নির্বাচন করুন।

যখন আপনি প্রজেক্ট ভিউ নির্বাচন করেন, তখন আপনি আরও অনেক ফাইল ও ডিরেক্টরি দেখতে পাবেন, যার মধ্যে নিম্নলিখিতগুলো অন্তর্ভুক্ত:

module-name /
build/
বিল্ড আউটপুটগুলো ধারণ করে।
libs/
এতে ব্যক্তিগত গ্রন্থাগার রয়েছে।
src/
মডিউলটির সমস্ত কোড এবং রিসোর্স ফাইল নিম্নলিখিত সাবডিরেক্টরিগুলিতে রয়েছে:
androidTest/
এতে অ্যান্ড্রয়েড ডিভাইসে চালিত ইন্সট্রুমেন্টেশন টেস্টের কোড রয়েছে। আরও তথ্যের জন্য, অ্যান্ড্রয়েড স্টুডিওতে টেস্ট দেখুন।
cpp/
এতে জাভা নেটিভ ইন্টারফেস (JNI) ব্যবহার করে লেখা নেটিভ C বা C++ কোড রয়েছে। আরও তথ্যের জন্য, অ্যান্ড্রয়েড এনডিকে ডকুমেন্টেশন দেখুন।
main/
এতে "প্রধান" সোর্স সেট ফাইলগুলো থাকে: অর্থাৎ অ্যান্ড্রয়েড কোড এবং রিসোর্স যা সকল বিল্ড ভ্যারিয়েন্ট ব্যবহার করে (অন্যান্য বিল্ড ভ্যারিয়েন্টের ফাইলগুলো একই ডিরেক্টরিতে থাকে, যেমন ডিবাগ বিল্ড টাইপের জন্য src/debug/ ):
AndroidManifest.xml
অ্যাপ্লিকেশনটির প্রকৃতি এবং এর প্রতিটি উপাদানের বর্ণনা দেওয়া হয়েছে। আরও তথ্যের জন্য, অ্যাপ ম্যানিফেস্ট ওভারভিউ দেখুন।
java/
এতে কোটলিন বা জাভা কোডের সোর্স কোড রয়েছে, অথবা উভয়ই থাকতে পারে, যদি আপনার অ্যাপে কোটলিন এবং জাভা উভয় সোর্স কোড থাকে।
kotlin/
এতে শুধুমাত্র কোটলিন কোড সোর্স রয়েছে।
res/
এতে অ্যাপ্লিকেশন রিসোর্স, যেমন ড্রয়েবল ফাইল এবং UI স্ট্রিং ফাইল থাকে। আরও তথ্যের জন্য, অ্যাপ রিসোর্স ওভারভিউ দেখুন।
assets/
এতে এমন সব ফাইল থাকে যা সরাসরি একটি APK ফাইলে কম্পাইল করা যায়। উদাহরণস্বরূপ, টেক্সচার এবং গেম ডেটার জন্য এটি একটি ভালো জায়গা। আপনি একটি সাধারণ ফাইল সিস্টেমের মতোই URI ব্যবহার করে এই ডিরেক্টরিতে নেভিগেট করতে পারেন এবং AssetManager ব্যবহার করে ফাইলগুলোকে বাইটের স্ট্রিম হিসেবে পড়তে পারেন।
test/
এতে আপনার হোস্ট JVM-এ চালিত স্থানীয় পরীক্ষার কোড রয়েছে।
build.gradle অথবা build.gradle.kts (মডিউল)
এটি মডিউল-ভিত্তিক বিল্ড কনফিগারেশন নির্ধারণ করে। আপনি যদি আপনার বিল্ড স্ক্রিপ্ট ল্যাঙ্গুয়েজ হিসেবে Groovy ব্যবহার করেন, তাহলে সঠিক ফাইলের নাম হবে build.gradle , এবং যদি Kotlin স্ক্রিপ্ট ব্যবহার করেন, তাহলে এটি হবে build.gradle.kts
build.gradle অথবা build.gradle.kts (প্রকল্প)
এটি আপনার বিল্ড কনফিগারেশন নির্ধারণ করে যা সমস্ত মডিউলের জন্য প্রযোজ্য। আপনি যদি আপনার বিল্ড স্ক্রিপ্ট ল্যাঙ্গুয়েজ হিসেবে Groovy ব্যবহার করেন, তাহলে সঠিক ফাইলের নাম হবে build.gradle , এবং যদি Kotlin স্ক্রিপ্ট ব্যবহার করেন, তাহলে এটি হবে build.gradle.kts । এই ফাইলটি প্রোজেক্টের জন্য অপরিহার্য, তাই এটিকে অন্যান্য সমস্ত সোর্স কোডের সাথে রিভিশন কন্ট্রোলে রক্ষণাবেক্ষণ করুন।

অন্যান্য বিল্ড ফাইল সম্পর্কে তথ্যের জন্য, আপনার বিল্ড কনফিগার করুন দেখুন।

প্রকল্পের কাঠামো সেটিংস

আপনার অ্যান্ড্রয়েড স্টুডিও প্রজেক্টের বিভিন্ন সেটিংস পরিবর্তন করতে, ফাইল > প্রজেক্ট স্ট্রাকচার-এ ক্লিক করে প্রজেক্ট স্ট্রাকচার ডায়ালগটি খুলুন। এতে নিম্নলিখিত বিভাগগুলি রয়েছে:

  • প্রজেক্ট: গ্রেডল ও অ্যান্ড্রয়েড গ্রেডল প্লাগইনের ভার্সন এবং রিপোজিটরি লোকেশনের নাম নির্ধারণ করে।
  • এসডিকে অবস্থান: আপনার প্রজেক্টে ব্যবহৃত জেডিকে, অ্যান্ড্রয়েড এসডিকে এবং অ্যান্ড্রয়েড এনডিকে-এর অবস্থান নির্ধারণ করে।
  • ভেরিয়েবল: এর মাধ্যমে আপনি আপনার বিল্ড স্ক্রিপ্টে ব্যবহৃত ভেরিয়েবলগুলো সম্পাদনা করতে পারবেন।
  • মডিউল: এটি আপনাকে মডিউল-নির্দিষ্ট বিল্ড কনফিগারেশন সম্পাদনা করার সুযোগ দেয়, যার মধ্যে রয়েছে টার্গেট ও মিনিমাম SDK, অ্যাপ সিগনেচার এবং লাইব্রেরি ডিপেন্ডেন্সি। প্রতিটি মডিউলের সেটিংস পেজ নিম্নলিখিত ট্যাবগুলিতে বিভক্ত:
    • প্রোপার্টিজ: মডিউলটি কম্পাইল করার জন্য ব্যবহৃত SDK এবং বিল্ড টুলসের সংস্করণগুলো নির্দিষ্ট করে।
    • স্বাক্ষর: আপনার অ্যাপে স্বাক্ষর করার জন্য ব্যবহৃত সার্টিফিকেটটি নির্দিষ্ট করে।
  • নির্ভরতা: এই মডিউলের জন্য লাইব্রেরি, ফাইল এবং মডিউল নির্ভরতার তালিকা এখানে দেওয়া আছে। আপনি এই প্যান থেকে নির্ভরতা যোগ, পরিবর্তন এবং মুছে ফেলতে পারেন। মডিউল নির্ভরতা সম্পর্কে আরও তথ্যের জন্য, ‘বিল্ড ভ্যারিয়েন্ট কনফিগার করুন’ দেখুন।

  • বিল্ড ভ্যারিয়েন্টস: এর মাধ্যমে আপনি আপনার প্রোজেক্টের জন্য বিভিন্ন ফ্লেভার ও বিল্ড টাইপ কনফিগার করতে পারবেন।

    • ফ্লেভার: আপনাকে একাধিক বিল্ড ফ্লেভার তৈরি করার সুযোগ দেয়, যেখানে প্রতিটি ফ্লেভার কিছু কনফিগারেশন সেটিংস নির্দিষ্ট করে, যেমন মডিউলটির সর্বনিম্ন ও টার্গেট SDK ভার্সন এবং ভার্সন কোড ও ভার্সনের নাম

      উদাহরণস্বরূপ, আপনি এমন একটি ফ্লেভার নির্ধারণ করতে পারেন যার সর্বনিম্ন SDK ২১ এবং লক্ষ্যমাত্রা SDK ২৯, এবং আরেকটি ফ্লেভার যার সর্বনিম্ন SDK ২৪ এবং লক্ষ্যমাত্রা SDK ৩৩।

    • বিল্ড টাইপস: এটি আপনাকে বিল্ড কনফিগারেশন তৈরি এবং পরিবর্তন করার সুযোগ দেয়, যেমনটি 'বিল্ড ভ্যারিয়েন্ট কনফিগার করুন' অংশে বর্ণনা করা হয়েছে। ডিফল্টরূপে, প্রতিটি মডিউলের ডিবাগ এবং রিলিজ বিল্ড টাইপ থাকে এবং প্রয়োজন অনুযায়ী আপনি আরও টাইপ নির্ধারণ করতে পারেন।