مترجم: حبیب الله علیخانی
منبع: راسخون
منبع: راسخون
در بخش 6 اولین پروژه ی اندروید را با ADT ورژن پایین تر ساختیم. اما ADT بالاتر کمی متفاوت است به همین دلیل، در این بخش می خواهیم اولین پروژه را در ADT 23 ایجاد کنیم.
1- ابتدا به مسیر زیر می رویم :
بعد از انتخاب Android Application Project پنجره زیر نمایش داده می شود:
در بخش Application Name نام اپلیکیشن را (First Project ) وارد کنید(لازم به ذکر است که رایج است اولین حرف نام اپلیکیشن می بایست با حرف بزرگ نوشته شود). نام ورودی در Application nameنامی است که پس از نصب اپلیکیشن روی یک تبلت یا تلفن همراه در معرض دید کاربر قرار خواهد گرفت.
در بخشProject Name به معنی "نام پروژه" می بینیم که نام First Project وارد شده است. در حقیقت این همان نامی است که در بخش Application name وارد کردیم با این تفاوت که کلیه Space ها حذف شده اند. در واقع این نام، نامی است که از آن طریق پروژه ما روی کامپیوتر ذخیره خواهد شد و در ایکلیپس پروژه ما به این نام شناخته خواهد شد. بنابراین قسمت دوم (Project Name) را بدون تغییر بگذارید.
در بخش Package name نام com.example.firstproject به صورت خودکار وارد شده است اما این در حالی است که با این نام به هیچ وجه نخواهیم توانست به ادامه ساخت پروژه خود بپردازیم چرا که بخشی از این نام که com.example است حتماً بایستی با نامی دیگر جایگزین شود. در اینجا برای رفع این مشکل نام فوق را به نام com.Android.firstproject تغییر می دهیم.
در کل برای نامگداری بسته ها از وارونه نام دامنه (Domain) شرکت استفاده کنید. مثلاً اگر در شرکت Software Company کار می کنید و نام دامنه شرکت شماwww.company.com است، بسته های خود را با com.company آغاز کنید. به دلیل این که نام دامنه ها در جهان یکتا هستند، نامگذاری بسته های شما و در نتیجه کلاس های شما نیز یکتا خواهد بود. حالا برای اندروید، یک قسمت دیگر هم باید به نام بسته اضافه کنیم: نام برنامه. برای برنامه First Project نام دامنه را به این شکل تعریف می کنیم:ir.smartlab.android.fistproject . این نام بسته کاملاً منحصر به فرد است زیرا دامنه منحصر به فرد است و اگر نام برنامه را هم منحصر به فرد انتخاب کنیم، نام بسته که به عنوان شناسه برنامه ها در اندروید به کار می رود نیز همیشه یکتا خواهد بود.
احتمالاً برایتان سؤال پیش آمده که اگر نام بسته یکتا نباشد چه اتفاقی می افتد؟ خیلی ساده است؛ اندروید اجازه نصب دو برنامه با نام بسته یکسان در یک دستگاه را نمی دهد! البته بازارهای برنامه های اندروید مثل Google Play و کافه بازار هم اجازه انتشار دو برنامه با نام بسته یکسان را نمی دهند. پس در انتخاب نام بسته دقت کنید.
در بخش Minimum required SDK به معنی "حداقل SDK مورد نیاز" گزینه API 7: Android 2.1 (Éclair) را در این پروژه انتخاب می کنیم(در اینجا چون من روی سیستم خود API 8 را نصب کرده ام، API 8 را انتخاب کرده ام). این بدان معنا است که اپلیکیشن ما برای آنکه اجرا شود حداقل به API سطح 7 نیاز دارد به عبارت دیگر این اپلیکیشن روی تلفن همراهی اجرا خواهد شد که نسخه اندروید آن Éclair باشد)برای آشنایی بیشتر با نام ها و سطوح API اندروید به آموزش اول که مقدمه می باشد، مراجعه نمایید و برای توضیح بیشتر در این مورد به انتهای این بخش رجوع کنید(.
در بخش Target SDK نیز گزینه API 7: Android 2.1 (Éclair) را انتخاب می کنیم. کاری که Target SDK انجام می دهد این است که به محیط برنامه نویسی اندروید دستور می دهد تا API سطح 7 را برای توسعه اپلیکیشن ما در نظر بگیرد)نام دیگر Target SDK در دیگر محیط های برنامه نویسی Build SDK می باشد( در واقع در بسیاری از برنامه ها از API های یکسانی هم برای Minimum SDK و Target SDK استفاده می شود. با انتخاب این گزینه این تضمین را ایجاد می کنیم که اپلیکشن طراحی شده در تلفن های همراهی با نسخه اندروید Éclair به خوبی کار خواهد کرد.)نکته ای که در اینجا می بایست حتما مد نظر قرار داده شود این است که Target SDK به هیچ وجه نمی تواند از Minimum SDK کوچک تر باشد(.
در بخش Compile with نسخه ای از API را مشخص خواهیم کرد که بر آن اساس برنامه ما Compile خواهد شد.
در بخش Theme قادر خواهیم خواهیم بود تا تم اپلیکیشن خود را مشخص کنیم. به عبارت دیگر خواهیم توانست تم هایی با طرح های روشن و تیره برای اپلیکیشن خود انتخاب کنیم( اما اگر قصد داشته باشیم یک اپلیکیشن ساده طراحی کنیم، گزینه None به معنی "هیچ کدام" را انتخاب می کنیم).
در این مرحله پنجره مربوط به ساخت پروژه جدید می بایست به شکل زیر باشد:
در آخر دکمه Next را بزنید تا به مرحله بعد برویم:
در پنجره ی زیر، چنانچه گزینه Create custom launcher icon را تیک بزنیم، قادر خواهیم بود تا تنظیمات مربوط به آیکون اپلیکیشن مان به توجه به سلیقه شخصی خود تغییر دهیم و به جای آیکون پیش فرض اندروید که یک ربات سبز رنگ است از تصاویر دیگری استفاده کنیم اما از آنجا که این کار را پس از ساخت پروژه نیز می توانیم انجام دهیم، تیک این گزینه را بر می داریم تا همان آیکون پیش فرض در نظر گرفته شود)این آیکون پیش فرض یا هر تصویر دیگری که به جای آن در توسعه اپلیکیشن خود استفاده کنیم چیزی است که پس از نصب روی تلفن همراه و یا تبلت ما قابل رویت خواهد بود و با زدن روی آن وارد برنامه خواهیم شد(.
همانطور که قبلا توضیح داده شد، هر صفحه ای از اپلیکیشن اندروید که باز می شود به منزله یک Activity است. از آنجا که هر اپلیکیشن اندروید می بایست حداقل دارای یک Activity باشد، با تیک دار کردن گزینه Create activity می خواهیم که این کار را به صورت خودکار برای ما انجام دهد. در مراحل بعدی خواهیم توانست برای Activity خود نامی دلخواه انتخاب نماییم.
گزینه Mark this project as a library این امکان را به ما می دهد تا پروژه های خود را تبدیل به Library هایی کنیم که این قابلیت را دارا هستند تا در دیگر برنامه ها مورد استفاده قرار گیرند. از آنجا که در این قسمت از آموزش به اینکار نیازی نیست، این گزینه را تیک نمی زنیم.
اکنون دکمه Next را زده و پنجره ای به شکل زیر مشاهده خواهیم کرد:
در این مرحله می توانید چیزی را تغییر ندهید.
دکمه Next را بزنید تا به مرحله بعد برویم:
در پنجره ی زیر، از ما می خواهد تا نمای ظاهری Activity یی برنامه را مشخص نماییم. از آنجا که در این آموزش قصد داریم تا پروژه ای ساده طراحی کنیم، گزینه اول تحت عنوان Blank Activity را انتخاب کرده :
دکمه Next را بزنید تا به مرحله بعد برویم:
در این مرحله در پنجره ی زیر، هم می توانید چیزی را تغییر ندهید. دکمه Finish را بزنید .
نحوه نامگذاری Activity ها در اندروید
همانطور که ملاحظه می شود می بایست در این مرحله در قسمت Activity Name نامی برای Activity خود در نظر بگیریم. نکته ای که در ارتباط با نام Activity ها همواره می بایست مد نظر قرار دهیم این است که نام آنها می بایست با حرف بزرگ شروع شود و چنانچه نام Activity ما بیش از یک کلمه بود می توان از ساختار camelCase استفاده کرد. همانطور
که در تصویر فوق ملاحظه می شود به صورت خودکار نام MainActivity را به معنی Activity اصلی در نظر گرفته است. از آنجا که هر اپلیکیشن اندروید با یک Activity اولیه شروع می شود، بهتر است نام چنین Activity یی نامی گویا باشد. از این رو نام های MainActivity و Main و این دست نام ها پیشنهاد می شود. در این پروژه نام پیش فرض را مورد استفاده قرار خواهیم داد.
نحوه نامگذاری Layout ها در اندروید
سپس در بخش Layout Name می بایست نامی را برای فایل XML خود که همان UI یا "رابط گرافیکی" اپلیکیشن ما است مشخص نماییم. نکته ای که در اینجا می بایست همواره مد نظر قرار دهیم این است که در نامگذاری Layout برنامه خود فقط می توانیم از حروف کوچک استفاده کنیم و چنانچه نام Layout ما از چند واژه تشکیل شده بود می توانیم از _ استفاده کنیم. به طور مثال در تصویر فوق نام activity_main به طور پیش فرض در نظر گرفته شده است که در این پروژه نام main را
مورد استفاده قرار خواهیم داد.
در این مرحله کار تنظیمات اولیه به اتمام رسیده و می توانید دکمه Finish را بزنید.
بعد از ساخته شدن پروژه، صفحه زیر را خواهید دید:
اولین پروژه شما ساخته شده است. اولین برنامه را نوشتیم و بر روی شبیه ساز اجرا کردیم. حالا نوبت آن است که ببینیم برنامه ای که ساخته ایم از چه اجزایی تشکیل شده است. هر برنامه اندروید، تعدادی صفحه مختلف است که کاربر می تواند بین آنها حرکت (Navigate) کند. به ساختار پروژه ای که در قبل ساخته ایم دقت کنید:
1- Package Explorer
گاهی اوقات قسمت Package Explorer به صورت زیر است(این تصویر یک پروژه ی دیگر است):
در نسخه های اخیر Android SDK وقتی یک پروژه اندروید می سازید، در واقع دو پروژه در اکلیپس ساخته می شود که یکی از آنها یک برنامه کتابخانه است. در واقع برنامه اصلی (در اینجا HelloWorld) برای اجرا نیاز به برنامه کتابخانه (در اینجا appcompat_v7) دارد.
قسمت های اصلی این بخش به شرح زیر است:
• src: این شاخه شامل کلیه کدهای برنامه است. همانطور که می دانید در برنامه های جاوا کلاس ها درون بسته (package) تعریف می شوند. در این شاخه کلیه بسته های برنامه را می بینید که با باز کردن هر کدام از آنها کلاس های داخل آنها را می توانید ببینید. در برنامه First Project فقط یک کلاس وجود دارد که همان MainActivity است. در قسمت های بعدی درباره Activity ها که یکی از اصلی ترین اجزای هر برنامه اندروید است، بیشتر آشنا می شوید.
• gen: هر برنامه اندروید که ساخته می شود، کلاسی دارد به نام R. این کلاس به صورت خودکار ساخته می شود و شما نباید محتوای آن را تغییر دهید زیرا با هر بار اجرای برنامه، این کلاس دوباره ساخته می شود. این کلاس در شاخه gen (مخفف generated) قرار دارد.
• assets: بعضی برنامه ها ممکن است فایل هایی داشته باشند که در داخل برنامه به آنها نیاز است. مثلاً برنامه می تواند شامل انواع فونت های مختلف باشد یا یک پایگاه داده که از قبل ساخته شده و با داده پر شده است یا تعدادی فایل HTML و جاوااسکریپت و CSS یا فایل های PDF و … این شاخه برای ذخیره این فایل ها است. این فایل ها در فایل apk برنامه (فایلی که در دستگاه های اندرویدی نصب می شود) قرار می گیرند.
• bin: نام این شاخه مخفف binary است و فایل هایی که بعد از ساخت (build) برنامه ساخته می شوند در آن قرار داده خواهند شد. یکی از این فایل ها apk برنامه است.
• libs: اگر برنامه برای کامپایل و اجرا نیاز به کتابخانه های جاوا یا C و C++ داشته باشد، فایل های jar کتابخانه را در این شاخه کپی می کنیم. به صورت پیش فرض در این شاخه یک کتابخانه به نام android-support-v4.jar قرار دارد.
• res: هر برنامه اندروید، تشکیل شده است از تعدادی صفحات که کاربر می بیند و با آنها تعامل دارد. برای طراحی رابط کاربری این صفحات، به فایل هایی از انواع مختلف نیاز داریم. مثلاً تصاویر، فایل های صوتی و تصویری، صفحات چیدمان (layout) (که ترتیب قرار گرفتن عناصر برنامه در صفحه را مشخص می کنند)، منوها، انیمیشن ها، ترجمه های مختلف برنامه برای زبان های مختلف، تنطیمات و … همه این عناصر در این شاخه قرار می گیرند.
• AndroidManifest.xml: این فایل محل تنظیم اصلی ترین اطلاعات برنامه است. هر چیزی که در اندروید ایجاد می کنیم، باید اینجا هم تعریف کنیم. مجوزهایی که برنامه نیاز دارد، اینجا تعریف می شود و …
حالا اصلی ترین اجزای برنامه First Project را در اینجا معرفی می کنیم:
2- طراح گرافیکی (Graphical Designer):
3- جعبه ابزار (Palette):
4- ایجاد یک شبیه ساز اندروید
قبل از اجرای برنامه باید یک شبیه ساز داشته باشید تا برنامه ی ما روی آن شبیه سازی شود. البته اگر نخواهید از گوشی اندرویدی استفاده کنید. یعنی میتوانید گوشی را از طریق کابل به سیستم وصل کنید و آن را به IDE کانکت کنید و برنامه را روی گوشی اجرا کنید(در آینده این مطلب را توضیح خواهیم داد). نحوه ی ایجاد دستگاه شبیه ساز را در یکی از بخش های گذشته توضیح داده بودیم. با استفاده از شبیه ساز می توانید برنامه خود را بر روی آن اجرا کنید.
5- اجرای برنامه
برای اجرای برنامه بر روی دکمه Run مشابه عکس زیر کلیک کنید یا گزینه Run را از منوی Run انتخاب کنید یا Ctrl+F11 را بزنید یا در پنجره Package Explorer بر روی پروژه کلیک راست کرده و گزینه Run as و سپس Android Application را انتخاب کنید:
سپس برای اولین بار پنجره زیر را می بینید که از شما می پرسد پروژه ی خود را به چه شیوه ای اجرا کنید. Android Application را انتخاب کنید و OK را بزنید:
اجرای برنامه بسته به سرعت سیستمتان زمان می برد. بعد از آن برنامه ای که ساخته اید در شبیه ساز به شکل زیر اجرا خواهد شد:
بررسی سه کلاس مهم:
1- کلاس چیدمان(layout) main.xml: این فایل شاخه res/layout قرار دارد. این فایل یک صفحه از برنامه اندرویدی First Project (و در اصل تنها صفحه آن) است. اگر آن را باز کنید، این صفحه را در محیط طراحی گرافیکی اندروید به شکل زیر خواهید دید:
اگر بخواهیم کد XML این صفحه را ببینم باید از پایین صفحه سمت چپ، بر روی زبانه main.xml کلیک کنیم و اگر دوباره خواستیم به محیط طراحی گرافیکی برگردیم، زبانه Graphical Layout را کلیک می کنیم:
کد XML که این صفحه را می سازد به شکل زیر است:
2- کلاس MainActivity : این کلاس جاوا که در شاخه src و در داخل بسته (package) اصلی برنامه قرار دارد شامل یک کلاس با چندین متد است. به کد این کلاس دقت کنید:
همانطور که می بینید این کلاس، کلاس Activity را توسعه داده است (یا به عبارتی از طریق کلمه ی کلیدی extends از آن ارث برده است). Activity یکی از اصلی ترین اجزای برنامه نویسی اندروید است. هر صفحه ای که در برنامه های اندرویدی می بینید، در اصل یک Activity است. کد و برنامه ی آن در یک فایل جاوا و چیدمان(layout) آن در یک فایل xml قرار دارد.
از میان متدهای این کلاس، مهم ترین متد، onCreate است:
خط دوم این متد را ببینید. این خط مهم ترین بخش این کلاس است. این خط، این Activity را به چیدمانی که قبلاً ساخته شده است مرتبط می کند. یعنی می گوید طرحی که این صفحه قرار است به کاربر نمایش دهد در فایلی به نام main که در شاخه layout در منابع (res) قرار دارد. اینجا اولین کاربرد کلاس R که بعدا درباره اش می گوییم را می بینید.
3- کلاس AndroidManifest.xml: اگر این فایل را باز کنید، صفحه طراحی مخصوص این فایل را می بینید:
نکات زیادی درباره این فایل و تنطیمات یک برنامه اندروید وجود دارد. ولی آنچه فعلاً برای ما مهم است، چند مورد بیشتر نیست. زبانه AndroidManifest.xml را باز کنید تا سری به کد XML این فایل بیاندازیم:
در واقع این فایل شامل همه تنظیماتی است که در ویزارد ایجاد یک پروژه اندروید در مرحله ی قبل انجام دادیم. حال به ترتیب از بالا به پایین مهم ترین نکات این تنطیمات را تشریح می کنیم.
1- package برنامه:
هر برنامه اندروید باید به صورت یکتا توسط اندروید شناسایی شود. این شناسه منحصر به فرد اسم بسته اصلی برنامه است. در ویزارد ایجاد یک پروژه جدید در قبل دیدید که نام بسته برنامه از شما خواسته می شود. همانطور که در بالا گفتیم، شیوه ساختن بسته برای یک برنامه جاوا (وبالتبع برنامه اندروید) استفاده از نام دامنه متعلق به نویسنده در ابتدای نام بسته است. اما ما در اینجا از com.Android.firstproject استفاده کرده ایم
2- versionCode و versionName برنامه:
هر برنامه اندروید ممکن است بارها و بارها منتشر شود. برخی از این انتشارها به علت رفع خطاهای موجود در برنامه ها و برخی به علت افزودن ویژگی های جدید به برنامه ها است. وقتی یک برنامه قرار است مجدداً منتشر شود، هم خود برنامه باید بداند از چه نسخه ای به چه نسخه ای قرار است ارتقا پیدا کند، هم دستگاه اندرویدی که این برنامه بر روی آن نصب است باید نسخه برنامه را بداند و البته بازارهای برنامه (Google Play و کافه بازار). بنابراین شما باید به نوعی نسخه برنامه را درون خود برنامه قرار دهید. برای این کار دو ویژگی versionCode و versionName در مانیفست تعریف می شوند. versionCode یک عدد است که در هر بار ارتقای برنامه، باید عددی بزرگتر از عدد قبلی باشد و فقط اعداد صحیح را می توانیم به عنوان versionCode معرفی کنیم. مثلاً از نسخه ۱ برنامه را به نسخه ۲ ارتقا می دهیم. ویژگی versionCode را بازارها و دستگاه می خوانند ولی به کاربران نشان داده نمی شود زیرا غالباً سیستم ورژن گذاری برنامه ها در شرکت ها متفاوت است. خیلی از شرکت ها بین ارتقایی که فقط خطاها را رفع می کند و ارتقایی که ویژگی های جدید به نرم افزار اضافه می کند فرق می گذارند. versionName هر عبارت متنی را می پذیرد و برای مثال می توانید در ارتقا از نسخه ۱ به ۲، versionName را از ۱٫۰٫۰ به ۱٫۰٫۱ تغییر دهید. versionCode را بازارها و دستگاه های اندروید به کاربر نمایش می دهند.
3- minSdkVersion:
ابتدا لازم است فرق بین SDK version و Android version را بدانید. اندروید یک سیستم عامل است و به صورت مستقل در حال تکامل است. ابزارهای برنامه نویسی آن (که با نام Android SDK) شناخته می شود، پروژه مستقل دیگری است. معمولاً با هر عرضه جدید از سیستم عامل اندروید، نسخه جدیدی از Android SDK هم منتشر می شود. ولی ممکن است عرضه جدید اندروید منحصر به رفع خطاهای اندروید باشد و ویژگی جدیدی به آن اضافه نشود. بنابراین Android SDK بدون تغییر بماند. یا بر عکس، Android SDK بروزرسانی شود بدون این که نسخه جدیدی از سیستم عامل اندروید منتشر شود. به همین دلیل سیستم عامل اندروید نسخه های خودش را دارد و Android SDK نسخه های خودش را. نسخه های اندروید مثلاً ۴٫۴ است که با نام تجاری KitKat در بازار شناخته می شود. نسخه های Android SDK به صورت عددی هستند و نام تجاری ندارند. نسخه های Android SDK اصطلاحاً API Level نامیده می شوند و به صورت عددی هستند. برای مثال همراه با اندروید KitKat نسخه ای از Android SDK منتشر شد که API Level 19 نامیده می شود. در برنامه نویسی اندروید آن چیزی که مهم است نسخه Android SDK یا همان API Level است.
minSdkVersion شماره پایین ترین API Level ی است که برنامه شما پشتیبانی می کند و بر روی دستگاه هایی که API Level آنها کمتر از مقدار minSdkVersion باشد، برنامه شما نصب نخواهد شد. در هنگام ایجاد یک پروژه اندروید (رجوع کنید به بخشهای قبل) minSdkVersion در ویزارد تحت عنوان Minimum Required SDK از شما پرسیده می شود ولی اینجا هم می توانید آن را تغییر دهید.
فرض کنید minSdkVersion را ۸ انتخاب کنید. معنی این انتخاب این است که برنامه شما بر روی دستگاه هایی که API Level آنها کمتر از ۸ است اجرا نخواهد شد.
نکته ای که توجه به آن ضروری است این است که اینجا باید همیشه بین انتخاب یک نسخه از API Level که بیشترین دستگاه های موجود در بازار آن را پشتیبانی می کنند و امکانات آن ها صورت گیرد. برای مثال اگر می خواهید از امکانات Download Manager اندروید در برنامه های خود بهره بگیرید، می بینید که این ویژگی در API Level 9 معرفی شده است و اگر minSdkVersion خود را ۸ انتخاب کنید نمی توانید از آن استفاده کنید. اگر minSdkVersion را ۹ انتخاب کنید، در عوض چند درصدی از گوشی های موجود در بازار دیگر نمی توانند برنامه شما را اجرا کنند. توصیه گوگل این است که سعی کنید ۹۵ درصد دستگاه های موجود در بازار را پشتیبانی کنید. بنابراین minSdkVersion خود را نسخه ای انتخاب کنید که تعداد دستگاه هایی که API Level آن ها کمتر از مقدار فوق است، کمتر ار ۵ درصد دستگاه های موجود در بازار باشند.
حال احتمالاً می پرسید از کجا بدانیم درصد استفاده از هر API Level در گوشی ها چقدر است؟ پرسش به جایی است. گوگل به صورت منظم اطلاعاتی را منتشر می کند که درصد استفاده از نسخه های مختلف اندروید را به همراه انبوهی از اطلاعات مفید دیگر منتشر می کند. برای دسترسی به این اطلاعات بخش Dashboard در سایت توسعه دهندگان اندروید بروید:
همانطور که می بینید برای این که شرط ۹۵ درصد محقق شود، می توانید minSdkVersion را ۱۰ تعریف کنید.
4- targetSdkVersion:
در بعضی از ورژن ها این قسمت هم در کد مانیفیست وجود دارد
targetSdkVersion را همواره بالاترین نسخه API Levelی که منتشر شده و شما هم دانلود کرده این قرار بدهید. در حال حاضر این مقدار احتمالاً ۱۹ (مربوط به KitKat) یا ۲۱ (مربوط به پیش نمایش Android L) است. کاربرد آن را در آینده خواهید دید.
5- تگ Application:
در این تگ اطلاعات کلی درباره نام برنامه، آیکون برنامه، تم (زمینه) برنامه و … و نیز کلیه Activityها، Serviceها و BroadcastReceiver ها تعریف می شوند.
5-1- android:icon: آیکون برنامه شما را مشخص می کند.
5-2- android:label: عنوان یا نام برنامه در دستگاه را مشخص می کند.
در بعضی از ورژن ها این بخش را خواهیم داشت:
5-3- android:theme: اندروید از نسخه ۴ به بعد از تم پشتیبانی می کند و ۲ تم Holo Light و Holo Dark دارد. می توانید از یکی از این ۲ تم استفاده کنید یا آن ها را بسته به نیاز خود تغییر دهید یا اگر وقت و سلیقه و توانایی کار با ابزارهای گرافیکی و البته دانش اندروید دارید یک تم جدید بسازید. App Theme که اینجا به عنوان تم برنامه معرفی شده است، تمی است که از تم Holo مشتق شده است و می توانید آن را تغییر دهید تا بر نیازهای شما منطبق شود.
5-4- android:allowBackup: اگر مقدار این ویژگی true باشد، برنامه های بکاپ گیری می توانند اطلاعات محرمانه برنامه را بخوانند و آن ها را ذخیره کنند. در صورت که false باشد، برنامه های بکاپ گیری نمی توانند از برنامه شما بکاپ تهیه کنند. انتخاب با شما است.
6- تگ Activity:
همانطور که گفتیم در داخل تگ Application باید همه Activity ها را تعریف کرد. برنامه ما فعلاً یک صفحه بیشتر ندارد و در نتیجه یک Activity هم بیشتر ندارد. این تگ خود چندین ویژگی دارد:
6-1- android:name: نام کلاس جاوای مرتبط با این Activity است. نام کلاس را یا باید کامل و به همراه بسته (package) بنویسید مثل com.Android.firstproject.MainActivity یا آن را خلاصه کنید. برای خلاصه کردن می توانید نام package برنامه را از آن حذف کنید: MainActivity.
6-2- android:label: نامی است که برای این اپلیکیشن انتخاب کرده اید. این نام در چندین جا ظاهر می شود که مهم ترین آن در بالای صفحه برنامه و در نواری که اصطلاحاً ActionBar نامیده می شود (قسمتی که با رنگ قرمز مشخص شده است):
استفاده از مطالب این مقاله با ذکر منبع راسخون بلامانع می باشد.
1- ابتدا به مسیر زیر می رویم :
در بخشProject Name به معنی "نام پروژه" می بینیم که نام First Project وارد شده است. در حقیقت این همان نامی است که در بخش Application name وارد کردیم با این تفاوت که کلیه Space ها حذف شده اند. در واقع این نام، نامی است که از آن طریق پروژه ما روی کامپیوتر ذخیره خواهد شد و در ایکلیپس پروژه ما به این نام شناخته خواهد شد. بنابراین قسمت دوم (Project Name) را بدون تغییر بگذارید.
در بخش Package name نام com.example.firstproject به صورت خودکار وارد شده است اما این در حالی است که با این نام به هیچ وجه نخواهیم توانست به ادامه ساخت پروژه خود بپردازیم چرا که بخشی از این نام که com.example است حتماً بایستی با نامی دیگر جایگزین شود. در اینجا برای رفع این مشکل نام فوق را به نام com.Android.firstproject تغییر می دهیم.
در کل برای نامگداری بسته ها از وارونه نام دامنه (Domain) شرکت استفاده کنید. مثلاً اگر در شرکت Software Company کار می کنید و نام دامنه شرکت شماwww.company.com است، بسته های خود را با com.company آغاز کنید. به دلیل این که نام دامنه ها در جهان یکتا هستند، نامگذاری بسته های شما و در نتیجه کلاس های شما نیز یکتا خواهد بود. حالا برای اندروید، یک قسمت دیگر هم باید به نام بسته اضافه کنیم: نام برنامه. برای برنامه First Project نام دامنه را به این شکل تعریف می کنیم:ir.smartlab.android.fistproject . این نام بسته کاملاً منحصر به فرد است زیرا دامنه منحصر به فرد است و اگر نام برنامه را هم منحصر به فرد انتخاب کنیم، نام بسته که به عنوان شناسه برنامه ها در اندروید به کار می رود نیز همیشه یکتا خواهد بود.
احتمالاً برایتان سؤال پیش آمده که اگر نام بسته یکتا نباشد چه اتفاقی می افتد؟ خیلی ساده است؛ اندروید اجازه نصب دو برنامه با نام بسته یکسان در یک دستگاه را نمی دهد! البته بازارهای برنامه های اندروید مثل Google Play و کافه بازار هم اجازه انتشار دو برنامه با نام بسته یکسان را نمی دهند. پس در انتخاب نام بسته دقت کنید.
در بخش Minimum required SDK به معنی "حداقل SDK مورد نیاز" گزینه API 7: Android 2.1 (Éclair) را در این پروژه انتخاب می کنیم(در اینجا چون من روی سیستم خود API 8 را نصب کرده ام، API 8 را انتخاب کرده ام). این بدان معنا است که اپلیکیشن ما برای آنکه اجرا شود حداقل به API سطح 7 نیاز دارد به عبارت دیگر این اپلیکیشن روی تلفن همراهی اجرا خواهد شد که نسخه اندروید آن Éclair باشد)برای آشنایی بیشتر با نام ها و سطوح API اندروید به آموزش اول که مقدمه می باشد، مراجعه نمایید و برای توضیح بیشتر در این مورد به انتهای این بخش رجوع کنید(.
در بخش Target SDK نیز گزینه API 7: Android 2.1 (Éclair) را انتخاب می کنیم. کاری که Target SDK انجام می دهد این است که به محیط برنامه نویسی اندروید دستور می دهد تا API سطح 7 را برای توسعه اپلیکیشن ما در نظر بگیرد)نام دیگر Target SDK در دیگر محیط های برنامه نویسی Build SDK می باشد( در واقع در بسیاری از برنامه ها از API های یکسانی هم برای Minimum SDK و Target SDK استفاده می شود. با انتخاب این گزینه این تضمین را ایجاد می کنیم که اپلیکشن طراحی شده در تلفن های همراهی با نسخه اندروید Éclair به خوبی کار خواهد کرد.)نکته ای که در اینجا می بایست حتما مد نظر قرار داده شود این است که Target SDK به هیچ وجه نمی تواند از Minimum SDK کوچک تر باشد(.
در بخش Compile with نسخه ای از API را مشخص خواهیم کرد که بر آن اساس برنامه ما Compile خواهد شد.
در بخش Theme قادر خواهیم خواهیم بود تا تم اپلیکیشن خود را مشخص کنیم. به عبارت دیگر خواهیم توانست تم هایی با طرح های روشن و تیره برای اپلیکیشن خود انتخاب کنیم( اما اگر قصد داشته باشیم یک اپلیکیشن ساده طراحی کنیم، گزینه None به معنی "هیچ کدام" را انتخاب می کنیم).
در این مرحله پنجره مربوط به ساخت پروژه جدید می بایست به شکل زیر باشد:
در پنجره ی زیر، چنانچه گزینه Create custom launcher icon را تیک بزنیم، قادر خواهیم بود تا تنظیمات مربوط به آیکون اپلیکیشن مان به توجه به سلیقه شخصی خود تغییر دهیم و به جای آیکون پیش فرض اندروید که یک ربات سبز رنگ است از تصاویر دیگری استفاده کنیم اما از آنجا که این کار را پس از ساخت پروژه نیز می توانیم انجام دهیم، تیک این گزینه را بر می داریم تا همان آیکون پیش فرض در نظر گرفته شود)این آیکون پیش فرض یا هر تصویر دیگری که به جای آن در توسعه اپلیکیشن خود استفاده کنیم چیزی است که پس از نصب روی تلفن همراه و یا تبلت ما قابل رویت خواهد بود و با زدن روی آن وارد برنامه خواهیم شد(.
همانطور که قبلا توضیح داده شد، هر صفحه ای از اپلیکیشن اندروید که باز می شود به منزله یک Activity است. از آنجا که هر اپلیکیشن اندروید می بایست حداقل دارای یک Activity باشد، با تیک دار کردن گزینه Create activity می خواهیم که این کار را به صورت خودکار برای ما انجام دهد. در مراحل بعدی خواهیم توانست برای Activity خود نامی دلخواه انتخاب نماییم.
گزینه Mark this project as a library این امکان را به ما می دهد تا پروژه های خود را تبدیل به Library هایی کنیم که این قابلیت را دارا هستند تا در دیگر برنامه ها مورد استفاده قرار گیرند. از آنجا که در این قسمت از آموزش به اینکار نیازی نیست، این گزینه را تیک نمی زنیم.
در این مرحله می توانید چیزی را تغییر ندهید.
در پنجره ی زیر، از ما می خواهد تا نمای ظاهری Activity یی برنامه را مشخص نماییم. از آنجا که در این آموزش قصد داریم تا پروژه ای ساده طراحی کنیم، گزینه اول تحت عنوان Blank Activity را انتخاب کرده :
در این مرحله در پنجره ی زیر، هم می توانید چیزی را تغییر ندهید. دکمه Finish را بزنید .
همانطور که ملاحظه می شود می بایست در این مرحله در قسمت Activity Name نامی برای Activity خود در نظر بگیریم. نکته ای که در ارتباط با نام Activity ها همواره می بایست مد نظر قرار دهیم این است که نام آنها می بایست با حرف بزرگ شروع شود و چنانچه نام Activity ما بیش از یک کلمه بود می توان از ساختار camelCase استفاده کرد. همانطور
که در تصویر فوق ملاحظه می شود به صورت خودکار نام MainActivity را به معنی Activity اصلی در نظر گرفته است. از آنجا که هر اپلیکیشن اندروید با یک Activity اولیه شروع می شود، بهتر است نام چنین Activity یی نامی گویا باشد. از این رو نام های MainActivity و Main و این دست نام ها پیشنهاد می شود. در این پروژه نام پیش فرض را مورد استفاده قرار خواهیم داد.
نحوه نامگذاری Layout ها در اندروید
سپس در بخش Layout Name می بایست نامی را برای فایل XML خود که همان UI یا "رابط گرافیکی" اپلیکیشن ما است مشخص نماییم. نکته ای که در اینجا می بایست همواره مد نظر قرار دهیم این است که در نامگذاری Layout برنامه خود فقط می توانیم از حروف کوچک استفاده کنیم و چنانچه نام Layout ما از چند واژه تشکیل شده بود می توانیم از _ استفاده کنیم. به طور مثال در تصویر فوق نام activity_main به طور پیش فرض در نظر گرفته شده است که در این پروژه نام main را
مورد استفاده قرار خواهیم داد.
در این مرحله کار تنظیمات اولیه به اتمام رسیده و می توانید دکمه Finish را بزنید.
بعد از ساخته شدن پروژه، صفحه زیر را خواهید دید:
1- Package Explorer
قسمت های اصلی این بخش به شرح زیر است:
• src: این شاخه شامل کلیه کدهای برنامه است. همانطور که می دانید در برنامه های جاوا کلاس ها درون بسته (package) تعریف می شوند. در این شاخه کلیه بسته های برنامه را می بینید که با باز کردن هر کدام از آنها کلاس های داخل آنها را می توانید ببینید. در برنامه First Project فقط یک کلاس وجود دارد که همان MainActivity است. در قسمت های بعدی درباره Activity ها که یکی از اصلی ترین اجزای هر برنامه اندروید است، بیشتر آشنا می شوید.
• gen: هر برنامه اندروید که ساخته می شود، کلاسی دارد به نام R. این کلاس به صورت خودکار ساخته می شود و شما نباید محتوای آن را تغییر دهید زیرا با هر بار اجرای برنامه، این کلاس دوباره ساخته می شود. این کلاس در شاخه gen (مخفف generated) قرار دارد.
• assets: بعضی برنامه ها ممکن است فایل هایی داشته باشند که در داخل برنامه به آنها نیاز است. مثلاً برنامه می تواند شامل انواع فونت های مختلف باشد یا یک پایگاه داده که از قبل ساخته شده و با داده پر شده است یا تعدادی فایل HTML و جاوااسکریپت و CSS یا فایل های PDF و … این شاخه برای ذخیره این فایل ها است. این فایل ها در فایل apk برنامه (فایلی که در دستگاه های اندرویدی نصب می شود) قرار می گیرند.
• bin: نام این شاخه مخفف binary است و فایل هایی که بعد از ساخت (build) برنامه ساخته می شوند در آن قرار داده خواهند شد. یکی از این فایل ها apk برنامه است.
• libs: اگر برنامه برای کامپایل و اجرا نیاز به کتابخانه های جاوا یا C و C++ داشته باشد، فایل های jar کتابخانه را در این شاخه کپی می کنیم. به صورت پیش فرض در این شاخه یک کتابخانه به نام android-support-v4.jar قرار دارد.
• res: هر برنامه اندروید، تشکیل شده است از تعدادی صفحات که کاربر می بیند و با آنها تعامل دارد. برای طراحی رابط کاربری این صفحات، به فایل هایی از انواع مختلف نیاز داریم. مثلاً تصاویر، فایل های صوتی و تصویری، صفحات چیدمان (layout) (که ترتیب قرار گرفتن عناصر برنامه در صفحه را مشخص می کنند)، منوها، انیمیشن ها، ترجمه های مختلف برنامه برای زبان های مختلف، تنطیمات و … همه این عناصر در این شاخه قرار می گیرند.
• AndroidManifest.xml: این فایل محل تنظیم اصلی ترین اطلاعات برنامه است. هر چیزی که در اندروید ایجاد می کنیم، باید اینجا هم تعریف کنیم. مجوزهایی که برنامه نیاز دارد، اینجا تعریف می شود و …
حالا اصلی ترین اجزای برنامه First Project را در اینجا معرفی می کنیم:
2- طراح گرافیکی (Graphical Designer):
5- اجرای برنامه
برای اجرای برنامه بر روی دکمه Run مشابه عکس زیر کلیک کنید یا گزینه Run را از منوی Run انتخاب کنید یا Ctrl+F11 را بزنید یا در پنجره Package Explorer بر روی پروژه کلیک راست کرده و گزینه Run as و سپس Android Application را انتخاب کنید:
1- کلاس چیدمان(layout) main.xml: این فایل شاخه res/layout قرار دارد. این فایل یک صفحه از برنامه اندرویدی First Project (و در اصل تنها صفحه آن) است. اگر آن را باز کنید، این صفحه را در محیط طراحی گرافیکی اندروید به شکل زیر خواهید دید:
از میان متدهای این کلاس، مهم ترین متد، onCreate است:
3- کلاس AndroidManifest.xml: اگر این فایل را باز کنید، صفحه طراحی مخصوص این فایل را می بینید:
1- package برنامه:
2- versionCode و versionName برنامه:
3- minSdkVersion:
minSdkVersion شماره پایین ترین API Level ی است که برنامه شما پشتیبانی می کند و بر روی دستگاه هایی که API Level آنها کمتر از مقدار minSdkVersion باشد، برنامه شما نصب نخواهد شد. در هنگام ایجاد یک پروژه اندروید (رجوع کنید به بخشهای قبل) minSdkVersion در ویزارد تحت عنوان Minimum Required SDK از شما پرسیده می شود ولی اینجا هم می توانید آن را تغییر دهید.
فرض کنید minSdkVersion را ۸ انتخاب کنید. معنی این انتخاب این است که برنامه شما بر روی دستگاه هایی که API Level آنها کمتر از ۸ است اجرا نخواهد شد.
نکته ای که توجه به آن ضروری است این است که اینجا باید همیشه بین انتخاب یک نسخه از API Level که بیشترین دستگاه های موجود در بازار آن را پشتیبانی می کنند و امکانات آن ها صورت گیرد. برای مثال اگر می خواهید از امکانات Download Manager اندروید در برنامه های خود بهره بگیرید، می بینید که این ویژگی در API Level 9 معرفی شده است و اگر minSdkVersion خود را ۸ انتخاب کنید نمی توانید از آن استفاده کنید. اگر minSdkVersion را ۹ انتخاب کنید، در عوض چند درصدی از گوشی های موجود در بازار دیگر نمی توانند برنامه شما را اجرا کنند. توصیه گوگل این است که سعی کنید ۹۵ درصد دستگاه های موجود در بازار را پشتیبانی کنید. بنابراین minSdkVersion خود را نسخه ای انتخاب کنید که تعداد دستگاه هایی که API Level آن ها کمتر از مقدار فوق است، کمتر ار ۵ درصد دستگاه های موجود در بازار باشند.
حال احتمالاً می پرسید از کجا بدانیم درصد استفاده از هر API Level در گوشی ها چقدر است؟ پرسش به جایی است. گوگل به صورت منظم اطلاعاتی را منتشر می کند که درصد استفاده از نسخه های مختلف اندروید را به همراه انبوهی از اطلاعات مفید دیگر منتشر می کند. برای دسترسی به این اطلاعات بخش Dashboard در سایت توسعه دهندگان اندروید بروید:
4- targetSdkVersion:
در بعضی از ورژن ها این قسمت هم در کد مانیفیست وجود دارد
targetSdkVersion را همواره بالاترین نسخه API Levelی که منتشر شده و شما هم دانلود کرده این قرار بدهید. در حال حاضر این مقدار احتمالاً ۱۹ (مربوط به KitKat) یا ۲۱ (مربوط به پیش نمایش Android L) است. کاربرد آن را در آینده خواهید دید.
5- تگ Application:
5-1- android:icon: آیکون برنامه شما را مشخص می کند.
5-2- android:label: عنوان یا نام برنامه در دستگاه را مشخص می کند.
در بعضی از ورژن ها این بخش را خواهیم داشت:
5-3- android:theme: اندروید از نسخه ۴ به بعد از تم پشتیبانی می کند و ۲ تم Holo Light و Holo Dark دارد. می توانید از یکی از این ۲ تم استفاده کنید یا آن ها را بسته به نیاز خود تغییر دهید یا اگر وقت و سلیقه و توانایی کار با ابزارهای گرافیکی و البته دانش اندروید دارید یک تم جدید بسازید. App Theme که اینجا به عنوان تم برنامه معرفی شده است، تمی است که از تم Holo مشتق شده است و می توانید آن را تغییر دهید تا بر نیازهای شما منطبق شود.
5-4- android:allowBackup: اگر مقدار این ویژگی true باشد، برنامه های بکاپ گیری می توانند اطلاعات محرمانه برنامه را بخوانند و آن ها را ذخیره کنند. در صورت که false باشد، برنامه های بکاپ گیری نمی توانند از برنامه شما بکاپ تهیه کنند. انتخاب با شما است.
6- تگ Activity:
6-1- android:name: نام کلاس جاوای مرتبط با این Activity است. نام کلاس را یا باید کامل و به همراه بسته (package) بنویسید مثل com.Android.firstproject.MainActivity یا آن را خلاصه کنید. برای خلاصه کردن می توانید نام package برنامه را از آن حذف کنید: MainActivity.
6-2- android:label: نامی است که برای این اپلیکیشن انتخاب کرده اید. این نام در چندین جا ظاهر می شود که مهم ترین آن در بالای صفحه برنامه و در نواری که اصطلاحاً ActionBar نامیده می شود (قسمتی که با رنگ قرمز مشخص شده است):
/ج