ساخت پروژه در اندروید استودیو، بررسی محیط توسعه و ساختار کلی پروژه
در جلسه آموزش نصب اندروید استودیو با نحوهی نصب محیط توسعه 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 Views Activity (اکتیویتی خالی) را انتخاب میکنم. اکتیویتیای که جز عبارت Hello World در مرکز صفحه هیچ چیز دیگری ندارد. با مفهوم اکتیویتی در ادامه بحث آشنا خواهید شد.
به مرحلهی بعد میروم:
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 به نمودار کاملی در این خصوص دسترسی خواهید داشت.
هنگامی که پروژه جدیدی میسازیم دو ویژگی اول یعنی کامپایل و نسخه هدف (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 را میتوان خارج از محیط اندروید استودیو و از طریق وب سایت رسمی آن دانلود و در پوشه مربوطه جایگذاری کرد که توضیحات لازم در ادامه همین آموزش ذکر شده است.
بنابراین چنانچه اینترنت پایداری در اختیار ندارید میتوانید گریدل را که حجم نسبتا بالایی داشته را با برنامههای مدیریت دانلود، دریافت کرده و فقط مابقی ابزار اندروید استودیو که حجم بسیار کمی دارند را به صورت خودکار در محیط اندروید استودیو و با استفاده از برنامهها و سرویسهای تغییر آیپی دریافت کنید.
سپس زمانی که اندروید استودیو بخواهد سایر ابزار را دریافت نماید، با توجه به مسدود بودن مخزن آنلاین گوگل، با ارور عدم برقراری اتصال روبرو خواهید شد که کافیست حالا یکی از روشهای تغییر آی پی را انتخاب کرده و با استفاده از گزینه Try Again نمایش داده شده در نوار رنگی بالای ادیتور و یا گزینه Sync Project with Gradle Files در نوار ابزار اندروید استودیو، برای دریافت مجدد ابزار باقی مانده تلاش کنید:
به طور کلی هرگاه به هر دلیلی بیلد شدن پروژه متوقف شد، پس از رفع خطای احتمالی باید مجدد پروژه را Sync (سینک به معنی همگام سازی) کنید. در صفحه پرسشها و مشکلات رایج توضیحات لازم در خصوص ارورها ارائه شده.
به خطاهای نمایش داده شده در تب Build دقت کنید.
e>
برای مثال در تصویر فوق اخطاری در خصوص عدم امکان دسترسی به سرور services.gradle.org نمایش داده شده که باعث شده فایل گریدل دانلود نشود. اتصال به اینترنت و همچنین سرویس یا برنامه تغییر IP را بررسی کرده و مجدد تلاش کنید.
هرگاه تمامی کتابخانههای مورد نیاز به طور کامل دریافت شد، پیغام finished در تب Build نمایش داده میشود:
پروژه با موفقیت ساخته شد و آماده استفاده است.
دو فایل MainActivity.java و activity_main.xml مربوط به همان Activity هستند که هنگام ساخت پروژه از نوع Empty را انتخاب کردم.
بیلد سیستم 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 Distributions فایل موردنظر را پیدا کرده و دانلود کنید. دقت کنید نام و نسخهی گریدل باید عینا مطابق باشد. برای یافتن سریع لینک، در صفحهی مرورگر Ctrl + F زده و نام فایل زیپ را جستجو کنید:
یا خیلی ساده تر؛ اگر به یاد داشته باشید لینک دانلود گریدل در کادر خطای build اندروید استودیو نمایش داده شده بود. روی لینک کلیک و کپی (Ctrl + C) کنید.
پس از دانلود فایل، ابتدا اندروید استودیو را ببندید. سپس فایلهای موجود در فولدر را حذف و فایل زیپ را جایگزین کنید:
حالا اندروید استودیو را باز کرده و مجدد پروژه را سینک کنید. اینبار گریدل از فایل محلی نصب میشود. در واقع فایل زیپ از حالت فشرده خارج شده و یک پوشه با همان نام ایجاد شده است:
Activity (اکتیویتی) در اندروید
هر پروژه اندروید حداقل یک اکتیویتی دارد. اکتیویتی همان صفحه یا رابط کاربری است که محتوای مدنظر ما را به کاربر نمایش میدهد. تعداد اکتیویتیهای هر اپلیکیشن به میزان و نوع محتوا و البته نظر توسعه دهنده بستگی دارد.
یک اپلیکیشن ساده ممکن است فقط یک اکتیویتی داشته باشد در حالی که یک اپلیکیشن دیگر میتواند شامل دهها اکتیویتی باشد. هر اکتیویتی از دو بخش تشکیل میشود؛ یک فایل xml و دیگری فایل java (یا kotlin) که اولی شامل اِلِمانهای تشکیل دهندهی رابط کاربری صفحه و دومی مربوط به کدهای عملکردی مرتبط با آن است. پروژهای که ساختیم به صورت پیش فرض یک اکتیویتی دارد. activity_main.xml و MainActivity.java فایلهای این اکتیویتی هستند. توضیحات بیشتر در مباحث آتی بیان خواهد شد.
آشنایی با محیط پروژه اندروید استودیو
اندروید استودیو از چند بخش تشکیل شده که هر قسمت وظیفهای به عهده دارد.
ساختار پروژه
ستون سمت چپ ساختار پروژه اندروید را نشان میدهد. نحوهی نمایش ساختار پروژه چند حالت دارد که حالت پیش فرض Android است. در این حالت پروژه به دو قسمت کلی app و Gradle Scripts تقسیم میشود:
به صورت مختصر ساختار پروژه را توضیح میدهم. توضیحات کامل تر در مباحث بعدی ارائه میشود. روی فایل AndroidManifest.xml دوبار کلیک میکنم تا فایل در ادیتور باز شود:
AndroidManifest.xml
این فایل حاوی اطلاعات اصلی پروژه است. از جمله نام (خط ۸) و آیکون اپلیکیشن (خطهای ۷ و ۹)، نام پکیج (خط ۳)، قالب یا 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) دریافت کتابخانهها است:
کتابخانههایی که در پروژههای اندرویدی استفاده میکنیم از مخزنهای google و mavenCentral دریافت میشوند که به علت تحریم دسترسی به هردو در داخل ایران مسدود شده و به همین دلیل نیاز به تغییر آیپی داریم.
فایل دوم (Module: app) شامل اطلاعات پایهی پروژه است از جمله Minimum API (minSdkVersion)، Target API (targetSdkVersion) و Compile SDK (compileSdkVersion) و کتابخانههایی که در پروژه استفاده میشوند (بلاک dependencies).
نوار ابزار
نوار ابزار اندروید استودیو شامل چند گزینه است:
شماره ۱: اجرا (Run) کردن پروژه روی دیوایس مجازی یا حقیقی جهت تست و عیبیابی پروژه اندروید.
شماره ۲: قابلیت Apply Changes یک تفاوت با Run دارد. با هربار Run کردن پروژه روی شبیه ساز یا دیوایس واقعی، کل پروژه از ابتدا مجدد کامپایل شده و به دیوایس منتقل میگردد که زمان زیادی را تلف میکند اما برای پروژهای که در حال اجراست و تغییراتی را اعمال کردهایم، با استفاده از Apply Changes بجای Run تنها بخشهایی از پروژه که تغییر کرده به دیوایس منتقل شده و بروزرسانی پروژه با سرعت بیشتری انجام میشود.
این گزینه تا نسخه ۳٫۵ اندروید استودیو Instant Run نام داشت که دچار تغییرات و اصلاحاتی شد و از آن پس Apply Changes نامگذاری شد.
شماره ۳: برای Sync (سینک یا همگام سازی) پروژه
شماره ۴: شبیه ساز (امولاتور) پیش فرض و داخلی اندروید استودیو (AVD)
شماره ۵: دسترسی به SDK Manager
با دیدن یک خطا از کوره در نروید! ضمن اینکه بروز خطا به معنی ایراد در سیستم عامل و رایانه شما نیست. بنابراین انتظار نداشته باشید با حذف و نصب مجدد اندروید استودیو یا تعویض سیستم عامل خطا رفع شود. ببینید اندروید استودیو از شما چه خواستهای دارد. اگر مفهوم خطا را درک نکردید آنرا در گوگل جستجو کنید. مشکل شما با احتمال نزدیک به ۱۰۰% قبلا مشکل دهها و صدها نفر دیگر بوده.
پس به احتمال زیاد به جواب میرسید. بیشتر سوالات و مشکلات در حوزه برنامه نویسی و توسعه برنامه در وب سایت stackoverflow.com مطرح میشود. با سرچ ارور احتمالا اولین لینک مربوط به همین سایت است. لینک را باز کنید و پاسخها را با دقت مطالعه کنید. یا از وبسایتهای فارسی کمک بگیرید. در وبسایت ما هم در صفحه مشکلات و پرسشهای رایج اندروید استودیو تا حد امکان مشکلات متداول کاربران با راه حل آن بررسی شده است.
پرسش مستقیم و طرح اشکال را برای مرحلهی آخر بگذارید. در این صورت زمان کمتری برای رسیدن به جواب صرف میکنید و لازم نیست چند ساعت یا چند روز را منتظر پاسخ من و بقیه بمانید!
تعداد صفحات : ۲۰
حجم : ۱٫۵ مگابایت
قیمت : رایگان
تاریخ بروزرسانی آموزش : ۱۴۰۲/۰۳/۱۵
دانلود رایگان با حجم ۱٫۵ مگابایت لینک کمکی
واقعاً از آموزش های کامل و دقیق شما ممنونم
اجرت با خدا
من در هنگام ساخت پروژه با خطای زیر مواجه شدم ،می خواستم بدونم مشکل از کجاس؟
http://uupload.ir/files/blbk_capture.png
مسلما بدون اینکه ارور رو سرچ کنید اینجا مطرح کردید. سرچ بفرمایید اگر جوابها رو خوندید، تست کردید و به نتیجه نرسیدید بفرمایید بنده تحقیق کنم
اخطار :
project location should not contain whitespace , as this can cause problems with the NDK tools.
کافیه should not contain whitespace رو ترجمه کنید!
سلام
من بعد از کپی کردن اندروید استودیو ۳۲ بیتی و نصب sdk و کپی کردن فایل های sdk موقع معرفی مسیر sdk به اندروید استودیو پیغام که در عکسه واسم میاد . موقع ساخت ی پروژه جدید هم همین پیغام میاد و بعد اتمام همه مراحل ساخت پروژه ، هیچ اکتیویتی و …. نمیسازه و فقط همون صفحه شروع اندروید استودیو بهم نشون میده بدون هیچ پیغامی. لطفا کمکم کنید که برای رفع مشکل باید چکار کنم
کدوم عکس؟
سلام من android studioرو نصب کردم ولی در قسمت xml اصلا designنیست نمیتونم چیزی مثل buttomاضافه کنم یهنی اصلا صفحه ی طراحی نیست غیر فعاله
دوست عزیز دلایل مختلفی میتونه داشته باشه. ببینید چه اخطاری دریافت میکنید و چی ازتون میخواد. پرسش های رایج ر هم مطالعه بفرمایید
سلام..من اپلیکشن که ایجاد میکنم,مراحل رو میرم ولی صفحه
مین اکتیویتی رو نشون نمیده..
http://s8.picofile.com/file/8300335750/Capture.PNG
قسمتی که الان < n u l l > هست رو تغییر بدید
سلام خدمت شما ، ببخشین من وقتی میخوام اولین پروژه ی جدیدمو بسازم تو اخرین مرحله که finish و میزنم و وقتی داره پروژه رو لود میکنه دیگه جلو نمیره تا ده ساعتم صبر کنی همون طور رو اون کادر ساختن پروژه گیر میکنه و کلا طوری میشه که اصلا نمیتونی برنامه رو هم خارج کنی ممنون میشم اگه راهنمایی کنین
تو چه قسمتی گیر میکنه. اسکرین شات بدید
سلام.وقتی موقع ساخت پروژه همونطور ک تو کتابتون گفتید مینیموم SDK رو روی API 9 گذاشتم ولی ارور میده. ارور از چیه و چطوری باید برطرفش کنم؟؟؟
Error:Execution failed for task ‘:app:processDebugManifest’.
> Manifest merger failed : uses-sdk:minSdkVersion 9 cannot be smaller than version 14 declared in library [com.android.support:appcompat-v7:26.0.0-alpha1]
با تشکر فراوان
گفته برای این نسخه از لایبرری حداقل API باید ۱۴ باشه. ارور رو سرچ کنید ببینید چه راه حلهایی ارائه شده
سلام
موقع بارگذاری این خطا میاد http://uupload.ir/files/vvcj_capture.png باید چکار کنم؟
سپاس
چک کنید Android Support رو نصب داشته باشید. اگه نصب هست، یه قسمت از ارور رو سرچ کنید ببینید چه راه حلی ارائه شده در وب
خیلی ممنون مشکل برطرغ شد
سلام خدمت شما و عرض خسته نباشید
دوست عزیز من در ایجاد پروژه مشکل دارم و این پیام برام میاد و از این مرحله هم رد نمیشه!
http://uupload.ir/files/76jg_capture.png
با تشکر از پاسخ شما
تغییر IP ایران
سلام
ممنون از پست عالیتون
سوالی داشتم در مورد اینکه وقتی من پروژه رو ایجاد میکنم یه مدت خیلی طولانی در حدود ۴ دقیقه طول میکشه تا گریدل کارشو انجام بده و هادر سیستم کلا درگیره و موقع اجرا هم همین مشکلو دارم
سخت افزار سیستم هم خوبه ram:4 cupu:5 hdd:500
ممنون میشم راهنمایی کنید؟
قاعدتا نباید مشکلی باشه. شاید ویندوزتون مشکلی داره و کلا سرعت سیستم عامل پایینه
سلام.وبسایتتون فوق العادس.به کارتون ادامه بدین
سلام خیلی ممنون از سایت خوبتون. دو تا سوال داشتم.
۱- برای ساختن پروژه جدید حتما باید آنلاین باشیم؟
۲- در حین ساختن پروژه با ارور زیر مواجه میشم
Grandle project refresh failed
Unknown host ‘services.grandle.org’ You may need to adjust the proxy setting in grandle
خواهش میکنم کمک کنید…
فصل دوم رو مطالعه بفرمایید
سلام ببخشد بازم مزاحم شدم
در قسمت androidmainfast.xml لاین ۱۳ نوشته اش به رنگ قرمز هست
آیا مشکل دارم ؟؟؟
البته لاین ۸ و ۱۴ که اسم اپلیکشن نوشته بود ننوشته بود خودم نوشته
لطفا راهنمایی کنید
نظری ندارم. ببینید بهتون اخطار هم میده یا نه
سلام بنده در ساخت پروژه جدید مشکل دارم که ارور زیر رو میده.
Your android SDK is missing
چیکار کنم.
مشخصه. SDK رو نمیشناسه. تنظیمات رو چک کنید مسیر sdk درست باشه. بازم رفع نشد همین ارور رو سرچ کنید ببینید چه جوابهایی داخل وب میبینید
سلام با تشکر از سایت خوبتون
Genymotion این بهتره یا AVD
باتشکر
همین مبحث و مبحث جنی موشن رو مطالعه بفرمایید به جواب میرسید
سلام خدا قوت. کجا ها باید از Linearlayout و کجا ها باید از Relativelayout و کجا ها باید از constraintlayout استفاده کنیم . ببنید من یه لایه xml با linearlayout طراحی کردم دقیقا داره معکوس نشون میده بر روی دیواس واقعی در صورتی که بر روی شبیه ساز درسته نشون میده .حالا چه کار باید بکنم که معکوس نشون نده من اسکرین شات از هر دو گرفتم هم از جنی موشن و هم از دیوایس واقعی .لطفا کمکم کنید ممنون
این هم لینک ها
http://uupload.ir/files/0at2_genymotion.png
http://uupload.ir/files/101q_real_device.png
این که کجا از چه نوع ساختاری استفاده بشه بستگی به خود توسعه دهنده داره. و البته برای آشنایی بیشتر میتونید مثالهایی که برای Android UI در سطح وب هست رو مشاهده کنید. توضیحاتی که به نظرم لازم میومد رو داخل مبحث توضیح دادم
برای مشکل شما هم تو LinearLayout ها یه تجدید نظر بکنید درست میشه فکر کنم. مثلا Linear اصلی رو قاعدتا باید Vertical بذارید که هر ویجت (یا Linar داخلی) زیر خط بعدی قرار بگیره
سلام
در اندروید استودیو من آپ من در NEXSUS ران نمیشه
کمکم کنید ممنون
ببینید چه اروری میده یا اینکه کجای کار به مشکل برمیخوره. بنده با Genymotion کار می کنم و در خصوص AVD تجربه زیادی ندارم
سلام ببخشید با اینکه API8 رو دانلود کردم و در مسیرش گذاشتم و در محیط SDK، reload کردم ولی موقع ساخت پروژه کمترین API برای من ۹ میاره. میشه لطفا راهنمایی کنید چرا اینجوریه و آیا مشکلی ایجاد میشه اگه با ۹ پیش برم؟
از نسخه ۹ به بعد استفاده کنید. نسخه ۸ دیگه قدیمی شده
سلام خسته نباشید من یه مشکلی دارم اگر این عکس که لینکش رو گذاشتم ببینید در خط ۵۵ روی متد ()getDrawable خط کشیده شده میخواستم دلیلشو بدونم . و اینکه آیا تو اجرای اپلیکشن مشکل پیدا میکنم یا نه. ممنون میشم راهنماییم کنید.
http://uupload.ir/files/5gvj_screenshot_(22).png
مطالعه بفرمایید:
https://stackoverflow.com/questions/29041027/android-getresources-getdrawable-deprecated-api-22
http://www.androiddesignpatterns.com/2016/08/contextcompat-getcolor-getdrawable.html
سلام دوست عزیز
من وقتی میخوام خروجی بگیرم از برنامه
این ارور میده لطفا سریع راهنمایی کنید خیلی لازم دارم
http://up.upinja.com/kwdel.png
متاسفانه بنده با این مسئله برخوردی نداشتم. لطفا ارور رو سرچ بفرمایید (مطمئنید سورس تلگرام اندروید رو استفاده کردید؟ بعید میدونم نیاز به NDK داشته باشه)
به ndk نیاز داره سورس تلگرام هستش از ۳ تا سایت دان کردم امتحان کردم از خود سایت تلگرام میتونید راه حل بدید از هیچ پروژه دیگری هم خروجی نمیده فک میکنم gradle ندارم
سلام. خسته نباشید.
وقتی از داخل Android Studio وارد برنامه SDK Manager میشم وضعیت نصب نسخه های اندروید ۴ و بالاتر از اون رو میزنه Partially Installed و قبل از ۴ رو میزنه Installed. ولی داخل خود برنامه SDK Manager همرو زده Installed.
مشکلی نیست؟
اگر داخل SDK Manager اوکی هست موردی نیست
سلام من یه بروژه ساده ساختم ولی وقتی خط زیر رو به برنامه میدم در شبیه ساز برنامه کار نمیکنه. اصلا باز نمیشه هیچ اروری هم ندارم .چرا؟
final RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.relativeLayout);
مطمئنید هدفتون یک relativelayout هست؟ عموما برای ویجت ها (مثل دکمه و تکست فیلد و …) بکار میره
سلام ببینید من این خط برنامه رو به این خاطر اضافه کردم چون میخوام در هر بار زدن کلید رنگ صفحه تغییر کنه من از روی فیلم آموزشی گام به گام جلو میرم ولی وقتی به این خط از برنامه رسیدم دیگه این پروژه در شبیه ساز کار نمیکه .مشکل از نظر شما چیه؟
خب باید دکمه رو داخل جاوا تعریف کنید نه صفحه. انگلیسی سرچ بکنید ببینید چکار کردن بقیه
سلام بعداز انتخاب API وقتی next میزنم این ارور رو میده مشکل چیه؟
Problem: Some required packages could not be installed. Check internet connection
ضمن اینکه api 10 و ۸ رو هم نصب کردم ولی اندروید استودیو اصلا نسخه ۸ نداره فقطاز نسخه ۹ به بعد داره
ببینید کدوم مورد ضروری رو نصب نکردید (اندروید استودیو نسخه جدید از ۹ به بعد لیست کرده. ۸ خیلی قدیمیه)
ببخشید ها ولی اگه میدونستم مشکل کجاست که دیگه مزاحم شما نمیشدم . و اینکه برای من گزینه blank activity نداره منم empty رو انتخاب کردم چون دیدم معنیشون تقریبا یکیه . پروژه ساخته شد ولی اصلا شبیه توضیحات شما نیست مثلا تصویر موبایل رو نداره تورو خدا کمک کنید یا اگه میشه یه سایتی چیزی معرفی کنید مشکلم حل بشه . مرسی
سلام خسته نباشید ممنونم بابت اطلاعات عالیتون.
ببخشید فارسی نوشتن تو اندروید نمیشه.میشه اموزش فارسی نوشتنو بگین ازstring.xmlچه مراحلی داره؟
ممنون میشم
نوشتن کاراکترهای فارسی با انگلیسی تفاوتی نداره و نیاز به انجام کار خاصی نیست
سلام ممنون از اموزش های خوبتون
من طبق اموزش هایی ک گفتین پیش رفتم اما وقتی بلنک اکتیویتی رو میزنم و ادامه کار در پروژه ایجاد شده اکثر ابزار ها غیرفعال هسش و صفحه موبایلی واسه من نمایش نمیده.
لطفا راهنمایی کنید
سلام
یه اسکرین شات بدید ببینم
درود به دوستان عزیز …
من برنامه رو به درستی ساختم و اندروید استودیو هیچ اروری نمیده ولی وقتی نصب میشه و وارد برنامه میشم درجا با ارور “متاسفانه برنامه بسته شد” مواجه میشم … 🙁
ممنون میشم کمک کنید
موقع اجرا دیباگ کنید باید مشخص باشه (Logcat رو چک کنید)
سلام
هر پروژه جدیدی درست کنم به R.layout ایراد میگیرده……..ممنون می شم کمکم کنید
ببینید چه اروری میده اندروید استودیو
سلام خسته نباشید در هنگام ساخت پروژه در صفحه انتخاب اکتیویتی گزینه blank activityوجود نداره
و بقیه گزینه ها رو انتخاب میکنم و پوشه app را باز میکنم زیر شاخه های manifests و javaوres وجود ندارد و بجاش libsو srcوجود دارد
مشکل کجاست؟
– Empty Activity جایگزین شده
– Explorer رو مطابق آموزش تنظیم کنید
سلام روز بخیر
ممکنه بگید Explorerکجاست؟ لینک آموزش تنظیم explorer رو لطف میکنید بذارید
تو متن همین آموزش مشخصه دوست عزیز
سلام
عذرخواهی میکنم من متن آموزش را چند بار خوندم اما بازم متوجه نشدم
میشه بگید دقیقا منظورتون از explorerچیه و کجا باید تنظیمش کنم
این قسمت:
https://android-studio.ir/wp-content/uploads/2016/activity/project_files.png
(بر روی حالت Android قرار بدید (داخل این تصویر روی حالت Project files هست)
Error:CreateProcess error=216, This version of %1 is not compatible with the version of Windows you’re running. Check your computer’s system information to see whether you need a x86 (32-bit) or x64 (64-bit) version of the program, and then contact the software publisher
سلام لطفا جواب بدید وقتی آندروید استودیو رو نصب می کنم این اخطار و میده لطفا کمکم کنید همه چیزهایی رو که گفتید نصب کردم
سوالاتی که مشمول موارد زیر باشد تایید و پاسخ داده نخواهد شد :
۱ : جزء موارد پاسخ داده شده در مطلب “مشکلات و پرسش های رایج” باشد
۲ : سوال قبلا توسط افراد در دیدگاهها مطرح و پاسخ داده شده باشد
۳ : سوال خارج از مبحث آموزشی موجود در این صفحه باشد
کمتر کسی به این موارد که بالای فرم دیدگاهها با فونت درشت قید شده دقت میکنه
ابتدا بررسی کنید اگر نسخه قدیمی جاوا را روی سیستم عامل نصب کرده اید، نسخه جدید (در فصل دوم قرار داده شده) را جایگزین کنید. سپس داخل اندروید استودیو در مسیر File -> Project Structure تیک گزینه Use Embedded JDK را برداشته و مسیری که JDK را نصب کرده اید جایگزین کنید.
السلام علیکم
برادر من در اندروید استدیو یک مشکل داشتم که زمانیکه نرم افزار ساخته میشود در مبایل نصب میکنم تمام اندازه گیری ها درست میباشد و اگر در تبلیت بزرگ نصب میکنم باز تمام اندازه گیری ها بهم میخورد.اگر جواب این مشکل مرا بدهید ممنون میشم.
سلام
این مطلب رو مطالعه بفرمایید:
https://android-studio.ir/android-user-interface/
ممنون از مطالب پرکاربردتون.
خسته نباشید
Your Android SDK is missing, out of date, or is missing templates. You can configure your SDK via Configure | Project Defaults | Project Structure | SDKs
چه کنم sdk نصبه ولی همش اینو می زنه
مطمئن بشید مسیر نصب رو درست تعریف کردید تو اندروید استودیو و اینکه ابزارهای SDK قدیمی نباشن
با تشکر از مطالب بسیار مفید، متاسفانه در این صفحه هیچ لینکی وجود ندارد برای رفتن به مرحله بعد
از ستون سمت راست ،موزشهای پایه رو دنبال کنید
سلام خسته نباشید بسیار عالیه لطفا مطالب جدید رو زود زود بذارید ممنون
Error:CreateProcess error=216, This version of %1 is not compatible with the version of Windows you’re running. Check your computer’s system information to see whether you need a x86 (32-bit) or x64 (64-bit) version of the program, and then contact the software publisher
سلام مجدد من این ارور رو دارم پایین برنامم چرا؟
http://stackoverflow.com/questions/37624369/android-studio-error-errorcreateprocess-error-216-this-version-of-1-is-not-c
سلام واسه کسایی که خطای پریسا جون را داشتند.
پس از ورود به نرم افزار در قسمت بالا سمت راست یه ذره بین هست واسه جستجو.
Project Structure را جسیتجو کنید و در پنچره ای که میاد در قسمت JDK Location تیک گزینه use embedded jdk رو بردارید و مجدد مسیر نصب این فایل رو بهش بدید.
سلام خسته نباشید من API7,8 جفتش رو نصب کردم توی SDK هم بالا میاد اما توی اندروید استودیو و درلیست minimum sdk نیستش چیکار باید کنم؟
گوگل به دلیل اینکه الان ۱۰۰ درصد دیوایس ها اندروید بالای ۹ دارن، API های پایین رو از لیست حذف کرده. از API 9 به بالا استفاده کنید. اگه اصرار به استفاده از نسخه ۷ و ۸ دارید، با همون نسخه ۹ و … پروژه رو بسازید بعد داخل build.gradle قسمت minsdk رو تغییر بدید
سلام.ببخشید من نسخه ۲٫۲٫۲ رو نصب کردم کاملا محیطش فرق میکنه با اموزش شما؟
در پنجره ابتدایی (ساخت پروژه، ایمپورت و …) یه تغییر جزئی داشته. از زمان انتشار نسخه جدید، آموزش های جدید هم با نسخه ۲٫۲ تهیه شده (دو آموزش نهایی)
سلام
وقتی روی پروژه جدید کلیک میکنم هیچ اتفاقی نمیفته. یعنی پروژه جدید ساخت نمیشه میشه کمکم کنید.
تابحال برخورد نداشتم. چه اروری میگیرید
۱۲:۵۲:۰۴ AM IllegalAccessError: tried to access method com.android.sdklib.AndroidVersion$AndroidVersionException.(Ljava/lang/String;Ljava/lang/Throwable;)V from class com.android.sdklib.An
اندروید استودیو رو حذف و مجدد نصب بکنید ببینید نتیجه میگیرید یا نه
عالیه ادامه بدید
سلام چطور میتونیم متوجه بشیم که یک پروژه از سایت دانلود کردیم با اندروید چند نوشته شده .
مثلا با ورژن ۲ یا ۴ یا ۵ و یا …
داخل build.gradle مشخصه با چه نسخه ای بیلد شده
سلام، من وقتی پروژه رو بیلد میکنم به ارور failed to find Build Tools revision 19.1.0 برمیخورم. چیکار باید بکنم؟
http://s8.picofile.com/file/8268230884/Capture.PNG
سلام
از build.gradle (Module app( آخرین ورژنی که نصب دارید رو جایگزین کنید
سلام.روی این صفحه گیر میکنه :
http://s8.picofile.com/file/8267515042/bandicam_2016_09_15_08_33_28_942.jpg
مطلب “سوالات متداول” رو بررسی بفرمایید (مخزن و تغییر آی پی)
سلام
با تشکر از شما که همچنین آموزش هایی رو برای ما آماده کردید
میخواستم یه سوال بپرسم اونم اینه که چجوری میشه یه پرداخت درون برنامه ای
به صورت درگاه پرداخت آنلاین که افراد برای من پول رو واریز کنند و بعد خریدشون انجام بشه؟
همچین چیزی امکان داره؟
دلایلی دارم که نمی خوام از بازار برنامه های مانند اون استفاده کنم…
سلام. بله امکان داره منتها بنده کار نکردم
باید پیگیری بکنید ببینید آیا برای درگاه روی اپلیکیشن هم مثل درگاه وب سایت باید اقدام بشه برای نماد اعتماد و اخذ درگاه از بانک ؟ و همچنین بحث فنی
با سلام وخسته نباشید اینجا بهترین وبسایت برای اموزش اندروید استدیو و مهتر از همه اینکه بصورت رایگان هست خدا خیرتان بدهد که به فکر جونای مملکت هستید ثوابش از صد بار مکه رفتن بیشتره
فقط یخورده بیشتر به فکر تازه کارا باشید با تشکر
سلام. ممنون از لطف شما
والا تا جایی که ممکنه آموزش ها رو جزء به جزء و ساده جلو میرم که همه متوجه بشن
سلام عالی
در قسمت ساخت فایل App با اندروید استودیو
اون کد هایی که داخل عکس های بود مال من چند تاش نیست اشکال نداره بنویسیم
عالییییی
ممنون
در مطلب مربوط به ساخت فایل APK مطرح کنید (به همراه کدی که مدنظرتون هست)
اول میزنید دانلود رایگان بعد که دکمه رو میزنیم میره واسه پرداخت؟؟!!! خب دیگه لااقل تون رایگان رو بردارید
اگه دقت کنید قیمت رو زده “صفر ریال” !
این به خاطر یکپارچه شدن سیستم دانلود هست
سلام.باتشکر فراوان از زحمات خوب و شایسته شما.
استاد بعد از بازکردن، تو اون صفحه برای من عکس گوشی نیست؟مشکلی هست یا نه؟ باید چی کار کنم؟
http://www.uplooder.net/img/image/69/6c8cccb5f9dd3a9b5cf92d937a1a0744/Android-Studio.PNG
قسمت مربوط به انتخاب API مربوط به صفحه نمایش (جایی که داخل تصویر ۲۲ هست) به یه نسخه دیگه تغییر بدید احتمالا باید درست بشه
ممنونم بابت همه زحماتتون….دوستتون دارم
سلام
خیلی ممنون و متشکر بابت آموزش هاتون
من تو قسمت res فقط drawable , mipmap , values رو دارم.اینکه menu و layout رو ندارم مربوط به نصب نکردن یه سری از sdk tools ها هست؟؟
در ضمن من از نسخه bundle استفاده میکنم.
خیر. موقع ساخت پروژه هر نوع اکتیویتی پیش فرضی رو انتخاب کنید بازم این فولدرا رو نداره؟ به عنوان مثال همین Empty Activity