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

در جلسه آموزش نصب اندروید استودیو با نحوه‌ی نصب محیط توسعه Android Studio و همچنین ساختار SDK آشنا شدیم. در این جلسه قصد دارم شما را با محیط اندروید استودیو، نحوه‌ی ساخت پروژه اندروید و ساختار پروژه آشنا کنم.

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

به نام خدا. با اجرای اندروید استودیو، پنجره‌ی زیر ظاهر می شود که در نسخه جدید یعنی Arctic Fox با تغییراتی همراه بوده است. در این نسخه یک منو در سمت چپ پنجره خوش آمد گویی اضافه شده که دسترسی به گزینه‌های Customize و Plugins را به صورت مستقیم امکان پذیر کرده است.
در قسمت Customize تنظیمات مربوط به رنگ پس زمینه IDE و همچنین فونت‌ها قرار دارد. برای دسترسی به گزینه‌‌های مربوط به ساخت پروژه جدید و یا import (درون ریزی) پروژه‌های آماده، در منوی سمت راست باید گزینه Projects انتخاب شده باشد.

آموزش ساخت پروژه اندروید در اندروید استودیو
در این حالت سه گزینه در وسط صفحه نمایش داده می‌شود. گزینه New Project برای ایجاد و ساخت پروژه جدید اندرویدی، گزینه Open برای باز کردن پروژه‌ای که قبلا ساختید (یا قبلا توسط توسعه دهنده دیگری ساخته شده و قصد استفاده از آن را دارید) و Get from VCS برای دریافت پروژه‌های موجود در مخازن آنلاین مانند GitHub استفاده می‌شود. توجه داشته باشید حتما باید بر روی آیکون هر گزینه کلیک کرد تا صفحه مورد نظر باز شود.
سایر گزینه‌ها که تا قبل از انتشار نسخه Arctic Fox یعنی نسخه ۴٫۳ به قبل در کنار این گزینه‌ها نمایش داده می‌شد به دلیل کارایی کمتر آنها به زیر مجموعه گزینه More Actions منتقل شده است. در این جلسه ما فقط با گزینه New Project سروکار داشته و برای ساخت پروژه جدید روی آن کلیک می‌کنیم.

انتخاب نوع اپلیکیشن و اکتیویتی در اندروید استودیو
انتخاب نوع اپلیکیشن و اکتیویتی در اندروید استودیو

در مرحله دوم نوع پروژه اندروید و همچنین نوع اکتیویتی (Activity) اصلی را باید تعیین کنیم. هدف من ساخت اپلیکیشن برای تلفن همراه و تبلت است بنابراین همان تب نخست یعنی Phone and Tablet را انتخاب می‌کنم.
سایر گزینه‌ها هرکدام برای یک هدف خاص پیش بینی شده. Wear OS برای ساخت اپلیکیشن ابزار پوشیدنی (مانند ساعت هوشمند)، Android TV برای تلویزیون‌های هوشمند و Automotive برای خودروهایی که از سیستم عامل اندروید استفاده می‌کنند. در نسخه‌های قبلی اندروید استودیو یک گزینه دیگر با نام Android Things هم وجود داشت که مربوط به برنامه‌های اینترنت اشیاء بود که در نسخه جدید حذف شده است.
اندروید استودیو چند نوع مختلف از اکتیویتی را پیشنهاد می‌دهد. به عبارت دیگر، هر گزینه یک قالب آماده و یک صفحه از پیش طراحی شده را در اختیار ما قرار می دهد که می‌توان بر اساس نیاز، آن را ویرایش کرد.
من نوع ساده‌ی آن یعنی Empty Activity (اکتیویتی خالی) را انتخاب می‌کنم. اکتیویتی‌ای که جز عبارت Hello World در مرکز صفحه هیچ چیز دیگری ندارد. با مفهوم اکتیویتی در ادامه بحث آشنا خواهید شد. به مرحله‌ی بعد می‌روم:

انتخاب نام پروژه اندروید ، API Level و زبان پروژه اندروید
انتخاب نام پروژه اندروید ، API Level و زبان پروژه اندروید

Name: در فیلد Name نام اپلیکیشن را وارد می‌کنم. این نام به همراه آیکونی که بعدا برای برنامه‌ی خود انتخاب می‌کنیم، در لیست اپلیکیشن‌های نصب شده‌ی روی دیوایس اندرویدی به کاربر نمایش داده می‌شود.
Package name: هر اپلیکیشن در اپ استورهایی مانند گوگل پلی ، بازار و … بر اساس Package name آن تشخیص داده می‌شود و نام اپلیکیشن ملاک نیست. به عنوان مثال ممکن است چندین اپلیکیشن با نام Calendar به معنی تقویم در مارکت‌ها موجود باشد.
اما Package name برای هر اپلیکیشن یکتاست و اگر نام پکیج من با یک اپلیکیشن دیگر موجود در مارکت یکسان باشد، مارکت اجازه‌ی ثبت و انتشار آن‌را نمی‌دهد. مارکت‌ها بر اساس همین نام پکیج، بروزرسانی‌های منتشر شده برای اپلیکیشن‌های نصب شده روی دیوایس کاربر را بررسی و اعلام می‌کنند.
Package name از دو بخش تشکیل می‌شود. بخش اول یک نام دامنه (Domain name) و بخش دوم نام اصلی برنامه. مزیت استفاده از دامین (دامنه) این است که احتمال تشابه نام پکیج انتخاب شده برای توسعه دهندگان مختلف را به حداقل می‌رساند.
برای مثال من از دامین وب سایت android-studio.ir استفاده می‌کنم که بنا برا الگوی پیشنهادی اندروید استودیو ابتدا پسوند دامین یعنی ir و سپس نام دامین قید شده. بعد از دامین یک نام اضافه می‌شود که معمولا همان نام اپلیکیشن است. البته در انتخاب پکیج نیم هیچ قاعده‌ و الزام خاصی وجود ندارد. برای مثال الزامی به استفاده از دامین نیست و مقدار زیر هم صحیح است:

android_studio.androidcourses

یا قسمت دوم حتما نباید نام اصلی پروژه باشد و می‌تواند هر عبارت دیگری را شامل شود. اگر مالک یک دامین هستید بهتر است آنرا بکار ببرید اما اگر مالک هیچ دامینی نیستید طبق خط بالا یک مقدار دلخواه وارد کنید. از بکار بردن دامینی که در اختیار سایر افراد یا شرکت‌هاست خودداری کنید.
Save Location: این فیلد مربوط به محل ذخیره سازی پروژه اندروید است.
Language: در این قسمت زبان پیش فرض پروژه اندروید را تعیین می‌کنیم. مدتی از معرفی زبان کاتلین (Kotlin) برای اندروید می‌گذرد و از اندروید استودیو ۳٫۳٫۲ انتخاب زبان به wizard پروژه اضافه شده. در نسخه جدید اندروید استودیو یعنی Arctic Fox زبان کاتلین به صورت پیش فرض انتخاب شده که من فعلا با جاوا کار می‌کنم بنابراین انتخاب من Java است.
Minimum SDK: این امکان را به برنامه نویس می‌دهد تا پایین‌ترین نسخه‌ی اندرویدی که اپلیکیشن قرار است پشتیبانی کند را تعیین نماید. لغت Minimum به معنی حداقل بوده و در اینجا به این معنی است که باید تعیین کنم اپلیکیشن من پایین‌ترین نسخه اندرویدی که پشتیبانی خواهد کرد کدام API است.
در زمان تهیه‌ی این آموزش نزدیک به ۹۸% دیوایس‌های اندرویدی که در اختیار کاربران است از API 19 به بالا هستند بنابراین من همین نسخه را انتخاب می‌کنم. علت الزامی بودن تعیین مینیمم این است که در هر نسخه‌ی جدید از اندروید، امکانات و قابلیت‌هایی اضافه می‌شود که اگر این امر را لحاظ نکنیم، ممکن است دارندگان دیوایس با نسخه‌های پایین‌تر در مواردی با مشکلاتی مواجه شوند.
با انتخاب هر گزینه به عنوان مینیمم، اطلاعاتی در مورد آن API و سطح گستردگی آن نمایش داده می‌شود.
همانطور که در تصویر فوق مشاهده می‌کنید، در زمان بروز رسانی این آموزش، با انتخاب API 19 عبارتی در زیر آن ظاهر شده با این مضمون که اپلیکیشن ما بر روی ۹۸٫۱% دستگاه‌های اندرویدی قابل استفاده خواهد بود.
احتمالا می‌پرسید چرا پایین‌ترین نسخه یعنی API 9 را انتخاب نکردم تا اطمینان پیدا کنم ۱۰۰% دیوایس‌ها می‌توانند از این اپلیکیشن استفاده کنند؟ برخی قابلیت‌های اندروید که در نسخه‌های جدید معرفی شده، پیاده سازی آن برای نسخه‌های قدیمی غیر ممکن و یا پیچیده است. بنابراین منطقی نیست من برای تعداد انگشت شمار گوشی و تبلت‌های مربوط به ۱۲ سال پیش بخواهم وقت و انرژی بیشتری صرف کنم یا برخی محدودیت‌ها را بپذیرم.
با کلیک روی گزینه Help me choose به نمودار کاملی در این خصوص دسترسی خواهید داشت.

نکته: در فصل قبل با SDK و همچنین Platform ها آشنا شدیم و دانستیم که با انتشار هر نسخه از اندروید، یک API برای آن منتشر می‌شود. هر پروژه اندروید در سه ویژگی compileSdkVersion، targetSdkVersion و minSdkVersion با Platform ها سروکار دارد.
هنگامی که پروژه جدیدی می‌سازیم دو ویژگی اول یعنی کامپایل و نسخه هدف (Target) برابر با آخرین API نصب شده است و ویژگی Minimum همان API ای است که در این مرحله انتخاب می‌کنیم. البته نیازی به داشتن API مربوط به Minimum SDK در SDK نیست و صرفا آخرین و جدیدترین API استفاده می‌شود.

Use legacy android.support libraries: کتابخانه‌های Support از دو سال اخیر جای خود را به AndroidX داده‌ و به نوعی منسوخ شده‌اند با اینحال گزینه‌ای اینجا تعبیه شده تا در صورت تمایل برنامه نویس، بتوان از کتابخانه support به جای نسخه جدید آن استفاده کرد که البته با توجه به منسوخ شدن آن و عدم پشتیبانی از Play Services جدید، انتخاب این گزینه منطقی نخواهد بود. پیشنهاد می‌کنم مبحث مهاجرت به AndroidX را مطالعه کنید.
ضمن اینکه چنانچه Minimum SDK از API 29 و به بالا انتخاب شود این گزینه غیر فعال خواهد شد.
با کلیک روی دکمه Finish وارد محیط پروژه می‌شوم.
برای کار با پروژه اندرویدی نیاز است تا چندین ابزار و کتابخانه مختلف از مخزن‌های آنلاین گرِیدِل و گوگل دریافت و بر روی سیستم ما ذخیره شود. بنابراین بلافاصله عملیات دانلود ابزارها به صورت خودکار آغاز شده و بسته به سرعت اینترنت شما ممکن است چندین دقیقه زمان ببرد.
ابزاری که بیشترین حجم دانلود را در این مرحله به خود اختصاص می‌دهد، بیلد سیستم Gradle (گریدل) است که حجمی در حدود ۱۱۲ مگابایت دارد. مابقی ابزار بسیار کم حجم بوده و مجموع ترافیک مصرفی در این مرحله را می‌توان در مجموع حدود ۱۲۰ مگابایت براورد کرد.

دریافت و نصب آنلاین و خودکار گریدل و سایر ابزار
دریافت و نصب آنلاین و خودکار گریدل و سایر ابزار

در تصویر فوق مشاهده می‌کنید فایل gradle-7.0.2-bin.zip در حال دریافت است. هر چند ماه یکبار نسخه جدیدی از گریدل منتشر شده و ممکن است در زمانی که شما اولین پروژه را ساخته‌اید یا اندروید استودیو قصد دریافت نسخه جدیدتری از این ابزار را دارد، نسخه‌ای بالاتر از ۷٫۰٫۲ را دریافت نماید.
پس از دریافت Gradle، سایر ابزار نیز دریافت و ذخیره می‌شوند.
البته فرایند دریافت ابزار و کتابخانه‌ها تنها یکبار و در هنگام ساخت اولین پروژه انجام شده و در پروژه‌های بعدی نیازی به دریافت مجدد آنها نیست زیرا ابزار مورد نیاز قبلا در کش اندروید استودیو و بر روی سیستم شما ذخیره شده. مگر آنکه در آینده نسخه جدیدی از ابزار منتشر شده باشد که در اینصورت اندروید استودیو اقدام به دریافت نسخه جدید آنها خواهد نمود.
تا آماده شدن پروژه یا به اصطلاح بیلد (Build) شدن آن مدت زمانی باید صبر کرد که در ساخت اولین پروژه این زمان چند دقیقه بوده و در پروژه‌های بعدی ممکن است ظرف چند ثانیه هم فرایند بیلد انجام شود.
مساله‌ای که در دریافت آنلاین وجود دارد این است که این سرویس برای کاربران ساکن ایران مسدود بوده و بنابراین در این فرایند با مشکل دچار می‌شویم. بنابراین لازم است با استفاده از نرم افزار یا سرویس‌هایی که کار تغییر IP (مانند انواع VPN) را انجام می‌دهند این محدودیت را رفع کنیم.
البته سرویس‌های ایرانی ویژه دور زدن تحریم‌های نرم افزاری وجود دارند که بدون نیاز به نصب هرگونه نرم افزار می‌توان این محدودیت را رفع نمود. توصیه می‌کنم حتما صفحه رفع محدویت‌ها در اندروید استودیو را مطالعه کنید.

تذکر: چه در هنگام ساخت اولین پروژه و چه در آینده که قصد اضافه کردن کتابخانه‌های مورد نیاز خود را به پروژه داشته باشید، رفع محدودیت‌های مربوط به کاربران داخل ایران ممکن است قدری برایتان آزار دهنده باشد که باید صبوری کرده و روش‌های متفاوت را تست و بررسی کنید.
برای مثال اگر سرعت اینترنت شما پایین باشد با فعال کردن ابزار و سرویس‌های تغییر IP ممکن است فرایند دریافت ابزار با اختلال مواجه شده و لازم باشد چندین بار آن را تکرار کنید. چنانچه ابزار به طور کامل دریافت نشود نواری رنگی در بالای ادیتور نمایش داده شده با این مضمون که فرایند Sync شدن پروژه موفقیت آمیز نیست.
در اینصورت از فعال بودن نرم افزار یا سرویس تغییر آی‌پی خود مطمئن شده و با کلیک بر روی گزینه Try again موجود در این نوار، فرایند دریافت ابزار را چندین بار تکرار کنید.
ضمن اینکه در سرویس‌هایی مانند FOD و شکن که در صفحه رفع محدویت‌ها در اندروید استودیو معرفی شده، تنها کانکشن‌هایی از سرورهای پروکسی‌شان عبور می‌کند که جزء دامنه‌های تحریم شده باشد. یعنی مثل برنامه‌های VPN نیست که تمام درخواست‌ها را از سرورهای خود عبور دهند.
بنابراین از آنجایی که تا این لحظه (یعنی هنگام بروزرسانی این آموزش) هنوز وب سایت Gradle.org برای کاربران ایرانی محدود نشده و این دامنه در لیست سرویس دهنده‌های عبور از تحریم‌ها وجود ندارد، ممکن است در هنگام دریافت فایل gradle چنانچه یکی از این سرویس‌ها را فعال کرده باشید، با مشکل مواجه شوید و لازم باشد موقتا سرویس تغییر آی‌پی را غیر فعال کرده تا فایل گریدل دریافت شده و بعدا که برای دریافت سایر ابزارها مجدد ارور گرفتید، سرویس را دوباره فعال کنید.
اگر هم از نرم افزار های VPN عمومی استفاده می‌کنید که مشکلی نبوده و چه گریدل که از سرور gradle.org دریافت می‌شود و چه مابقی ابزاری که از مخازن گوگل دریافت می‌شوند، قاعدتا بدون اختلال دریافت و نصب خواهند شد.
به طور کل اگر در این مرحله گیر کردید نا امید نشده و صبر جناب ایوب را پیش بگیرید! البته بر خلاف سایر ابزار که امکان نصب دستی و آفلاین آنها وجود ندارد، فایل Gradle را می‌توان خارج از محیط اندروید استودیو و از طریق وب سایت رسمی آن دانلود و در پوشه مربوطه جایگذاری کرد که توضیحات لازم در ادامه همین آموزش ذکر شده است.
بنابراین چنانچه اینترنت پایداری در اختیار ندارید می‌توانید گریدل را که حجم نسبتا بالایی داشته را با برنامه‌های مدیریت دانلود، دریافت کرده و فقط مابقی ابزار اندروید استودیو که حجم بسیار کمی دارند را به صورت خودکار در محیط اندروید استودیو و با استفاده از برنامه‌ها و سرویس‌های تغییر آی‌پی دریافت کنید.
نکته: چنانچه قصد دارید گریدل به صورت خودکار و آنلاین توسط خود اندروید استودیو دریافت و نصب شود، ابتدا هیچ ابزار تغییر IP را فعال نکرده و با توجه به در دسترس بودن آن برای داخل ایران اجازه دهید تا این مورد دریافت و نصب شود.
سپس زمانی که اندروید استودیو بخواهد سایر ابزار را دریافت نماید، با توجه به مسدود بودن مخزن آنلاین گوگل، با ارور عدم برقراری اتصال روبرو خواهید شد که کافیست حالا یکی از روش‌های تغییر آی پی را انتخاب کرده و با استفاده از گزینه Try Again نمایش داده شده در نوار رنگی بالای ادیتور و یا گزینه Sync Project with Gradle Files در نوار ابزار اندروید استودیو، برای دریافت مجدد ابزار باقی مانده تلاش کنید:

اخطار Gradle project sync failed
اخطار Gradle project sync failed

به طور کلی هرگاه به هر دلیلی بیلد شدن پروژه متوقف شد، پس از رفع خطای احتمالی باید مجدد پروژه را Sync (سینک به معنی همگام سازی) کنید. در صفحه پرسش‌ها و مشکلات رایج توضیحات لازم در خصوص ارورها ارائه شده.

به خطاهای نمایش داده شده در تب Build دقت کنید.

اخطار Gradle project sync failede>

برای مثال در تصویر فوق اخطاری در خصوص عدم امکان دسترسی به سرور services.gradle.org نمایش داده شده که باعث شده فایل گریدل دانلود نشود. اتصال به اینترنت و همچنین سرویس یا برنامه تغییر IP را بررسی کرده و مجدد تلاش کنید.
هرگاه تمامی کتابخانه‌های مورد نیاز به طور کامل دریافت شد، پیغام finished در تب Build نمایش داده می‌شود:

بیلد (ساخته شدن) موفقیت آمیز پروژه اندرویدی
بیلد (ساخته شدن) موفقیت آمیز پروژه اندرویدی

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

بیلد سیستم Gradle (گریدل) چیست؟

بد نیست اطلاعات مختصری در خصوص گریدل بدانیم. به یاد داشته باشید یک برنامه نویس و توسعه دهنده باید فراتر از الزامات مربوط به زبان برنامه نویسی و مباحث فنی بکار رفته در روند توسعه نرم افزار اطلاعات داشته باشد.
این یک امتیاز منفی برای شما محسوب خواهد شد اگر به عنوان یک توسعه دهنده اندروید ندانید لینوکس چیست که اندروید بر پایه‌ی آن ساخته شده، یا گریدل که در اندروید استودیو بکار رفته چه کاربردی دارد!

مشکل Gradle در اندروید استودیو

Gradle یک بیلد سیستم (Build System) متن باز و رایگان است که گوگل در سال ۲۰۱۳ اعلام کرد که از این بیلد سیستم در اندروید استودیو استفاده می‌کند.
بیلد سیستم یا سیستم ساخت، ابزاری ست که طیف وسیعی از عملیات موردنیاز برای توسعه و ساخت یک نرم افزار از جمله ساخت پروژه، پکیج کردن، فشرده سازی منابع، کامپایل کدها و… را انجام می‌دهد.
بهتر است به این چند خط توضیح بسنده نکرده و چند دقیقه‌ای را در خصوص گریدل در وب جستجو و مطالعه کنید.

نصب آفلاین Gradle

چنانچه به هر دلیلی گریدل بصورت خودکار و آنلاین روی اندروید استودیو نصب نشد با خطایی مانند

Could not install gradle distribution from 'https://services.gradle.org/distributions/gradle-7.0.2-bin.zip'

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

Users\[UserName]\.gradle\wrapper\dists\gradle-xx

داخل این فولدر یک فولدر با نامی متشکل از کاراکترهای تصادفی و بدون معنی ساخته شده. داخل این فولدر یک فایل با پسوند zip.part قرار دارد. هنگامی که گریدل به صورت آنلاین نصب می‌شود، پس از دریافت کامل فایل، فایل تبدیل به zip شده و از حالت فشرده خارج می‌شود. این تمامِ کاری است که ما باید به صورت دستی انجام دهیم!

محل قرارگیری فایل gradle
محل قرارگیری فایل gradle

برای دانلود فایل گریدل کافیست نام فایل زیپ را گوگل کنید:

دانلود و نصب دستی گریدل در اندروید استودیو
دانلود و نصب دستی گریدل در اندروید استودیو

در صفحه‌ی Gradle Distributions فایل موردنظر را پیدا کرده و دانلود کنید. دقت کنید نام و نسخه‌ی گریدل باید عینا مطابق باشد. برای یافتن سریع لینک، در صفحه‌ی مرورگر Ctrl + F زده و نام فایل زیپ را جستجو کنید:

دانلود و نصب دستی گریدل در اندروید استودیو

یا خیلی ساده تر؛ اگر به یاد داشته باشید لینک دانلود گریدل در کادر خطای build اندروید استودیو نمایش داده شده بود. روی لینک کلیک و کپی (Ctrl + C) کنید.
پس از دانلود فایل، ابتدا اندروید استودیو را ببندید. سپس فایل‌های موجود در فولدر را حذف و فایل زیپ را جایگزین کنید:

دریافت و نصب دستی گریدل در اندروید استودیو

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

نصب آفلاین Gradle در اندروید استودیو

Activity (اکتیویتی) در اندروید

هر پروژه اندروید حداقل یک اکتیویتی دارد. اکتیویتی همان صفحه‌ یا رابط کاربری است که محتوای مدنظر ما را به کاربر نمایش می‌دهد. تعداد اکتیویتی‌های هر اپلیکیشن به میزان و نوع محتوا و البته نظر توسعه دهنده بستگی دارد.
یک اپلیکیشن ساده ممکن است فقط یک اکتیویتی داشته باشد در حالی که یک اپلیکیشن دیگر می‌تواند شامل ده‌ها اکتیویتی باشد. هر اکتیویتی از دو بخش تشکیل می‌شود؛ یک فایل xml و دیگری فایل java (یا kotlin) که اولی شامل اِلِمان‌های تشکیل دهنده‌ی رابط کاربری صفحه و دومی مربوط به کدهای عملکردی مرتبط با آن است. پروژه‌ای که ساختیم به صورت پیش فرض یک اکتیویتی دارد. activity_main.xml و MainActivity.java فایل‌های این اکتیویتی هستند. توضیحات بیشتر در مباحث آتی بیان خواهد شد.

آشنایی با محیط پروژه اندروید استودیو

اندروید استودیو از چند بخش تشکیل شده که هر قسمت وظیفه‌ای به عهده دارد.

محیط برنامه نویسی اندروید استودیو
محیط توسعه اندروید استودیو (Android Studio IDE)

ساختار پروژه

ستون سمت چپ ساختار پروژه اندروید را نشان می‌دهد. نحوه‌ی نمایش ساختار پروژه چند حالت دارد که حالت پیش فرض Android است. در این حالت پروژه به دو قسمت کلی app و Gradle Scripts تقسیم می‌شود:

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

به صورت مختصر ساختار پروژه را توضیح می‌دهم. توضیحات کامل تر در مباحث بعدی ارائه می‌شود. روی فایل AndroidManifest.xml دوبار کلیک می‌کنم تا فایل در ادیتور باز شود:

AndroidManifest.xml

فایل AndroidManifest پروژه اندرویدی
فایل AndroidManifest پروژه اندرویدی

این فایل حاوی اطلاعات اصلی پروژه است. از جمله نام (خط ۸) و آیکون اپلیکیشن (خط‌های ۷ و ۹)، نام پکیج (خط ۳)، قالب یا theme برنامه (خط ۱۱)، اکتیویتی‌ها و… .
پوشه‌ی java یک پکیج پیش فرض دارد که فایل جاوای اکتیویتی فعلی پروژه (MainActivity) درون آن قرار دارد. دو پکیج دیگر با عنوان AndroidTest و test در قسمت java ساخته شده که مربوط به فرایند تست پروژه بوده و در صورت عدم نیاز می‌توانید این دو مورد را حذف کنید. تمامی کلاس‌های جاوا و کاتلین پروژه درون این فولدر قرار می‌گیرند.
پوشه‌ی res (مخفف Resource به معنی منابع) حاوی منابع مختلفی است:
Drawable: شامل تصاویر مورد استفاده در اپلیکیشن، برخی فایل‌های xml مانند بیت مپ‌ها و … که از طریق کلاس R.drawable قابل دسترسی هستند.
Layout: شامل لایه‌های واسط کاربری (مانند activity_main.xml) که از طریق کلاس R.layout قابل دسترسی می‌باشند.
mipmap: تصاویر مربوط به آیکون اپلیکیشن در این پوشه قرار می‌گیرد.
Values: فایل‌های xml با محتوای آرایه‌ها (strings.xml)، قالب‌ها (themes.xml)، رنگ‌ها (colors.xml)، ابعاد و اندازه‌ها (dimens.xml) و … در این دایرکتوری نگهداری می‌شود.
Gradle Scripts: در این قسمت چند فایل وجود دارد که مربوط به تنظیمات پروژه و اندروید استودیو می‌باشد. دو فایل build.gradle در پروژه وجود دارد. اولی (Project) حاوی اطلاعات کلی از جمله مخازن (Repository) دریافت کتابخانه‌ها است:

فایل build.gradle (Project)
فایل build.gradle (Project)

کتابخانه‌هایی که در پروژه‌های اندرویدی استفاده می‌کنیم از مخزن‌های google و mavenCentral دریافت می‌شوند که به علت تحریم دسترسی به هردو در داخل ایران مسدود شده و به همین دلیل نیاز به تغییر آی‌پی داریم.

فایل build.gradle (Module)
فایل build.gradle (Module)

فایل دوم (Module: app) شامل اطلاعات پایه‌ی پروژه است از جمله Minimum API (minSdkVersion)، Target API (targetSdkVersion) و Compile SDK (compileSdkVersion) و کتابخانه‌هایی که در پروژه استفاده می‌شوند (بلاک dependencies).

نوار ابزار

نوار ابزار اندروید استودیو شامل چند گزینه است:

نوار ابزار اندروید استودیو
نوار ابزار اندروید استودیو

شماره ۱: اجرا (Run) کردن پروژه روی دیوایس مجازی یا حقیقی جهت تست و عیب‌یابی پروژه اندروید.
شماره ۲: قابلیت Apply Changes یک تفاوت با Run دارد. با هربار Run کردن پروژه روی شبیه ساز یا دیوایس واقعی، کل پروژه از ابتدا مجدد کامپایل شده و به دیوایس منتقل می‌گردد که زمان زیادی را تلف می‌کند اما برای پروژه‌ای که در حال اجراست و تغییراتی را اعمال کرده‌ایم، با استفاده از Apply Changes بجای Run تنها بخش‌هایی از پروژه که تغییر کرده به دیوایس منتقل شده و بروزرسانی پروژه با سرعت بیشتری انجام می‌شود.
این گزینه تا نسخه ۳٫۵ اندروید استودیو Instant Run نام داشت که دچار تغییرات و اصلاحاتی شد و از آن پس Apply Changes نامگذاری شد.

نکته: برای استفاده از این قابلیت باید Platform API دیوایس یا دیوایس‌های مدنظر را در SDK نصب داشته باشید. به عنوان مثال اگر می‌خواهید پروژه را روی دیوایس‌های با API 26 و API 27 تست کنید و قصد دارید از این ویژگی بهره ببرید باید API این دو نسخه در SDK موجود باشد.

شماره ۳: برای Sync (سینک یا همگام سازی) پروژه
شماره ۴: شبیه ساز (امولاتور) پیش فرض و داخلی اندروید استودیو (AVD)
شماره ۵: دسترسی به SDK Manager

نکته: در روند توسعه و ساخت اپلیکیشن حتما با خطاها و مشکلاتی روبرو خواهید شد. در اولین قدم برای حل مشکل، متن خطا را مطالعه و ترجمه کنید. اگر در درک زبان انگلیسی مشکل دارید از مترجم‌های آفلاین و آنلاین کمک بگیرید.
با دیدن یک خطا از کوره در نروید! ضمن اینکه بروز خطا به معنی ایراد در سیستم عامل و رایانه شما نیست. بنابراین انتظار نداشته باشید با حذف و نصب مجدد اندروید استودیو یا تعویض سیستم عامل خطا رفع شود. ببینید اندروید استودیو از شما چه خواسته‌ای دارد. اگر مفهوم خطا را درک نکردید آنرا در گوگل جستجو کنید. مشکل شما با احتمال نزدیک به ۱۰۰% قبلا مشکل ده‌ها و صدها نفر دیگر بوده.
پس به احتمال زیاد به جواب می‌رسید. بیشتر سوالات و مشکلات در حوزه برنامه نویسی و توسعه برنامه در وب سایت stackoverflow.com مطرح می‌شود. با سرچ ارور احتمالا اولین لینک مربوط به همین سایت است. لینک را باز کنید و پاسخ‌ها را با دقت مطالعه کنید. یا از وب‌سایت‌های فارسی کمک بگیرید. در وب‌سایت ما هم در صفحه‌ مشکلات و پرسش‌های رایج اندروید استودیو تا حد امکان مشکلات متداول کاربران با راه حل آن بررسی شده است.
پرسش مستقیم و طرح اشکال را برای مرحله‌ی آخر بگذارید. در این صورت زمان کمتری برای رسیدن به جواب صرف می‌کنید و لازم نیست چند ساعت یا چند روز را منتظر پاسخ من و بقیه بمانید!
دانلود فایل این آموزش با فرمت PDF
تعداد صفحات : ۲۰
حجم : ۱٫۵ مگابایت
قیمت : رایگان
تاریخ بروزرسانی آموزش : ۱۴۰۰/۰۶/۱۷
دانلود رایگان با حجم ۱٫۵ مگابایت لینک کمکی
این مطلب چقدر برایتان مفید بود؟ لطفا امتیاز دهید
4/5 - (35 امتیاز)
پرسش‌ها و دیدگاه‌های کاربران
دوره آموزش برنامه نویسی اندروید
دوره آموزش برنامه نویسی اندروید

با دریافت این دوره به تمامی آموزش‌های غیر رایگان و رایگان موجود در وب سایت دسترسی دارید که تخفیفی برای آموزش‌های غیر رایگان نیز درنظر گرفته شده. این پکیج به دو صورت دانلودی و ارسال پستی ارائه می‌گردد.
آموزش‌های اندروید استودیو در دو دسته «پایه» و «تکمیلی» منتشر می‌شوند.
آموزش‌های پایه شامل مباحث اصلی و ضروری و آموزش‌های تکمیلی مطالبی است که می‌بایست در کنار مطالب اصلی بررسی شود.
با خرید این دوره، به تمامی آموزش‌های غیر رایگانی که در آینده منتشر می‌شود نیز به صورت رایگان دسترسی خواهید داشت!

یک دیدگاه بنویسید

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

  • محمد مهدی سنگ تراش گفت:

    سلام
    وقت بخیر
    ممنون از پکیج آموزنده تون
    من تو همون ساخت پروژه جدید موندم. یعنی اون اول که باید گردل رو دانلود کنه اون مشکل داشت بعد مطابق اون آموزش هایی که در سایت گذاشتید رفتم باز هم نشد. به زور فکر کنم از اون مرحله گذشته ولی بعدش یه ارور جدید داد! 😐
    Could not initialize class com.android.repository.api.RepoManager

    با هیچ راه حلی حل نشد که نشد.
    خواهشمندم کمک کنید. خیلی دوست دارم که اندروید استودیو رو یاد بگیرم ولی امان از دست این ارورا

    • سیدمهدی مطهری گفت:

      سلام. احتمالا هنوز همه ابزار مورد نیاز برای ساخت پروژه دریافت نشده از مخزن آنلاین. با استفاده از توضیحات صفحه زیر، IP رو تغییر بدید بعد اندروید استودیو رو بسته و مجدد باز کنید:
      https://android-studio.ir/how-to-bypass-software-sanctions

      • محمد مهدی سنگ تراش گفت:

        سلام مجدد
        از هر فیلتر شکنی استفاده کردم نشد. چند بار امتحان کردم. از FOD و shekan هم استفاده کردم بازم نشد که نشد😢
        دیگه اشکم داره درمیاد.
        جسارتا میشه با انی دسک وصل بشید و نگاهی بندازید؟

        • سیدمهدی مطهری گفت:

          نه متاسفانه چون کار مان بری هست فرصت نمیشه. حوصله به خرج بدید و خسته نشید. من خودم اولین بار که می خواستم اندروید استودیو رو راه بندازم چون هیچ آموزش کاملی هم وجود نداشت دقیقا ۲ هفته وقتم رو گرفت!

  • مسعود گفت:

    سلام استاد
    می خواستم بپرسم من avd manager رو که باز می کنم و create virtual device رو میزنم ولی بعد از انتخاب دستگاه ارور no system image available برام میاد میشه راهنمایی کنید
    ممنون

    • سیدمهدی مطهری گفت:

      باید سیستم ایمیج API ای که قصد ساخت دیوایسش رو دارید قبلا نصب شده باشه. توضیحات بیشتر در مبحث نصب و راه اندازی اندروید استودیو:
      https://android-studio.ir/?p=249

  • آذری گفت:

    با سلام و خسته نباشیدخدمت شما
    در هنگامbuild پروژه با خطای
    could not resolve zipflinger -7.0.2.jar مواجه می شوم با اینکه این فایلها را نیز موجود دارم. آیا باید پوشه ای به نام jdk هم داشته باشیم که فایل jdk را در ان قرار دهیم و به سیستم بشناسانیم؟ این کار را هم انجام دادم ولی درست نشد ممنون می شم اگر راهنمایی بفرمایید.

    • سیدمهدی مطهری گفت:

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

  • امیر گفت:

    سلام وقتی سینک شدن پروژه تمام میشه این ارور رو میده
    connection refused:connect
    connect to 127.0.0.1:8580 [/127.0.0.1] failed: connection refused:connect

  • محمد امین بصائری گفت:

    سلام میدونین این مشکل برای چیه؟
    https://file.io/jG22MeIszmm2

    • سیدمهدی مطهری گفت:

      خط آخر ارور رو اگه دقت کرده باشید گفته شده نسخه کش شده پلاگین مورد نظر وجود نداره برای حالت Offline و این یعنی باید از حالت آفلاین خارجش کنید. نحوه تغییر آفلاین به آنلاین در صفحه پرسش های رایج موجوده
      https://android-studio.ir/problems-and-questions

  • شیرازی گفت:

    سلام
    آندروید استودیو ۴ رو نصب کردم، دفعه اول ۴٫۱ که با توجه به راه حل ها آناینستال کردم و مجددا این بار ۴٫۳ رو نصب کردم. فقط آفلاین میتونم برنامه و سایر کتابخانه ها و.. رو نصب کنم. برام این ارور میاد:
    Could not resolve org.jetbrains.kotlin: kotlin-gradle-plugin:1.3.72
    No cashed version of com.android.tools.build : gradle : 4.1.0available for offline mode.

    Google maven رو برای آفلاین مود هم قرار دادم، مشکل کجاست؟

    • سیدمهدی مطهری گفت:

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

  • فاطمه عرب زاده گفت:

    اون ارور درست شد
    الان ارور اینه
    Cause: jcenter.bintray.com:443 failed to respond
    پروکسی هم فعاله

  • فاطمه عرب زاده گفت:

    سلام وقت بخیر
    من همون اول کار یعنی تو نصب gradle موندم
    اروروم اینه
    > Could not resolve com.android.tools.build:gradle:4.1.3.
    Required by:
    project :
    > No cached version of com.android.tools.build:gradle:4.1.3 available for offline mode.
    > No cached version of com.android.tools.build:gradle:4.1.3 available for offline mode.

    Possible solution:
    – Disable offline mode and rerun the build
    چیکار باید انجام بدم؟؟
    راه های مربوط به jcenter و goole رو رفتم قبلا ارور یه چیز دیگه بود الان عوض شده
    gradle کاملا دانلود و نصب میشه ولی انگار build نمیشه.
    لطفا کمک کنید درستش کنم،من تازه اومدم تو این حوزه با ارور هاش آشنایی ندارم

    • سیدمهدی مطهری گفت:

      Disable offline mode and rerun the build
      در این خط گفته شده که گریدل رو باید از حالت آفلاین خارج کنید تا بتونه موارد ضروری رو از مخزن آنلاین دریافت کنه
      توضیحات فعال/غیر فعال کردن حالت آفلاین در صفحه زیر موجوده
      https://android-studio.ir/problems-and-questions

  • فرناز گفت:

    سلام. وقت بخیر. ممنونم از آموزش های عالی شما.
    من مجموعه را خریداری کرده ام. بعد از نصب اندروید و نصب آفلاین sdk برای ایجاد پروژه نمیتواند build کند و خطای ۴۰۳ را میدهد.
    Could not GET ‘https://jcenter.bintray.com/com/android/tools/build/gradle/4.1.3/gradle-4.1.3.pom’. Received status code 403 from server: Forbidden
    Disable Gradle ‘offline mode’ and sync project
    حتی مسیر نصب آفلاین گریدل هم رفتم باز درست نشد

    • سیدمهدی مطهری گفت:

      وقتی با اروری برخورد میکنید اول ببینید چی ازتون خواسته. در اکثر موارد به جواب میرسید.
      خط آخر گفته Disable Gradle ‘offline mode’ and sync project یعنی حالت آفلاین رو در تنظیمات بیلد گریدل باید غیر فعال کنید که در مطلب زیر توضیح داده شده این مورد:
      https://android-studio.ir/speed-up-android-studio-gradle-build/

  • احسان گفت:

    سلام
    ممنون بابت آموزشتون.
    ببخشید من یه مشکل داشتم اگه میشه لطفا راهنمایم کنید؟
    من یه پروژه پلیر آنلاین ساختم با minapi 16 ولی وقتی روی گوشی اندروید ۴ تست میکنم آهنگها و کسارو نمیاره و برنامه درست کار نمیکنه!!!
    حتی جای دکمه ها هم برعکسه!! میشه بفرماید چیکارکنم؟

  • رضا صالحی گفت:

    با سلام این ارور برام میاد
    could not get : و ادرس

  • پیمان گفت:

    سلام و تشکر ویژه بابت راهنمایی ها تون و سایت خوبتون
    بعد از نصب Gradle به صورت آفلاین روش آفلاینی وجود نداره که بشه پیغام
    unknown host dl.google.com
    رفع بشه ؟ حتما باید به نت وصل شد و فیلتر شکن استفاده کرد ؟ راه حل آفلاین نداره
    ممنون از شما

  • مسعود گفت:

    سلام
    در ساختار app زیر مجموعه های AndroidManifest.xml و java.xml برای من نشان نمی دهد.
    راهنمایی می فرمایید باید چیکار کنم

  • فرزاد گفت:

    با عرض سلام و خسته نباشید خدمت مهندس مطهری
    در رابطه با مشکل gradle sync failed:failed to open zip file:
    راستش قبل از این که شما جواب بدید , من به جای
    Gradle-6.5-all ,
    Gradle-6.5-bin
    رو دانلود و جایگذاری کردم و مشکل حل شد
    البته خود نرم افزار هم زیر همین خطا نوشته بود که bin رو بجای all می خاد
    از قبل هم jdk 15 رو هم روی لپتاپم نصب کرده بودم و پاکش کردم ولی فک کنم مشکل همون مورد اول بود

    • سیدمهدی مطهری گفت:

      دقت کنید در متن آموزش تاکیدی به نسخه all نشده. فقط گفته شده فایلی که اندروید استودیو در ارور نشون میده رو دانلود کنید. چه bin باشه چه all و نباید چیز دیگه ای دانلود کنید

  • فرزاد گفت:

    سلام وخسته نباشید
    ارور زیر برای من میاد
    Gradle sync failed : failed to open zip file
    Gradle’s dependancy cashe may be corrupt (this sometimes occures after a network connection timeout)
    هم از طریق یک نرم افزار تغییر ip استفاده کردم و هم از FOD ولی باز هم این ارور میاد
    ممنون میشم اگر راهنمایی کنید

    • سیدمهدی مطهری گفت:

      یک راه حل رو الان تو صفحه پرسش های رایج برای این مورد اضافه کردم. بررسی و تست بفرمایید. نتیجه رو هم توی دیدگاههای همون صفحه اطلاع بدید. ممنون
      https://android-studio.ir/problems-and-questions

  • حمید گفت:

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

  • mohammad گفت:

    سلام و عرض خسته نباشید ، این ارور دو روزه وقت من رو گرفته و هر کاری کردم که آنلاین و یا آفلاین گریدل رو نصب کنم نشد و این ارور رو میداد : Could not find com.android.tools.build:gradle:4.0.1.
    Searched in the following locations:
    – https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/4.0.1/gradle-4.0.1.pom
    – https://jcenter.bintray.com/com/android/tools/build/gradle/4.0.1/gradle-4.0.1.pom
    Required by:
    project :
    Open File

    • سیدمهدی مطهری گفت:

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

    • فرزاد گفت:

      دقیقا همین خطا برای منم به وجود اومد و خیلی اذیتم کرد که مربوط به همین تحریم ها میشه.
      یه راهی که برای من جواب داد و به نظرم برای تمام خطاهایی که ناشی از مشکل اتصال به دلیل تحریم ها است مراجعه به سایت shecan.ir است . من حتی از چند نرم افزار تغییر ip استفاده کردم ولی جواب نداد.
      برید به سایت shecan.ir و دستور العمل های گفته شده تو اون سایت رو دنبال کنید بعد میتونید تمام موارد رو به طور آنلاین از خود اندروید استودیو دانلود کنید.

  • R.S گفت:

    سلام و خسته نباشید
    Error: java.io.EOFException:SSL peer shut down incorrectly
    رو چطوری برطرف کنم؟؟

  • miss_ramezani گفت:

    سلام من جدیدا با یک خطا مواجه میشم حتی یک پروژه جدید هم ایجاد میکنم این پیغام میاد.
    could not download fragment-1.1.0.arr(androidx.fragment:fragment:1.1.0)

  • saeed گفت:

    با سلام

    من هر کاری کردم پروژه بیلد نمیشه و ارور Could not find com.android.tools.build:gradle:4.0.1. رو بهم میده حتی چک کردم در بلاک‌های buildscript و allprojects موجود در فایل build.gradle هردو مخزن google() و jcenter() تعریف شده بود ممنون میشم کمک کنید.

    با تشکر

  • عطیه گفت:

    سلام مرسی از مطالب خوبتون.یعنی نمیشه یه جا پروژه رو درست کنیم بعد ببریم رو یه سیستم دیگه که نت نداره کار کنیم؟
    حتما تو جای جدید باز نیاز به نت هست؟

  • مقداد گفت:

    سلام گریدل ۶٫۱٫۱ رو نصب کرد ولی وقتی میخاد گریدل ۴٫۰٫۰ رو نصب کنه این ارور میاد
    Could not find com.android.tools.build:gradle:4.0.0.

  • رامتین گفت:

    سلام…
    وقتتون بخیر…
    بعد از اینکه فایل زیپ مربوط به گردل رو توی اون پوشه قرار دادم و در اندروید استودیو رو باز کردم ، به این ارور بر خوردم!
    http://s10.picofile.com/file/8394063418/Capture.PNG
    توی گوگل هم راه حلی براش پیدا نکردم…
    ممنون میشم راهنماییم کنید.

  • مهدی گفت:

    سلام.
    وقت بخیر
    من طبق آموزش شما جلورفتم ولی این ارور رو موقع بیلد میگیرم:

    FAILURE: Build failed with an exception.

    * What went wrong:
    A problem occurred configuring root project ‘My Application’.
    > Could not resolve all artifacts for configuration ‘:classpath’.
    > Could not find gradle.jar (com.android.tools.build:gradle:4.1.0-alpha02).
    Searched in the following locations:
    https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/4.1.0-alpha02/gradle-4.1.0-alpha02.jar

    ممنون میشم راهنمایی بفرمایید.

  • جواد گفت:

    سلام وقتتون بخیر
    من میخام از اندروید استودیو استفاده کنم
    زمانی که میخام پروژه رو سینک کنم این رو ارور رو میده
    ERROR: Cause: dl.google.com:443 failed to respond
    از فیلتر شکن و … هم استفاده کردم باز هم این مشکل هست
    ممنون از راهنمایی شما

  • مهران گفت:

    سلام .moudle app در زیر شاخه گرید من وجود نداره.میشه کمم کنید

  • شمیم گفت:

    سلام ببخشید میشه از یک صفحه ی جاوا که کد دکمه داره رو میشه بفریستید..میخوام وصل کنیم دو صفحه رو.

  • محمدرضا گفت:

    سلام ،از اندروید ۳٫۵ استفاده میکنم ،یه مدت بخوبی کار میکرد تا اینک مجبور شدم از sdk tools اندروید امولاتور ۲۹٫۳٫۶ رو برای ران کردن دانلود کنم ،اما الان که این کارروکردم وقت avd رو برای هردیوایسی ران می کنم دوتا ارور میده که
    not enough disk space to run avd … exiting ; Emulator: emulator

    process finished with exit code 1

  • محسن گفت:

    با سلام و خسته نباشید خدمت شما.
    می خواستم بپرسم این مشکل رئپو چطوری حل کنم.
    ممنون میشم کمکم کنید.
    http://s7.picofile.com/file/8384190126/a.PNG

  • alireza گفت:

    واقعا بهم کمک کرد
    ممنون از سایت خوبتون