রহস্য: অ্যান্ড্রয়েড স্টুডিওর প্রকল্প কাঠামো এবং বিল্ড সিস্টেম
গ্র্যাডল বিল্ড সিস্টেমের কারণে এটি হয়েছে কিনা আমি জানি না (আমি এটি পেতাম) তবে আমি এখন পর্যন্ত কী বুঝতে পেরেছি তা আপনাকে জানাব।
আপডেট 4: 2014/09/11 যোগ করা হয়েছে চিট শিট জন্য BuildTypes
, Flavors
এবং Variants
(পরিশেষে আমি এই লিখতে আত্মবিশ্বাসী মনে: ডি)
আপডেট 3: 2014/09/11 Updated তুলনা ওয়ার্কস্পেস এবং প্রকল্প হতে সুনির্দিষ্ট
আপডেট 2: 2014/04/17 এএস প্রকল্প কাঠামোতে আরও বিশদ যুক্ত হয়েছে
আপডেট 1: 2013/07/29 যোগ করা ইন্টেলিজ প্রকল্পের কাঠামো
ইন্টেলিজের প্রকল্প কাঠামো (শেষে দেখানো হয়েছে) অ্যান্ড্রয়েড প্লাগইন সহ ইন্টেলিজের জন্য। অ্যান্ড্রয়েড স্টুডিওতে তবে একটি প্রকল্প কাঠামো এর মতো বিভক্ত রয়েছে:
কাঠামো: প্রকল্প এবং মডিউল
মডিউল মধ্যে অ্যান্ড্রয়েড স্টুডিও একটি মত হল প্রকল্পের মধ্যে অন্ধকার
প্রকল্পের মধ্যে অ্যান্ড্রয়েড স্টুডিও একটি মত হল কর্মক্ষেত্র মধ্যে অন্ধকার (ভালো হবে, পরস্পরের উপর নির্ভরশীল প্রকল্পগুলোতে একটি কর্মক্ষেত্র)
ডকুমেন্টেশন থেকে (অ্যান্ড্রয়েড স্টুডিও ইন্টেলিজ আইডিইএ ভিত্তিক):
আপনি ইন্টেলিজ আইডিইএ-তে যা কিছু করুন না কেন আপনি প্রকল্পের প্রসঙ্গে তা করেন। একটি প্রকল্প একটি সাংগঠনিক ইউনিট যা একটি সম্পূর্ণ সফ্টওয়্যার সমাধান উপস্থাপন করে।
আপনার সমাপ্ত পণ্যটি বিচ্ছিন্ন, বিচ্ছিন্ন মডিউলগুলির একটি সিরিজে বিভক্ত হতে পারে, তবে এটি একটি প্রকল্প সংজ্ঞা যা তাদের একত্রিত করে এবং আরও বৃহত্তর সাথে জুড়ে দেয়।
অ্যান্ড্রয়েডের জন্য, এর অর্থ প্রতি অ্যাপ্লিকেশনটির জন্য একটি প্রকল্প এবং লাইব্রেরি এবং প্রতি পরীক্ষামূলক অ্যাপ্লিকেশনের জন্য একটি মডিউল।
আপনি একই প্রকল্পের মধ্যে একাধিক অ্যাপ্লিকেশন তৈরি করার চেষ্টা করলে একাধিক সমস্যা রয়েছে। এটি সম্ভব, তবে যদি আপনি চেষ্টা করেন (যেমন আমি করেছি) তবে আপনি দেখতে পাবেন যে প্রায় প্রতিটি জিনিসই প্রতিটি প্রকল্পের জন্য একটি একক অ্যাপ্লিকেশনের সাথে কাজ করার জন্য ডিজাইন করা হয়েছে।
উদাহরণস্বরূপ, "প্রকল্পটি পুনর্নির্মাণ" করার একটি বিকল্প রয়েছে, যা একাধিক অ্যাপ্লিকেশনগুলির সাথে কোনও ধারণা রাখে না, অন্যান্য অনেক প্রকল্পের সেটিংস অকেজো হয়ে যায় এবং যখন আপনার একাধিক সংগ্রহস্থল থাকে তখন অন্তর্নির্মিত ভিসিএস সিস্টেমটি দুর্দান্ত নয়।
কাঠামো: ফোল্ডার কাঠামো
শীর্ষ স্তরের ফোল্ডার
1. প্রধান প্রকল্প
এটি পুরো প্রকল্পের প্রেক্ষাপট হবে ( Eclipse Land: আপনার কর্মক্ষেত্রের মতো তবে আপনার প্রকল্পের সাথে কী প্রাসঙ্গিক তা সীমাবদ্ধ)। উদা: HelloWorldProject
যদি আবেদন আপনি যে নামটি দিয়েছেন ছিলHelloWorld
2. .আইডিএ
এই যেখানে প্রকল্প নির্দিষ্ট মেটাডেটা অ্যান্ড্রয়েড স্টুডিও (এএস) দ্বারা সঞ্চয় করা হয়। ( গ্রহণের জমি: project.properties
ফাইল)
৩. প্রকল্পের মডিউল
এটিই আসল প্রকল্প। HelloWorld
উদাহরণস্বরূপ : আপনি যে অ্যাপ্লিকেশনটির নাম দিয়েছেন সেটি হ্যালো ওয়ার্ল্ড
৪. গ্রেডল
এই যেখানে গ্রেড বিল্ড সিস্টেমের জারের মোড়ক অর্থাৎ এই জারটি হ'ল উইন্ডোজ ইনস্টল করা গ্রেডের সাথে যোগাযোগ করে (আমার ক্ষেত্রে ওএস)।
৫. বাহ্যিক গ্রন্থাগারসমূহ
এটি আসলে কোনও ফোল্ডার নয় বরং এমন একটি জায়গা যেখানে রেফারেন্সড লাইব্রেরিগুলি ( এক্লিপস ল্যান্ড: রেফারেন্সড লাইব্রেরি) দেখানো হয়েছে। এখানে লক্ষ্যযুক্ত প্ল্যাটফর্মগুলি দেখানো হয়েছে ইত্যাদি's
[ পার্শ্ব দ্রষ্টব্য: এখানেই আমরা এক্লিপস ল্যান্ডে রেফারেন্সযুক্ত গ্রন্থাগারগুলি মুছতে এবং রেফারেন্স ত্রুটিগুলি সমাধান করার জন্য প্রকল্পের বৈশিষ্ট্যগুলি ঠিক করতাম, মনে আছে?]
বিশদে প্রকল্প ফোল্ডার
এটি উপরের তালিকার # 3 নম্বরে। নিম্নলিখিত সাব ডায়ার আছে
1. নির্মাণ
make
এটিতে প্রক্রিয়াটির সম্পূর্ণ আউটপুট থাকে যেমন ক্লাস.ডেক্স, সংকলিত ক্লাস এবং সংস্থান ইত্যাদি has
অ্যান্ড্রয়েড স্টুডিও জিইউআইতে কেবলমাত্র কয়েকটি ফোল্ডার দেখানো হয়েছে। গুরুত্বপূর্ণ অংশ যে আপনার R.java এখানে পাওয়া যায় অধীনেbuild/source/<flavor>/r/<build type(optional)>/<package>/R.java
2. libs
এই মান লিব যে আপনি যে ফোল্ডারটি দেখতে অন্ধকার জমি খুব
3. এসসিআর
এখানে, আপনি কেবলমাত্র java
এবং res
ফোল্ডারটি দেখতে পাবেন যা Eclipse Land এ src
ফোল্ডার এবং res
ফোল্ডারের সাথে সম্পর্কিত । এটি সহজ সরলকরণ আইএমএইচওকে স্বাগত জানায়।
মডিউলগুলিতে নোট:
মডিউলগুলি এক্লিপস ল্যান্ড প্রকল্পগুলির মতো। এখানে ধারণাটি হ'ল আপনার একটি অ্যাপ্লিকেশন প্রকল্প রয়েছে (উপরের তালিকার মডিউল # 3) এবং বেশ কয়েকটি গ্রন্থাগার প্রকল্প (গ্লোবাল প্রকল্প ফোল্ডারের অধীনে পৃথক মডিউল হিসাবে (উপরের তালিকার # 1)) যা অ্যাপ্লিকেশন প্রকল্প নির্ভর করে। এই অ্যাপ্লিকেশনগুলিতে অন্যান্য অ্যাপ্লিকেশনগুলিতে কীভাবে পুনরায় ব্যবহার করা যেতে পারে তা আমি এখনও খুঁজে পাইনি।
[ পার্শ্ব নোট: পুরো পুনঃ-সংস্থার কিছু সুবিধা রয়েছে যেমন এসআরসি ফোল্ডারে সরলিকরণের মতো, তবে এতগুলি জটিলতা। জটিলতাগুলি মূলত এই নতুন প্রকল্পের লেআউটে খুব বেশি পাতলা ডকুমেন্টেশন কারণে রয়েছে are ]
নতুন বিল্ড সিস্টেম
নতুন বিল্ড সিস্টেমের জন্য ব্যবহারকারী গাইড
স্বাদ এবং বিল্ডটাইপ ইত্যাদির ব্যাখ্যা - হুল্লাবালু কী সম্পর্কে?
স্বাদ এবং বিল্ডটাইপগুলির জন্য চিট শীট
BuildType: debug
এবং release
হয় buildTypes
সব প্রকল্পে ডিফল্টরূপে পাওয়া যায়। তারা বিভিন্ন এপিপি উত্পন্ন করতে একই কোড তৈরি বা সংকলনের জন্য । উদাহরণস্বরূপ, release
APK গুলিতে আপনি অগ্রগতি চালাতে চান (অবলম্বনের জন্য), আপনার কী দিয়ে এটি সাইন করুন (ডিবাগ কী হিসাবে), অপ্টিমাইজেশন চালান (সম্ভবত অগ্রগতি বা অন্যান্য সরঞ্জামের মাধ্যমে) চালিয়ে যান, কিছুটা আলাদা packageNames
ব্যবহার করুন (আমরা এর com.company.product
জন্য release
এবং এর com.company.product.debug
জন্য ব্যবহার করি debug
), ইত্যাদি। আমরা BuildConfig.DEBUG
বিল্ডগুলিতে লগক্যাটটিতে লগিং বন্ধ করার জন্য একটি ডিবাগ পতাকা ( ) ব্যবহার করি release
। এটি debug
বিকাশের সময় দ্রুত নির্মাণের পাশাপাশি release
প্লে স্টোরটিতে রাখার জন্য একটি অনুকূলিত বিল্ড তৈরি করে।
পণ্যের স্বাদ: কোনও ডিফল্ট স্বাদ উপলব্ধ নেই (বা সুনির্দিষ্টভাবে বলতে গেলে ডিফল্ট স্বাদ ফাঁকা / নামবিহীন)। বিনামূল্যে সংস্করণ বা অর্থ প্রদানের সংস্করণFlavors
হতে পারে যেখানে তাদের আলাদা আলাদা কোড রয়েছে । তারা কয়েকটি উত্স কোড ফাইল বা সংস্থানগুলির একই কোড কিন্তু বিভিন্ন সংস্করণ (বা কোনও সংস্করণ নয়) ভাগ করে।Main
বিল্ডভেরিয়েন্ট: একটি উত্সাহিতbuildVariant
APK আসলে এর সাথে মিল রাখে s তাদের নাম দেওয়া হয়েছে তাই (ক্রমানুসারে) Product Flavor
+ Build Type
=Build Variant
।
উদাহরণ 1: আপনি free
এবং paid
দুটি স্বাদ হিসাবে যদি । আপনার যে বিল্ড ভেরিয়েন্টগুলি পাবেন তা
হ'ল :
ফ্রি - ডিবাগ
ফ্রি - রিলিজ
পেইড - ডিবাগ
পেইড - রিলিজ
সুতরাং এটি 4 সম্ভাব্য এপিএল কনফিগারেশন। কয়েক কনফিগারেশনের একটি নির্দিষ্ট প্রকল্পে অর্থে দেখা যায় না পারে, কিন্তু তারা হয় পাওয়া যায়।
উদাহরণ 2: (নতুন প্রকল্পগুলির জন্য / স্বাদ নেই) buildVariants
আপনার ডিফল্ট স্বাদটি নামহীন / ফাঁকা হওয়ায় আপনার 2 বা APK উপলব্ধ রয়েছে:
ডিবাগ
রিলিজ
.Idea (1) ফোল্ডারে মূলত অভ্যন্তরীণ ইন্টেলিজ আইডিইএ সম্পর্কিত তথ্য সহ বেশ কয়েকটি সাবফোল্ডার রয়েছে।
Src (2) ফোল্ডারে MyActivity.java (3) ফাইল উত্স কোড রয়েছে যা আপনার অ্যাপ্লিকেশনটির কার্যকারিতা কার্যকর করে। ফাইলটি com.example প্যাকেজের অন্তর্গত।
রেজ (4) ফোল্ডারে বিভিন্ন চাক্ষুষ সংস্থান রয়েছে।
লেআউট / মেইন.এমএমএল ফাইল (5) বিভিন্ন ধরণের সংস্থার দ্বারা গঠিত অ্যাপ্লিকেশনটির উপস্থিতি নির্ধারণ করে।
মান ফোল্ডার (6) বিভিন্ন ধরণের সংস্থান বর্ণনা করে এমন .xML ফাইলগুলি সঞ্চয় করার উদ্দেশ্যে। বর্তমানে, ফোল্ডারে স্ট্রিং রিসোর্স সংজ্ঞা সহ একটি স্ট্রিং.এক্সএমএল ফাইল রয়েছে। আপনি একটি রঙ যুক্তকরণ বিভাগ থেকে দেখতে পাবেন, লেআউট ফোল্ডারে এছাড়াও রঙের বিবরণকারী থাকতে পারে।
অঙ্কনযোগ্য ফোল্ডারে (7) চিত্র রয়েছে।
জনক (8) ফোল্ডারের রয়েছে R.java (9) যে ফাইলটি লিঙ্ক চাক্ষুষ সম্পদ ও জাভা সোর্স কোড। যেমন আপনি নীচের বিভাগগুলি থেকে দেখবেন, ইন্টেলিজ আইডিইএ স্থিতিশীল সংস্থান এবং আর জাভা মধ্যে শক্ত সংহতকরণ সমর্থন করে। যত তাড়াতাড়ি কোনও সংস্থান যোগ করা বা অপসারণ করা হবে, ততক্ষণে আর.জাবায় সম্পর্কিত ক্লাস এবং শ্রেণি ক্ষেত্রগুলি স্বয়ংক্রিয়ভাবে উত্পন্ন বা ততক্ষণে সরানো হবে। আর জাভা ফাইলটিও com.example প্যাকেজের অন্তর্গত।