مسیر یادگیری توسعه اپلیکیشن موبایل
وقتی صحبت از اپلیکیشن موبایل می شود، سیستم عامل اندروید (Android) به ذهن ما می آید. عجیب نیست چون اندروید امروزه سهم حداکثری از بازار اپلیکیشن های موبایل را از آن خود کرده است. اکثر اپلیکیشن های موبایل با اندروید نوشته شده اند.
مروری بر سیستم عامل اندروید
اندروید یک سیستم عامل متن باز و مبتنی بر لینوکس برای وسیله های موبایلی مانند تلفن های هوشمند و کامپیوترهای تب لت میباشد. اندروید توسط Open Handset Allianc توسعه داده شد و توسط گوگل و کمپانی های دیگر هدایت شد. اندروید رویکرد یکپارچه ای برای توسعه برنامه های کاربردی وسیله های موبایل می باشد. درواقع توسعه دهندگان کافی است برای اندروید برنامه نویسی کنند و برنامه های آنها روی وسیله های مختلف اندرویدی قابل اجرا خواهد بود.
اولین نسخه بتای بسته توسعه نرم افزاری اندروید (SDK) توسط گوگل در سال ۲۰۰۷ ارائه داده شد و اولین نسخه تجاری ، اندروید ۱٫۰ در سپتامبر ۲۰۰۸ ارائه شد. در ۱۷ ژوئن ۲۰۱۲ در کنفرانس Google I/O، گوگل نسخه بعدی اندروید ۴٫۱ (Jelly Bean) را معرفی کرد. Jelly Bean یک آپدیت تکمیلی بود که هم از لحاظ عملکردی و هم از لحاظ کارآیی، بهبود اساسی در رابط گرافیکی ایجاد کرده بود. سورس کد اندروید تحت لایسنس نرم افزار متن باز در دسترس قرار دارد. گوگل اکثر کد را تحت لینوکس آپاچی نسخه ۲ و بقیه کد را تحت لایسنس عمومی GNU نسخه ۲ انتشار داد.
ویژگی های اندروید
اندروید یک سیستم عامل قدرتمند می باشد که ویژگی های بسیار جالبی دارد. چند عنوان از این ویژگی ها عبارتند از:
ویژگی |
توصیف |
رابط کاربری زیبا | صفحه اصلی سیستم عامل اندروید یک رابط کاربری زیبا و خلاقی را ارائه می دهد. |
ارتباطات |
GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi, LTE, NFC and WiMAX. |
ذخیره سازی | برای ذخیره سازی دیتا از پایگاه داده رابطه ای سبک SQLite استفاده شده است |
پشتیبانی از چندرسانه ای |
H.263, H.264, MPEG-4 SP, AMR, AMR-WB, AAC, HE-AAC, AAC 5.1, MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF, and BMP |
پیام رسانی |
SMS و MMS |
مرورگر وب | مرورگر وب اندروید مبتنی بر Webkit layout engine بوده و با موتور جاوااسکریپت Chrome v8 که از HTML5 و CSS3 پشتیبانی می کند، سازگار است. |
مالتی تاچ | اندروید از مالتی تاچ پشتیبانی می کند که اولین بار توسط وسیله های دستی مانند HTC Hero ارائه شده بود. |
چند وظیفه ای | کاربر می تواند از یک task به task دیگری پرش کند و به طور همزمان چندین برنامه می تواند در حال اجرا باشد. |
ویجت های سایز پذیر | ویجت ها قابلیت تغییر سایز دارند بنابراین کاربر می تواند برای نمایش محتوای بیشتر ویجت ها را بزرگتر کند یا برای صرفه جویی در مصرف فضا آنها را کوچکتر نماید. |
چندزبانه | اندروید از متون یک جهته و دو جهته پشتیبانی می نماید. |
Google Cloud Messaging (GCM) | GCM سرویسی است که اجازه می دهد توسعه دهندگان بدون نیاز به یک راه حل همگام اختصاصی، به کاربرانی که روی وسیله های اندروید هستند، دیتای پیام کوتاه ارسال کنند. |
Wi-Fi Direct | Wi-Fi Direct تکنولوژی است که اجازه می دهد اپلیکیشن ها روی یک ارتباط نظیر به نظیر با پهنای باند بالا، جستجو کنند و به صورت مستقیم با هم جفت شوند. |
Android Beam | یک تکنولوژی رایج مبتنی بر NFC به کاربران اجازه می دهد تا به صورت آنی تنها با لمس همزمان دو تلفن که NFC آنها فعال است، با هم اشتراک فایل داشته باشند. |
برنامه های کاربردی اندروید
برنامه های اندروید معمولا با استفاده از SDK اندروید در زبان جاوا توسعه داده می شود. وقتی یک برنامه اندروید توسعه داده شد به راحتی قابل پکیج شدن و فروش در فروشگاه هایی مانند Google Play, SlideME, Opera Mobile Store, Mobango, F-droid و Amazon Appstore می باشد.
اندروید صدها میلیون وسیله موبایل در بیش از ۱۹۰ کشور دنیا تولید کرده است. هر روز بیش از یک میلیون وسیله اندروید جدید در سراسر دنیا تولید می شود.
هدف ما ارائه آموزش کاربردی توسعه اپلیکیشن اندروید به علاقمندان این رشته از برنامه نویسی می باشد. ما آموزش ها را از نصب محیط برنامه نویسی اندروید برای برنامه نویسی اپلیکیشن های اندروید شروع می کنیم و سپس به صورت کامل و از جنبه های مختلف به آموزش تولید اپلیکیشن های اندروید خواهیم پرداخت.
تاریخچه اندروید
نسخه های اندروید از A شروع شده و به ترتیب حروف الفبای انگلیسی نامگذاری می شود. برای مثال:
- Aestro
- Blender
- Cupcake
- Donut
- Éclair
- Froyo
- Gingerbread
- Honeycomb
- IceCream
- Sandwitch
- Jelly Bean
- KitKat
- Lollipop
API Level چیست؟
API Level عدد صحیحی است که به صورت منحصر به فردی نسخه API فریمورک یک نسخه مشخصی از پلتفرم اندروید را مشخص می کند.
Platform Version |
API Level | VERSION_CODE | |
Android 5.1 | ۲۲ | LOLLIPOP_MR1 | |
Android 5.0 | ۲۱ | LOLLIPOP | |
Android 4.4W | ۲۰ | KITKAT_WATCH | |
۱۹ | KITKAT | ||
Android 4.3 | ۱۸ | JELLY_BEAN_MR2 | |
Android 4.2, 4.2.2 | ۱۷ | JELLY_BEAN_MR1 | |
Android 4.1, 4.1.1 | ۱۶ | JELLY_BEAN | |
Android 4.0.3, 4.0.4 | ۱۵ | ICE_CREAM_SANDWICH_MR1 | |
Android 4.0, 4.0.1, 4.0.2 | ۱۴ | ICE_CREAM_SANDWICH | |
Android 3.2 | ۱۳ | HONEYCOMB_MR2 | |
Android 3.1.x | ۱۲ | HONEYCOMB_MR1 | |
Android 3.0.x | ۱۱ | HONEYCOMB | |
Android 2.3.4
Android 2.3.3 |
۱۰ | GINGERBREAD_MR1 | |
Android 2.3.2
Android 2.3.1 Android 2.3 |
۹ | GINGERBREAD | |
Android 2.2.x | ۸ | FROYO | |
Android 2.1.x | ۷ | ECLAIR_MR1 | |
Android 2.0.1 | ۶ | ECLAIR_0_1 | |
Android 2.0 | ۵ | ECLAIR | |
Android 1.6 | ۴ | DONUT | |
Android 1.5 | ۳ | CUPCAKE | |
Android 1.1 | ۲ | BASE_1_1 | |
Android 1.0 | ۱ | BASE |
محیط برنامه نویسی اندروید
شما می توانید توسعه اپلیکیشن اندروید را با هر کدام از سیستم عامل های زیر شروع کنید:
- Microsoft Windows XP or later version
- Mac OS X 10.5.8 or later version with Intel chip
- Linux including GNU C Library 2.7 or later
در لیست زیر نرم افزارهایی که برای توسعه اپلیکیشن اندروید مورد نیاز خواهد بود را مشاهده می کنید:
- Java JDK5 or later version
- Android SDK
- Java Runtime Environment (JRE) 6
- Android Studio
- Eclipse IDE for Java Developers (optional)
- Android Development Tools (ADT) Eclipse Plug-in (optional)
دو مولفه آخر اختیاری بوده و اگر روی ویندوز کار می کنید این دو مولفه توسعه برنامه های کاربردی مبتنی بر جاوا را برای شما آسان خواهند کرد. حالا بیایید یک نگاهی به چگونگی آماده سازی محیط برنامه نویسی اندروید داشته باشیم.
نصب JDK – Java Development Kit
ابتدا باید نصب JDK و پیکربندی JDK را انجام دهید. در پایان متغیرهای محیطی PATH و JAVA_HOME را تنظیم نمایید تا محل نصب Java و Javac مشخص شود. معمولا مسیر آنها به ترتیب java_install_dir/bin و java_install_dir می باشد.
اگر در محیط ویندوز هستید و JDK را در C:\jdk1.6.0_15 نصب کرده اید، شما باید خط زیر را در فایل C:\autoexec.bat قرار دهید:
set PATH=C:\jdk1.7.0_75\bin;%PATH%
set JAVA_HOME=C:\jdk1.7.0_75
همچنین می توانید روی MyComputer راست کلیک کنید و Properties-> Advanced-> Environment Variables را انتخاب کنید. سپس باید مقدار PATH را تغییر داده و دکمه OK را بزنید.
در لینوکس، اگر SDK در مسیر /usr/local/jdk1.6.0_15 نصب شده باشد و شما از C shell استفاده کنید، باید کد زیر را در فایل .cshrc قرار دهید:
setenv PATH /usr/local/jdk1.7.0_75/bin:$PATHsetenv JAVA_HOME /usr/local/jdk1.7.0_75
البته به خاطر داشته باشید که اگر از محیط Eclipse استفاده می کنید، به صورت اتوماتیک محل نصب جاوا را خواهد شناخت . نیازی به مراحل بالا نخواهد بود.
IDE های اندروید
تکنولوژی های پیچیده بسیاری برای توسعه اپلیکیشن های اندروید وجود دارد ولی تکنولوژی های معروف عبارتند از:
- Android Studio
- Eclipse IDE
معماری اندروید
سیستم عامل اندروید متشکل از پشته ای از مولفه های نرم افزاری است که به پنج قسمت و چهار لایه اصلی تقسیم بندی می شود.
- کرنل لینوکس
- کتابخانه ها
- زمان اجرای اندروید
- فریمورک اپلیکیشن
1- کرنل لینوکس
در معماری، لینوکس ۳٫۶ با تقریبا ۱۱۵ وصله، در لایه زیرین قرار گرفته است. این موضوع موجب می شود یک سطحی از انتزاع بین سخت افزار وسیله به وجود آید و کلیه درایورهای سخت افزاری مورد نیاز مانند دوربین، نمایشگر و … را در خود جای می دهد. همچنین، کرنل تمام مواردی که لینوکس در آن خوب عمل می کند (مانند شبکه) را مدیریت می نماید.
2- کتابخانه ها
روی لایه کرنل لینوکس، مجموعه ای از کتابخانه ها وجود دارد که برخی از آنها عبارتند از:
- موتور مرورگر وب متن باز WebKit
- کتابخانه معروف libc
- پایگاه داده SQLite که یک سیستم ذخیره سودمند برای ذخیره سازی و به اشتراک گذاری دیتای اپلیکیشن ها می باشد
- کتابخانه هایی برای پخش و ضبط صدا و ویدئو
- کتابخانه های مربوط به مدیریت SSL برای امنیت اینترنت و …
این دسته بندی مربوط به کتابخانه های مبتنی بر جاوا است که برای توسعه اندروید اختصاص داده شده اند. مثال های کتابخانه های این گروه، علاوه بر آنهایی که مربوط به ایجاد رابط کاربری، طراحی گرافیک و دسترسی دیتابیس می شد، شامل کتابخانه های فریمورک اپلیکیشن نیز می شود.
خلاصه ای از برخی کتابخانه های کلیدی اندروید در لیست زیر قابل مشاهده می باشد:
- android.app – تامین دسترسی به مدل اپلیکیشن و اساس تمام اپلیکیشن های اندروید
- android.content – فراهم کننده دسترسی به محتوا، انتشار و پیام رسانی میان اپلیکیشن ها و مولفه های اپلیکیشن
- android.database – استفاده شده برای دسترسی به دیتای منتشر شده توسط فراهم کننده های محتوا و شامل کلاس های مدیریت دیتابیس SQLite
- android.opengl – یک اینترفیس جاوا برای OpenGL ES 3D که یک graphics rendering API است.
- android.os – تأمین دسترسی اپلیکیشن ها به سرویس های استاندارد سیستم عامل از جمله پیغام ها، سرویس های سیستم و ارتباطات میان پردازشی.
- android.text – استفاده شده برای رندر و دستکاری متن روی نمایشگر موبایل
- android.view– بلوک های سازنده اساسی رابط کاربری اپلیکیشن
- android.widget – مجموعه غنی از مولفه های رابط کاربری از پیش ساخته شده مانند buttons ، labels ، list views ، layout managers ، radio buttons و …
- android.webkit – مجموعه ای از کلاس ها به منظور ارائه قابلیت هایی برای مرورگر وب جهت تعبیه داخل اپلیکیشن
3- زمان اجرای اندروید
این قسمت، سومین بخش معماری اندروید است که از پایین روی لایه دوم قرار گرفته است. این قسمت از معماری، فراهم کننده مولفه کلیدی به نام ماشین مجازی Dalvik می باشد که نوعی ماشین مجازی جاوای اختصاصی و بهینه شده برای اندروید می باشد.
Dalvik VM از ویژگی های هسته لینوکس مانند مدیریت حافظه و چند نخی که در زبان جاوا وجود دارد استفاده می کند. Dalvik VM به هر وسیله اندرویدی اجازه می دهد تا با استفاده از نمونه ای که از Dalvik VM ساخته است، در پردازش اختصاصی خودش اجرا شود.
زمان اجرای اندروید، همچنین مجموعه ای از کتابخانه های هسته را فراهم می آورد که به توسعه دهندگان اپلیکیشن اندروید اجازه می دهد تا با استفاده از زبان برنامه نویسی جاوای استاندارد، به نوشتن اپلیکیشن های اندروید بپردازند.
4- فریمورک اپلیکیشن
لایه فریمورک اپلیکیشن، سرویس های سطح بالای بسیاری را در فرم کلاس های جاوا، برای اپلیکیشن ها فراهم میکند. توسعه دهندگان اپلیکیشن می توانند از این سرویس ها در اپلیکیشن هایشان استفاده کنند. کل اپلیکیشن های اندروید در لایه بالایی قرار می گیرند. شما اپلیکیشن خود را خواهید نوشت تا در این لایه بالایی نصب شود. مثال هایی از چنین اپلیکیشن هایی عبارتند از دفترچه مخاطبین، مرورگر وب، بازی های اندروید و …
فریمورک اندروید شامل سرویس های کلیدی زیر می باشد:
- Activity Manager – کنترل تمام جوانب چرخه حیات اپلیکیشن و پشته فعالیت آن.
- Content Providers – قادر به ساختن اپلیکیشن ها به انتشار و به اشتراک گذاری دیتا با اپلیکیشن های دیگر.
- Resource Manager – تامین دسترسی به منابع توسازی شده غیر-کد مانند رشته ها، تنظیمات رنگ، و چیدمان های واسط کاربری.
- Notifications Manager – اجازه نمایش دادن آلارم و هشدار به کاربر توسط اپلیکیشن ها.
- View System – یک مجموعه قابل گسترش از View های استفاده شده برای ایجاد واسط کاربری اپلیکیشن.
کامپوننت های اپلیکیشن اندروید
کامپوننت های اپلیکیشن ، بلوک های سازنده اساسی یک اپلیکیشن اندروید هستند. این کامپوننت ها ارتباط ضعیفی با فایل مانیفست اپلیکیشن AndroidManifest.xml دارد. فایل مانیفست اپلیکیشن، هر کامپوننت از اپلیکیشن و چگونگی تعامل آن را توصیف می کند.
کامپوننت های اصلی که می توان از آنها در نوشتن یک اپلیکیشن اندروید استفاده نمود به ۴ دسته اصلی قابل تقسیم بندی هستند:
کامپوننت | توصیف |
Activities | مدیریت UI و تعامل کاربر با صفحه تلفن هوشمند. |
Services | مدیریت پردازش بک گراند مرتبط با یک اپلیکیشن. |
Broadcast Receivers | مدیریت ارتباطات میان سیستم عامل اندروید و اپلیکیشن ها |
Content Providers | مدیریت مشکلات مربوط به دیتا و مدیریت دیتابیس. |
Activities
هر Activity یک صفحه با یک رابط کاربری را نشان می دهد، به طور خلاصه Activity اکشن ها را روی صفحه نمایش انجام می دهد. برای مثال، یک اپلیکیشن ایمیل، می تواند دارای یک Activity باشد که یک لیستی از ایمیل های جدید را نمایش دهد، Activity دیگری برای نگارش ایمیل لازم است و یک Activity دیگر برای خواندن ایمیل ها. اگر یک اپلیکیشن بیش از یک Activity داشته باشد، آنگاه یکی از آنها باید مشخص شود تا هنگام اجرا شدن اپلیکیشن، نمایش داده شود. هر Activity به عنوان یک زیرکلاسی از کلاس Activity پیاده سازی می شود. مثال زیر را ببینید:
{ } public class MainActivity extends Activity
Services
یک سرویس عبارت است از یک کامپوننت که در بک گراند اجرا می شود تا عملیات اجرای طولانی را به انجام برساند. برای مثال، یک سرویس ممکن است یک موزیک را در بک گراند پخش کند درحالیکه کاربر با یک اپلیکیشن دیگری کار میکند یا ممکن است بدون اینکه تعامل کاربر با یک Activity مسدود شود، بارگیری دیتا از شبکه صورت گیرد. یک سرویس به هنوان یک زیرکلاس از کلاس Service پیاده سازی می شود:
{ } public class MyService extends Service
Broadcast Receivers
این کامپوننت، به پیام های Broadcast ای که از اپلیکیشن یا سیستم دیگری دریافت می شود، پاسخ می دهد. برای مثال، اپلیکیشن ها می توانند یک Broadcast را شروع کنند تا اپلیکیشن های دیگر بدانند که دیتایی در موبایل دانلود شده است و آماده استفاده است. آنگاه، Broadcast Receiver این ارتباط را درک کرده و اکشن مربوطه را آغاز خواهد کرد.
یک Broadcast Receiver به عنوان زیرکلاسی از کلاس BroadcastReceiverclass پیاده سازی می شود و هر پیام به عنوان یک آبجکت Intent ، Broadcast کننده می باشد.
} public class MyReceiver extends BroadcastReceiver
{ } public void onReceive(context,intent)
{
Content Providers
یک کامپوننت content provider در مواقع مورد نیاز، با درخواست اپلیکیشن ها، دیتا را از یک اپلیکیشن گرفته و به اپلیکیشن دیگری می دهد. چنین درخواست هایی توسط توابعی از کلاس ContentResolverclass مدیریت می شود. دیتا ممکن است در یک فایل سیستم، دیتابیس یا جای دیگری ذخیره شود.
یک content provider به عنوان زیرکلاسی از کلاس ContentProvider پیاده سازی می شود و باید یک مجموعه استانداردی از API ها را پیاده سازی کند که اپلیکیشن های دیگر را قادر به انجام تراکنش نمایند.
} public class MyContentProvider extends ContentProvider
{ } ()public void onCreate
{
Additional Components
کامپوننت های دیگری نیز وجود دارند که در ساخت موجودیت های اشاره شده در بالا، منطق آنها و ارتباط بین آنها استفاده می شوند. این کامپوننت ها عبارتند از:
کامپوننت ها | توصیف |
Fragments | نمایش یک بخش از رابط کاربری در یک Activity |
Views | المان های UI مانند دکمه ها، فرم ها و … که روی صفحه نمایش رسم می شوند. |
Layouts | سلسله مراتب View که فرمت صفحه نمایش و ظاهر View ها را کنترل می کند. |
Intents | پیام هایی که کامپوننت ها را به هم متصل می کند. |
Resources | المان های خارجی، مانند استرینگ ها، ثابت ها، و تصاویر قابل ترسیم |
Manifest | فایل پیکربندی برای اپلیکیشن |
درباره مجید شبیری
کارشناس ارشد فناوری اطلاعات از دانشگاه صنعتی امیرکبیر. مدیر و مؤسس "علوم نوین امیرکبیر"، متخصص برنامه نویسی، شبکه، لینوکس و امنیت. از سال 84 همزمان با شروع تحصیلات دانشگاهی، وارد حوزه تخصصی مهندسی نرم افزار شدم و اکنون مشغول تحقیق، توسعه و آموزش در حوزه بلاک چین هستم و معتقدم بلاکچین به زودی فضای کسب و کارها را منقلب خواهد کرد.
نوشته های بیشتر از مجید شبیری
دیدگاهتان را بنویسید