0

آموزش برنامه نویسی اندروید

 
hosseinb68
hosseinb68
کاربر طلایی1
تاریخ عضویت : بهمن 1389 
تعداد پست ها : 1269
محل سکونت : بوشهر

آموزش برنامه نویسی اندروید - قسمت ۹: بررسی فولدرهای src و gen
چهارشنبه 25 دی 1392  1:25 PM

اهداف آموزشی این قسمت عبارتند از:
1. معرفی فولدر src
2. نحوه ایجاد یک پکیج جدید
3. معرفی فولدر gen و فایل R.java


در این قسمت قصد داریم به بررسی تک تک اجزای تشکیل دهنده یک اپلیکیشن بپردازیم اما پیش از آن دانستن این نکته لازم است که هر اپلیکیشن دارای یکسری فولدر به صورت پیش فرض است که این فولدرها در تصویر ادامه مطلب قابل مشاهده می باشند...


920405-9-IMAGE 1.jpg

به طور خلاصه فولدرهایی که در تصویر فوق مشاهده می شوند به منزله حداقل فولدرهایی هستند که هر اپلیکیشن برای اجرای درست بایستی از آنها برخوردار باشد. بسته به نوع اپلیکیشنی که می خواهیم طراحی کنیم می توان یکسری فولدر دیگر که نام آنها از پیش تعیین شده اند را نیز به این لیست اضافه کنیم که در طول این آموزش و آموزش های بعدی به بررسی همه این موارد خواهیم پرداخت.


معرفی فولدر src

پس ساخت اولین پروژه اندروید در محیط برنامه نویسی اکلیپس در آموزش هشتم، در این قسمت قصد داریم به بررسی تک تک پوشه های تشکیل دهنده یک پروژه اپلیکیشن اندروید بپردازیم. برای این منظور پروژه ای که در آموزش هشتم تحت عنوان My First Android Project ساخته بودیم را باز می کنیم:


920405-9-IMAGE 2.jpg

همانطور که در تصویر فوق مشاهده می شود، اولین فولدر در یک پروژه اندروید src نام دارد. در واقع واژه src مخفف واژه Source به معنی "منبع" یا "مأخذ" می باشد. این فولدر در برگیرندۀ کلیۀ فایل های جاوا است که در اپلیکیشن خود مورد استفاده قرار می دهیم. زیر مجموعه این فولدر همان پکیجی قرار دارد که در حین ساخت پروژه تحت عنوان com.test.mainpackage ساختیم. به طور کلی کاری که این پکیج می کند این است که از تداخل فایل های جاوا که برای توسعه اپلیکیشن خود طراحی می کنیم جلوگیری به عمل آورده و موجب می گردد کلاس های مورد استفاده سازماندهی شوند.


ایجاد یک پیکج جدید در جاوا

ما به عنوان یک توسعه دهنده اندروید به هر تعداد پکیج که برای اپلیکیشن خود نیاز داشته باشیم می توانیم ایجاد کنیم. به طور مثال چنانچه بخواهیم یک پکیج دیگر در اپلیکیشن خود ایجاد کنیم به صورت زیر عمل خواهیم کرد(لازم به ذکر است چنانچه در محیط اکلیپس چندین پروژه ایجاد کرده باشیم می بایست اول پروژه مد نظر خود را انتخاب کرده سپس به صورت زیر اقدام به ایجاد یک پیکج جدید نماییم):


920405-9-IMAGE 3.jpg

همانطور که در تصویر فوق نشان داده شده است، با قرار دادن نشانگر موس خود روی آیکونی که با فلش قرمز رنگ مشخص شده است، پیام New Java Package به معنی "یک پکیج جدید جاوا" نمایان خواهد شد. با کلیک کردن روی این آیکون پنجره زیر نمایان می گردد:


920405-9-IMAGE 4.jpg

همانطور که در تصویر فوق مشخص است، در بخش Source folder مسیر فولدر src موجود در پروژه My First Android Project مشخص شده است. در بخش Name به معنی "نام" می بایست نامی برای پکیج جدید خود در نظر بگیریم. نکته ای که در انتخاب نام پیکج می بایست همواره مد نظر قرار داده شود این است که دو بخش اول نام پیکج که بخش اول مربوط به نام دامین است که در اینجا com می باشد و بخش دوم که مربوط به آدرس دامین است که در این مثال test است حتماً بایستی با دو بخش اول نام پکیجی که در حین ساخت پروژه تعریف کردیم یکی باشد وصرفاً بخش آخر یا همان قسمت سوم نام پیکج می بایست نامی جدید باشد. علت این مسئله هم ایجاد یکنواختی در کلیۀ پکیج های یک پروژه می باشد. حال با دانستن این نکته همانطور که در تصویر فوق نشان داده شده است نام com.test.secondpackage را وارد می کنیم که عبارت secondpackage به معنی "پکیج دوم" است(برای آشنایی بیشتر با نحوه نامگذاری پیکج ها در جاوا به آموزش چهارم مراجعه نمایید).

اکنون می توانیم دکمه Finish زده و پیکج ایجاد شده در پروژه خود را مشاهده کنیم:


920405-9-IMAGE 5.jpg

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


معرفی فولدر gen و فایل R.java

واژۀ gen مخفف واژه Generated به معنی "تولید شده" یا "حاصله" می باشد. این فولدر محل ذخیره سازی فایل جاوایی تحت عنوان R است:


920405-9-IMAGE 6.jpg

همانطور که در تصویر فوق مشاهده می شود فایل تولید شده R.java نام دارد(حرف R از اول واژه Resource به معنی "منبع" گرفته شده است). به طور خلاصه می توان گفت که ما در توسعه اپلیکیشن اندرویدی از عناصر زیادی استفاده می کنیم که برخی از آنها توسط XML ایجاد می شوند مثل Layout ها، دکمه ها و غیره و برخی دیگر عناصری هستند همچون عکس ها، فایل های صوتی و ... که جزو منابع اپلیکیشن ما قرار دارند. حال برای آنکه بتوانیم به کلیه این عناصر در Activity ها دسترسی داشته باشیم بایستی آدرس آنها را داخل کلاس مرتبط با Activity وارد کنیم(برای آشنایی بیشتر با Activity ها به آموزش دوم مراجعه نمایید).

اگر بخواهیم آدرس XML یی مثلا یک دکمه که در XML ساخته شده است را در کلاس خود بیاوریم، نه تنها این آدرس ممکن است طولانی شود، بلکه ممکن است در حین Run شدن اپلیکیشن نیز با مشکل مواجه شویم و در اینجا است که اهمیت فایل R دوچندان می شود. به عبارت دیگر سیستم عامل اندروید با این کار Java و XML را به یکدیگر مرتبط می سازد. کاربرد این فایل به این شکل است که یک id یا یک "شماره معرف" برای هر یک از عناصر موجود src اپلیکیشن ما من جمله layout، متون، عکس ها، فونت ها و غیره در این فایل ساخته می شود. نکتۀ جالب در ارتباط با این فایل این است که این فایل به صورت خودکار توسط برنامه ایجاد می گردد.

به عبارت دیگر به محض اینکه ما یک عنصر جدید مثلاً یک دکمه جدید داخل UI برنامه می کنیم، اندروید به صورت خودکار به آن دکمه یک id اختصاص داده و آن id را وارد فایل R.java می کند. حال زمانیکه بخواهیم به طول مثال عکس خاصی در یک Activity به کار بریم، از طریق id آن عنصر خاص در فایل R به آن عکس دسترسی پیدا خواهیم کرد. به نظر می رسد علت انتخاب یک نام بسیار کوتاه تک حرفی تحت عنوان R برای این فایل این است که در حین آدرس دادن به عناصر موجود در اپلیکیشن زمان زیادی صرف نوشتن نام این فایل نکنیم(فقط با نوشتن R.id سپس نام عنصر مد نظر به آن دست پیدا خواهیم کرد).

مزیت دیگر این فایل این است که اگر عناصر موجود در src را با همان اسامی XML یی خودشان به فایل جاوا لینک دهیم، چنانچه مثلاً مشکلی در فایل XML باشد این مشکل در حین Run شدن یا "اجرای برنامه" خود را نشان خواهد داد و این اتفاق خوبی نیست چرا که ممکن است این مشکل خود را زمانی نشان دهد که اپلیکیشن به دست کاربر رسیده است. اما زمانیکه یک id برای هر یک از عناصر در فایل R ایجاد می شود، چنانچه مشکلی در برنامه وجود داشته باشد این مشکل در حین Compile شدن برنامه خود را نشان خواهد داد و این مسئله خبر خوبی است چرا که پیش از اینکه اپلیکیشن به دست کاربران برسد، خود برنامه نویس یا توسعه دهنده با مشکلات احتمالی رو به رو خواهد شد.

چنانچه دو بار روی نام این فایل کلیک کنیم خواهیم توانست محتوایات آن را مشاهده کنیم:


  1. package com.test.mainpackage;
  2.  
  3. public final class R {
  4. public static final class attr {
  5. }
  6. public static final class drawable {
  7. public static final int ic_launcher=0x7f020000;
  8. }
  9. public static final class layout {
  10. public static final int main=0x7f030000;
  11. }
  12. public static final class string {
  13. public static final int app_name=0x7f040001;
  14. public static final int hello=0x7f040000;
  15. }
  16. }
  17.  

کد فوق مربوط به محتویات فایل R است که برای پروژه My First Android Project به صورت خودکار توسط برنامه ایجاد شده است. به طور مثال نام ic_launcher مربوط به نام آیکون سبز رنگ اندروید است که به عنوان آیکون اپلیکیشن پس از نصب مورد استفاده قرار می گیرد و یا نام main مربوط به Layout یی است که در حین ساخت پروژه ایجاد کردیم. همانطور که مشاهده می شود هر یک از این اسامی دارای یک id نیز می باشند. نکتۀ بسیار مهمی که در ارتباط با این فایل وجود دارد این است که به هیچ وجه نمی بایست آن را ویرایش کرده و تغییری در آن ایجاد کنیم که در این صورت Compiler به محض Save کردن این فایل پس از تغییر آن را به حالت اول در خواهد آورد اما این در حالی است که می توان آن را به کلی حذف کرد و برنامه بدون هیچ مشکلی اجرا خواهد شد زیرا به محض Compile شدن اپلیکیشن این فایل مجدداً به صورت خودکار با اعمال آخرین تغییرات ساخته خواهد شد. نکته پایانی در ارتباط با فایل R این است که در هر بار Compile شدن اپلیکیشن این فایل Update خواهد شد تا ببیند آیا عنصر جدیدی به برنامه اضافه شده است که بخواهد برای آن یک id اختصاص دهد و یا آیا عنصری حذف شده است که نیاز باشد id اختصاص داده شده به آن را حذف کند یا خیر.

تشکرات از این پست
amin_j nikonazar
دسترسی سریع به انجمن ها