فصل سوم : ساخت پروژه در اندروید استودیو، بررسی محیط توسعه و ساختار کلی پروژه

به نام خدا. در این جلسه قصد دارم شما را با محیط اندروید استودیو، ساخت پروژه اندروید و ساختار آن آشنا کنم.

ساخت پروژه اندروید

پنجره اصلی اندروید استودیو

در جلسه قبل با این پنجره آشنا شدیم. ساخت پروژه را آغاز می کنم.

ساخت پروژه اندروید

فیلد Application name مربوط به نام اپلیکیشن است که من نام MyShop را در نظر گرفتم. این نام به همراه آیکون اپلیکیشن به کاربر نمایش داده می شود.
Company domain: اپلیکیشن های شما و سایر توسعه دهندگان اندروید در اپ استورهایی مانند گوگل پلی ، بازار و … بر اساس Package name آنها تشخیص داده و تفکیک می شوند و نام اپلیکیشن ملاک نیست (به عنوان مثال ممکن است چندین اپلیکیشن با نام Shop در مارکتها موجود باشد). دلیل این است تا در هنگام بروزرسانی اپلیکیشن ها توسط کاربر، تداخل بین چند اپلیکیشن بوجود نیاید و اپ استور بتواند برنامه های نصب شده روی دیوایس کاربر را از یکدیگر تشخیص بدهد. به عنوان مثال من در قسمت Company domain ، عبارت android-studio.ir را وارد می کنم. مشاهده می کنید که در قسمت نام پکیج، عبارت ir.android_studio.myshop قید شده. مزیت دامین در این است که اپلیکیشن های توسعه داده شده هر فرد یا شرکت، یک Package name مختص خود را خواهد داشت. اما به این معنا نیست که الزاما باید یک دامین حقیقی با مالیکت خودتان داشته باشید. می توانید یک دامین دلخواه وارد کنید (البته استفاده از دامینی که در اختیار شخص یا شرکت دیگری است مسلما گزینه مناسبی نیست!). در قسمت Project Location مسیر ذخیره پروژه را مشخص کرده، به مرحله بعد می روم.

Minimum SDK & Target SDK

در این مرحله چندین گزینه در اختیار داریم. گزینه Phone and Tablet برای توسعه اپلیکیشن های تلفن همراه و تبلت ، Wear برای اپلیکیشن گجت های پوشیدنی که از سیستم عامل Android Wear استفاده می کنند (مانند ساعت های هوشمند)، TV که برای اپلیکیشن های تلویزیون های هوشمند اندرویدی بکار می رود و Android Auto که برای ساخت اپلیکیشن برای اتومبیل های با سیستم اندروید استفاده می شود.
با توجه به اینکه هدف من ساخت اپلیکیشن برای موبایل و تبلت هست، گزینه اول را انتخاب می کنم.بعد از این انتخاب، باید Minimum SDK پروژه ام را تعیین کنم. واژه Minimum به معنی حداقل بوده و در اینجا به این معنی است که باید تعیین کنم اپلیکیشن من پایین ترین نسخه اندرویدی که پشتیبانی خواهد کرد کدام API است. به عنوان مثال اگر API 10 (Android 2.3.3) را انتخاب کنم، اپلیکیشن روی نسخه های پایین تر از ۲٫۳٫۳ امکان نصب را نخواهد داشت. علت الزامی بودن تعیین مینیمم هم این است که در هر نسخه جدید از اندروید، امکانات و قابلیتهایی اضافه می شود که اگر این امر را لحاظ نکنیم، ممکن است دارندگان دیوایس با نسخه های پایین تر در مواردی با مشکلاتی مواجه شوند. با انتخاب هر گزینه به عنوان مینیمم، اطلاعاتی در مورد آن API و سطح گستردگی آن نمایش داده می شود. در زمان نگارش این متن، API 10 حدودا ۱۰۰% دیوایس های اندرویدی را پوشش می دهد و نیازی نیست از API پایینتری استفاده کنم. با کلیک روی گزینه Help me choose به نمودار کاملی در این خصوص دسترسی خواهید داشت.
نکته: در فصل قبل با SDK و همچنین Platform ها آشنا شدیم و دانستیم که با انتشار هر نسخه از اندروید، API آن نیز منتشر می شود. هر پروژه اندرویدی در سه ویژگی compileSdkVersion، targetSdkVersion و minSdkVersion با Platform ها سروکار دارد. در حالت عادی هنگامی که پروژه جدیدی می سازیم دو ویژگی اول یعنی کامپایل و نسخه هدف (Target) آخرین API نصب شده و ویژگی Minimum همان API ای است که در این مرحله انتخاب می کنیم. بنابراین لازم است همواره آخرین API منتشر شده و همچنین API ای که قصد داریم به عنوان Minimum انتخاب کنیم را نصب داشته باشیم. البته در تعدادی از منابع عنوان شده داشتن API مرتبط با MinimumSDK الزامی نیست، با این حال تا لحظه نگارش این مبحث من به نتیجه قطعی نرسیده ام لذا جانب احتیاط را رعایت می کنم.

انتخاب Activity

اپلیکیشن ها از تعدادی Activity تشکیل شده اند که کاربر محتویات را در قالب این اکتیویتی ها مشاهده کرده و با آنها تعامل دارد. من ساده ترین اکتیویتی یعنی Empty Activity را انتخاب می کنم.

نامگذاری اکتیویتی

هر اکتیویتی از دو بخش “کدهای جاوا” و “رابط کاربری یا Layout (لایه ظاهری)” تشکیل شده است که برای هرکدام باید نام جداگانه ای درنظر گرفت. اکتیویتی که در مرحله قبل انتخاب کردم را در این مرحله می بایست نامگذاری کنم که اندروید استودیو به صورت پیش فرض نامهایی تعیین کرده و نیازی به تغییر ندارد. MainActivity نام فایل مربوط به کدهای جاوا و Layout Name نیز مربوط به لایه ظاهری اکتیویتی است.

بیلد شدن پروژه

حالا منتظر می مانم تا پروژه بیلد (Build) شود. با توجه به سخت افزار سیستم ممکن است این مرحله چند ثانیه تا یک دقیقه یا بیشتر زمان ببرد (ضمن اینکه عموما در ساخت اولین پروژه این مرحله اندکی طولانی تر می شود).
در حین این پروسه با واژه Gradle برخورد می کنیم. بد نیست اطلاعات مختصری در خصوص گریدل بدانیم. به یاد داشته باشید یک برنامه نویس و توسعه دهنده باید فراتر از الزامات مربوط به زبان برنامه نویسی و مباحث فنی بکار رفته در روند توسعه نرم افزار اطلاعات داشته باشد. این یک امتیاز منفی برای شما محسوب خواهد شد اگر شما را به عنوان یک توسعه دهنده اندروید بشناسند اما به عنوان مثال ندانید لینوکس چیست که اندروید بر پایه آن ساخته شده، یا گریدل که در محیط اندروید استودیو بکار رفته چه کاربردی دارد!
گریدل یک بیلد سیستم (Build System) متن باز است که به زبان Groovy نوشته شده و گوگل در سال ۲۰۱۳ اعلام کرد که از این بیلد سیستم برای کامپایل کدها در اندروید استودیو استفاده می کند.
بهتر است به چند خط توضیح بنده کفایت نکرده و چند دقیقه ای را در خصوص گریدل در وب مطالعه کنید.
نکته: ممکن است در انتهای بیلد شدن پروژه ارور یا ارورهایی (عموما مربوط به عدم امکان نصب تعدادی کتابخانه مورد نیاز پروژه) دریافت کنید (به خصوص در ساخت اولین پروژه ها) که از ارائه توضیحات در اینجا اجتناب نموده و شما را به صفحه مشکلات و پرسش های رایج ارجاع می دهم:
باید عادت کنید تا پرسیدن مستقیم مشکلات و مسائلی که در حین ساخت و توسعه پروژه با آنها برخورد می کنید، مرحله آخر باشد. تقریبا ۹۹% مشکلات شما، قبلا مشکل افراد دیگری هم بوده که آن را در فروم ها و وب سایتهایی از جمله stackoverflow.com عنوان کرده و افراد دیگری هم پاسخ یا پاسخهایی ارائه داده اند. لذا با مراجعه به صفحاتی مشابه صفحه پرسش های رایج وب سایت ما و در ادامه آن جستجوی خطاهای دریافتی در گوگل، در اکثر مواقع به پاسخهای جامع و کاملی می رسید که نیاز شما به پرسش از افراد و منتظر ماندن برای دریافت پاسخ بی نیاز می کند. تعداد زیادی از سوالاتی که کاربران از من می پرسند را به تاپیک های مرتبط با آن موضوع در stackoverflow.com ارجاع می دهم. تاپیکهایی که چندین نفر در آن راهکار و توضیحات خود را ارائه داده و در انتها کاربر به پاسخ جامع و کاملی می رسد.

بیلد شدن پروژه

در نهایت پروژه با موفقیت ساخته شد و دو فایل MainActivity.java و activity_main.xml که مربوط به اکتیویتی هستند به صورت باز شده نمایش داده شده است. توصیه می کنم چند دقیقه ای را در رابطه با xml در وب مطالعه کنید.

محیط توسعه اندروید

میانبرها

دکمه های بالا میانبرهایی هستند که تا این جلسه به بررسی آنها پرداخته ایم.
شماره ۱: اجرا (Run) کردن پروژه روی دیوایس مجازی یا حقیقی
شماره ۲: در نسخه ۲ قابلیت Instant Run به اندروید استودیو اضافه شد. تفاوت این ویژگی با Run در این است که در هنگامی که پروژه در حال Run هست و تغییراتی را اعمال کرده اید، با استفاده از این گزینه فقط تغییرات بر روی دیوایس اعمال شده و نیازی به اجرای دوباره و کامل پروژه نیست که در نتیجه مدت زمان این پروسه کاهش می یابد.
شماره ۳: شبیه ساز پیش فرض اندروید (AVD)
شماره ۴: برای Sync (سینک یا همگام سازی) کردن پروژه بکار می رود
شماره ۵: دسترسی به SDK Manager
منوها و همچنین سایر گزینه ها در جلسات آتی معرفی می شود.
ساختار پروژه را بررسی می کنیم.

ساختار پروژه اندرویدی

در زیرمجموعه java دو پوشه قرار دارد که عبارت (androidTest) و (test) در مقابلشان ذکر شده. من به اینها نیازی ندارم و برای خلوت شدن محیط کار، هردو را حذف می کنم (در مرتبه اول delete فقط محتویات درون پوشه ها حذف شده و خود پوشه باقی می ماند که با انتخاب و حذف مجدد، کاملا حذف می شود):

ساختار پروژه اندرویدی

در سمت چپ محیط برنامه نویسی، فولدر app را با زیرشاخه های manifests، java و res مشاهده می کنید. (برای باز کردن فایلها کافیست روی آنها دابل کلیک شود).
Manifest : اطلاعات ضروری و پایه هر اپلیکیشن در داخل این فایل ذخیره می شود.

AndroidManifest

به عنوان مثال اطلاعاتی که در ابتدای کار قابل مشاهده هست، نام پکیجی که موقع ساخت پروژه تعریف کردیم (لاین ۳) ، آیکون اپلیکیشین (لاین ۷) ، نام اپلیکیشن (لاین ۸) ، اکتیویتی تعریف شده در ابتدای کار و … .
Java: کلاس های جاوا در این پوشه قرار می گیرند.
res: این دایرکتوری شامل منابع مختلفی می باشد:
– Drawable: شامل تصاویر مورد استفاده در اپلیکیشن ، برخی فایل های xml مانند بیت مپ ها و … که از طریق کلاس R.drawable قابل دسترسی هستند.
– Layout: که شامل لایه های طراحی واسط کاربری هست (مانند activity_main.xml) که از طریق کلاس R.layout قابل دسترسی می باشند.
– mipmap: تصاویر مربوط به آیکون اپلیکیشن در این پوشه قرار می گیرد.
– Values: فایل های xml با محتوای آرایه ها (strings.xml) ، استایل ها (styles.xml) ، رنگ ها (colors.xml) ، ابعاد (dimens.xml) و … در این دایرکتوری قرار می گیرند.

build.gradle

در نهایت دو فایل build.gradle را معرفی می کنم.
فایل اول که در مقابل آن Project نوشته شده مربوط به تنظیمات کلی پروژه بوده و معمولا کاری با آن نداریم. Jcenter() مخزنی است (آنلاین) که کتابخانه های مورد نیاز پروژه از آن دریافت می شود.
فایل دوم (Module: app) شامل تنظیمات و اطلاعات اصلی اپلیکیشن است:

build.gradle

جزئیات مربوط به این فایل در مباحث آتی بیان خواهد شد.

دانلود فایل آموزشی با فرمت PDF
تعداد صفحات : ۱۴
حجم : ۱ مگابایت
قیمت : رایگان

سوالاتی که مشمول موارد زیر باشد تایید و پاسخ داده نخواهد شد :
۱ : جزء موارد پاسخ داده شده در مطلب "مشکلات و پرسش های رایج" باشد
۲ : سوال قبلا توسط افراد در دیدگاهها مطرح و پاسخ داده شده باشد
۳ : سوال خارج از مبحث آموزشی موجود در این صفحه باشد

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

کد امنیتی *