ساخت پروژه در اندروید استودیو، بررسی محیط توسعه و ساختار کلی پروژه
در جلسه آموزش نصب اندروید استودیو با نحوهی نصب محیط توسعه 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 مطرح میشود. با سرچ ارور احتمالا اولین لینک مربوط به همین سایت است. لینک را باز کنید و پاسخها را با دقت مطالعه کنید. یا از وبسایتهای فارسی کمک بگیرید. در وبسایت ما هم در صفحه مشکلات و پرسشهای رایج اندروید استودیو تا حد امکان مشکلات متداول کاربران با راه حل آن بررسی شده است.
پرسش مستقیم و طرح اشکال را برای مرحلهی آخر بگذارید. در این صورت زمان کمتری برای رسیدن به جواب صرف میکنید و لازم نیست چند ساعت یا چند روز را منتظر پاسخ من و بقیه بمانید!
تعداد صفحات : ۲۰
حجم : ۱٫۵ مگابایت
قیمت : رایگان
تاریخ بروزرسانی آموزش : ۱۴۰۲/۰۳/۱۵
دانلود رایگان با حجم ۱٫۵ مگابایت لینک کمکی
سلام استاد من بعد مرحله لود بیلد این ارورو مشاهده می کنم Error:Cause: failed to find target with hash string ‘android-23’ in: C:\Users\GMC\AppData\Local\Android\android-sdk
Install missing platform(s) and sync project
File -> Invalidate Caches/Restart
یا Build -> Clean Project & rebuild project
این دو مورد رو تست بکنید و نتیجه رو به بنده اعلام بفرمایید
سلام استاد من هنگامی که آفلاینم پروژه زود بیلد میشه ولی وقتی آن هستم حتی با شیلتر فکن هم بیلد نمیشه و هنگام بیلد رو این پیام گیر می کنه Gradle : Resolve Dependecies :app:-debugCompile بعد چند دقیقه میره رو این گیر میکنه Gradle :Resolve Dependecies :app:-releaseAPK هر چند دقیقه نگاهی بهش می ندازم دیگه به امید اینکه انشاالله فرجی بشه خخخخخ
تو حالت آفلاینم مشکل ارور قبلیم درست شد البته اینم بگم که من از سایتتون API23-Android6 رو دانلود و به SDK ها افزودم حالا نمی دونم با ساختن پروژه جدید مشکل حل شد یا با این با تشکر که اهمیت میدین
سلام استاد ببخشید زود زود مزاحم می شم من همیشه این ارورو مشاهده می کنم IDE internal error occurred که به صورت پیام پاپ آپ قرمز بعضی وقتا مخصوصا بعد بیلد شدن پروژه ظاهر میشه و بعدا خود به خود میره
تب MainActivity.java در این شرایطه
……………………………………….
package pb.najm.ir.intermediate1;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
……………………………………….(ادامه کامنت پس از مشاهده حذف شد)
برخورد نداشتم با این مسئله
برای تغییر آی پی :
https://android-studio.ir/problems-and-questions/
سلام، برای من بیلد پروژه خیلی زمان میبره یعنی ۲۰ دقیقه و اصلا پروژه بیلد نمیشه.
چیکار کنم؟
باتشکر.
https://android-studio.ir/problems-and-questions/
با عرض سلام
واقعا متشکرم بابت سایت خوبتون.ببخشید من به یک مشکل برخوردم ,من می خواستم پروژه hello word را اجرا کنم اما در کلاس MainActivity.java در این خطsetContentView(R.layout.activity_main); حرف R قرمز رنگ هست و این کلاس را نمی شناسد و من اصلا فولدر build را ندارم که کلاس R.java را داشته باشد,باید چه کنم(و من در قسمت add an activity to mobile قسمت basic activity را انتخاب کرده ام)؟
ممنون می شوم که راهنمایی کنید.
سلام. لطفا یه پروژه جدید بسازید و به جای basic، گزینه empty activity رو انتخاب کنید
سلام. خیلی ممنون از زحماتتون. ولی الان ورژن جدیدتر اندروید استادیو(۲٫۱٫۲) اومده. بیشتر اینایی ک تو آموزش شما هست برا ورژن ۱٫۴٫۱ بوده. ما چیکار کنیم الان؟ میشه راهنمایی کنید؟ البته بجز نصب ورژن ۱٫۴٫۱ چیکار میشه کرد؟
تازه پنجره design هم هرچی میگردم پیدا نمکنم.
نسخه جدید تفاوت خاصی با نسخه آموزش نداره که بخواد واستون مشکلساز بشه. چند امکان جدید اضافه شده فقط
با سلام این ارور هارو چطوری رفع کنم ؟
Error:(1) Error retrieving parent for item: No resource found that matches the given name ‘android:Widget.Material.Button.Colored’.
Error:(1) Error retrieving parent for item: No resource found that matches the given name ‘android:TextAppearance.Material.Widget.Button.Inverse’.Error:Execution failed for task ‘:app:processDebugResources’.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process ‘command ‘C:\Users\pour\AppData\Local\Android\sdk1\build-tools\22.0.1\aapt.exe” finished with non-zero exit value 1
و در قسمت.activity _main.xml
” failed to find style “text viewstyle
( in current theme(4 similar errors not shown
سلام
مربوط به چ نبودن نسخه API با لایبرری هستش. لطفا لینک زیرو مطالعه بفرمایید
http://stackoverflow.com/questions/32075498/error-retrieving-parent-for-item-no-resource-found-that-matches-the-given-name
سلام استاد وقتتون بخیر
موقع انتخاب اکتویتی برای ساخت اولین پروژه من گزینه ی blank activity ندارم. باید چی کار کنم که اضافه بشه؟؟
empty activity
حتما رنک الکسای خودتون و میدونید. تبریک میگم روند بازدیدا از سایتتون کاملا صعودیه. قول میدم با ۴ ۵ تا پست دیگه هم میاین زیر هزار هم یه کمک بزرگ به ما کردین. راستی empty activity تکست هم داره؟؟
ممنون. ان شا الله
بله تکست داره
با سلام خدمت ادمین محترم و بقیه اعضای وب سایت .
استاد بنده بعد از نصب اندورید استودیو فقط api 23 رو درون sdk داشتم به خاطر همین رفتم فایل های api7 تا api22 رو دانلود کردم و به طور دستی به پوشه مورد نظر در sdk انتقال دادم البته image های مورد نظر رو هم به پوشه مربوطه اضافه کردم و بعد دوباره اندروید استودیو را راه اندازی کردم حالا وقتی از توی اندروید استودیو sdk رو اجرا می کنم بجز api23 روبروی بقیه api ها عبارت installed رو نمی نویسه بجاش می نویسه partially installed ایا این یک مشکل اساسی هست و حتما باید رفع بشه اگر آره چجوری این مشکل رو بر طرف کنم . با تشکر
با سلام خدمت ادمین محترم و بقیه اعضای وب سایت .
استاد بنده بعد از نصب اندورید استودیو فقط api 23 رو درون sdk داشتم به خاطر همین رفتم فایل های api7 تا api22 رو دانلود کردم و به طور دستی به پوشه مورد نظر در sdk انتقال دادم البته image های مورد نظر رو هم به پوشه مربوطه اضافه کردم و بعد دوباره اندروید استودیو را راه اندازی کردم حالا وقتی از توی اندروید استودیو sdk رو اجرا می کنم بجز api23 روبروی بقیه api ها عبارت installed رو نمی نویسه بجاش می نویسه partially installed ایا این یک مشکل اساسی هست و حتما باید رفع بشه اگر آره چجوری این مشکل رو بر طرف کنم . با تشکر
اینم عکس محیط sdk
http://www.upsara.com/images/n1ax_as.jpg
http://stackoverflow.com/questions/32519152/android-studio-icecreamsandwich-remains-partially-installed/33627488
http://stackoverflow.com/questions/32519152/android-studio-icecreamsandwich-remains-partially-installed/33627488
با سلام و تشکر به خاطر وقتی که گذاشتید . استاد تیک مروبطه رو فعال کردم ولی همچنان مشکل بر قرار است
https://android-studio.ir/problems-and-questions/
پروکسی android.hive.ir رو تست بفرمایید
درود بر شما .
استاد یه دنیا تشکر . مشکل بر طرف شد .
سربلند و پیروز باشید
سلام اون مرحله که باید blank activity رو انتخاب کنیم میرم به اون صفحه ولی blank activity نیست بجاش میشه empty activityرو انتخاب کرد
http://uupload.ir/files/f682_capture.png
تفاوتی نداره
بالای فرم دیدگاهها اشاره شده بزرگوار که قبل پرسیدن سوال، دیدگاهای قبل و یا صفحه سوالات متداول رو بررسی بفرمایید :
https://android-studio.ir/problems-and-questions/
جناب مطهری من همون اول که sdk رو انتخاب میکنم این ارور رو دارم
http://www.upsara.com/images/e7j9_untitled.jpg
http://www.upsara.com/images/cn5o_untitled2.jpg
بالای فرم دیدگاهها اشاره شده بزرگوار که قبل پرسیدن سوال، دیدگاهای قبل و یا صفحه سوالات متداول رو بررسی بفرمایید :
https://android-studio.ir/problems-and-questions
سلام من وقتی یک پروژه جدید ایجاد میکنم build.gradle نزدیک به ۵ دقیقه طول میکشه تا تموم بشه مشکل از کجاست ؟
سیستم بسیار قدرمندی با ۱۲ گیگ رم دارم
به نکات قرمز رنگ بالای دیدگاهها دقت بفرمایید
با سلام و خسته نباشید خدمت شما،
بنده طبق آموزشی که در همین پست هستش یک پروژه تست خالی و با اکتیویتی خالی ایجاد کردم، اما بعد از ایجاد، اررور موجود نبودن api 23 رو میده! لینک اسکرین شات:
http://uupload.ir/files/3ue7_untitled.png
با تشکر از شما.
داخل build.gradle ای پی آی رو از ۲۳ به نسخه مدنظر تغییر بدید یا API23 رو نصب کنید
سلام.خسنه مباش.من همه مراحلو انجام دادم.پروزه رو هم اجرا کردم ولی از همون ارور میده…میشه بگین مشکلش چیه”؟
۰۴:۳۲:۱۵ PM Gradle sync started
۰۴:۳۲:۳۹ PM Gradle sync failed: Cause: failed to find target with hash string ‘android-23’ in: C:\Users\pc\AppData\Local\Android\sdk
Consult IDE log for more details (Help | Show Log)
۰۴:۳۲:۳۹ PM NullPointerException: null
مطلب “سوالات و پرسش های متداول” مطالعه شود
آموزش کد نویسی هم اینجا هست؟
فصل اول آموزش زبان جاوا هستش. اما کد نویسی جاوا در اندروید استودیو هنوز روی سایت قرار نگرفته. فصل های ۱ تا ۵ رو بررسی بفرمایید
سلام مرسی از سایت خوبتون
چرا برای من در قسمت res خیلی چیزا مثل layout و … نیست؟
یه پروژه جدید طبق آموزش بسازید ببینید بازم مشکل داره یا نه
سلــام برا من اصلا مثله آموزشی که دادید موبایل نمیاره و یه ارورم میزنه که build19 failed to download چه کنم ؟ 😐
متن کامل ارور رو داخل وب سرچ کنید به جواب میرسید قطعا
درود اون مشکل حل شد این اضافه شد 😐 توی گوگل هم به جایی نرسیدم
Error:(22, 0) Gradle DSL method not found: ‘android()’
Possible causes:The project ‘My Application’ may be using a version of Gradle that does not contain the method.
Open Gradle wrapper fileThe build file may be missing a Gradle plugin.
Apply Gradle plugin
جایی متد android() تعریف کردین؟
سلام..من زمانی که یه صفحه جدید باز میکنم این قسمت گوشی موبایل نمیاد؟قسمته device ؟
ببینید چه اروری میده. ارور رو سرچ کنید داخل وب
با سلام
ببخشید این ارور برای چیه؟؟
failed to find Build Tools revision 19.1.0
دیدگاهای قبلو بررسی کنید و یا سرچ کنید داخل وب
برو به SDK manager ببین نسخه build tools ای که داری چنده. بعد تو فایل build.gradle به صورت زیر تغییرش بده.
buildToolsVersion “23.0.3” برا من مثلا بیست و سه بود.
بعد از منوی tools زیر منوی android گزینه سینک رو انتخاب کن.
http://stackoverflow.com/questions/23999714/android-studio-gradle-buildtools-revision
با سلام
ببخشید این ارور برای چیه؟؟
Gradle sync failed: Cause: failed to find target with hash string ‘android-23’ in: C:\Users\SADAF\AppData\Local\Android\android-sdk
ببخشید این مشکلم حل شد
“android-23” رو داخل دیدگاهها سرچ کنید قبلا مطرح شده
با سلام خدمت شما و تشکر از مطالب مفیدتون.
بنده زمان باز کردن یک پروژه ی جدید با این ارور برخورد میکنم
Error:Error:line (22)Gradle DSL method not found: ‘android()’
و ضمن اینکه زمان راه اندازی sdk
bulid tools در قسمت tools اضافه نمیشه و در قسمت extras میاد.
چطور می تونم این ایراد ها رو بر طرف کنم؟
لطفا راهنمایی کنید.
احتمالا فایل ها رو جابجا قرار دادین
من بعد این که وارد برنامه میشم این ارور رو میده مشکل چیه؟
Error:Cause: failed to find target with hash string ‘android-23’ in: C:\Users\ASUS\AppData\Local\Android\android-sdk
build.gradle رو باز کنید و compileSdkVersion و targetSdkVersion رو از ۲۲ به ۲۳ یا ۲۴ (هرکدومو که دارید) تغییر بدید و Sync کنید (نتیجه رو اعلام کنید همینجا)
به جای compilesdk version عدد ۸ رو نوشتم حل شد ولی یه مشکل دیگه در قسمت preview این ارور رو میده مشکل چیه Exception raised during rendering: com/android/until/propertiesmap
در قسمت گزینه مربوط به انتخاب نسخه Preview ، نسخه API پیش نمایش رو تغییر بدید (آیکون سبز رنگ اندروید بالای صفحه پیش نمایش)
زکات علم نشر آن است .
از تلاش بی دریغتون تشکر میکنم 🙂
سلام
اموزش ها بین سایت های ایرانی عالیه
ولی به نظرم اگه به صورت ویدئو بود درک مفاهیم بهتر بود
سلام ببخشید وقتی من یه پروژه ی جدید باز می کنم یه اروری میده … چطور میتونم اونو حل کنم؟ ممنون میشم پاسخ بدین
این هم لینک اسکرین شات:
http://bayanbox.ir/view/1381173850801874094/Capture.png
مطلب “سوالات متداول” رو مطالعه بفرمایید
سلام
این مشکل رو چه جوری باید حل کنم؟؟؟؟؟؟
http://8pic.ir/images/qt9tp7iopc010qpiiar6.png
باتشکر
مطلب “سوالات متداول” رو مطالعه بفرمایید
خیلی ممنون
بخشی از ارور ها رفع شد ولی هنوز کلاس جاوا latout رو نمی شناسه
سلام.
فقط اینکه فوق العاده هستید دادا
با سلام
با اینکه من اندروید استودیو را از وبسایت شما دانلود کردم اما در محیط ، در پوشه ی app تنها دو پوشه ی libو resرو دارم و اطلاعات گفته شده ی شما در این آموزش در زیر شاخه های این پوشه است .
سلام و خسته نباشید ، لطفا آموزش را با اندروید استادیو ۲ که به تازگی ریلیز شده ادامه دهید.
ادامه آموزشها رو اگه بررسی بفرمایید نسخه ۲ هست
سلام
برای یادگیری این اموزش ها باید زبان جاوا رو بلد باشیم؟
آموزشهایی که تا این لحظه منتشر شدن چون مربوط به طراحی رابط کاربری هستن نیازی به دانستن جاوا نداشته اما ادامه آموزشها بله
سلام. میشه اموزش ها رو واسه مبتدی ها بذارید؟
سلام. آموزش ها به نحوی تهیه شده که نیاز به هیچ پیش نیازی نداره و برای مبتدی ها هم مناسبه
سلام
میخواستم بدونم اگه بخوام یک کد آماده رو با اندروید استادیو باز کنم و بعد از ویرایش ازش نسخه apk بگیرم چکار باید بکنم
سلام
Build > Generate Signed APK
menu هم نداره!!
سلام.با عرض معذرت
من تو قسمت layout برنامم فقط activity_main.xml دارم
content_main.xml رو نداره
باز شد اما با یه ارور
Error:Failed to resolve: junit:junit:4.12
Show in Project Structure dialog
میشه راهنماییم کنید؟؟
https://android-studio.ir/problems-and-questions/
موقع باز شدن برنامه زمان Gradle:build خییلی طولانی شده .باید منتظر بمونم یا یه جای کار اشکال داره؟؟؟
https://android-studio.ir/problems-and-questions/
ببخشید میشه لطف کنید نسخه bundle رو بفرستید؟؟
اینجا لینکش هست :
https://android-studio.ir/problems-and-questions/
من اصلا تو قسمت انتخاب activity گزینه blank activity ندارم!!!!
Empty Activity
تو قسمت سمت چپ AndroidManifest.xmlهست
سلام.نصب کردم ولی الان این قسمت ها تو برنامم نیست
منوی سمت چپ content_main.xml و
در سمت راست
MainActivity.java
هست. باز نشده به صورت پیش فرض
از پوشه های مربوطه در سمت چپ اندروید استودیو بازشون کنید
Error:Cause: failed to find target with hash string ‘android-23’ in: C:\Users\Saeed_Sadat\AppData\Local\Android\android-sdk
Install missing platform(s) and sync project
سلام.وقتتون بخیر.من وقتی برناممو باز میکنم با این اررور مواجه میشم؟؟؟؟
سلام
API23 رو نصب کردین؟
سلام میشه کدی به من معرفی کنید که اتصال به اس کیو ال سرور باشه من کدهایی چک کردم ولی اررور داره خواهش می کنم هر کس این کار زو انجام داده منو راهنمایی کنه که از اندروید وصل بشیم به دیتابیس تو اس کیو ال و از طریق اپلیکیشن اندروید داخل دیتابیس insert کنیم یا select انجام بدیم .
من خیلی دنبال این قضیه هستم .
سلام. بالاخره نصب شد اما باز یک ارور:
Can’t close stream: The handle is invalid
اسکرین شات بدید
سلام وقتتون بخیر
من برنامه رو نصب کردم ولی وقتی میخوام بازش کنم بعد از این که android2.2 رو به عنوان مینیمم انتخاب کردم میرم صفحه بعد به مشکل بر خوردم
میگه som requide packages could notbe install.check internet conection
اینترنتم وصله ولی../؟؟؟
نسخه Bundle اندروید استودیو رو نصب کنید
سلام ادمین جان من برنامه رو نصب کردم اما وقتی یک پروژه جدید میسازم اصلا فولدر هاش مثل عکس های توی سایت نیست اصلا اون دوتا فضای content_main.xml و mainActivity.java رو نمیاره سرچ هم کردم اصلا content_main.xml رو نیاوردش .. mainActivity.java رو هم از تو فولدر ها یافتمش اما اونم کنارش یه علامت قرمز بود .. مثل عکس سایت علامتش C نبود ..ورژن جدیده رو هم نصب کردم .. مشکل از کجاست..؟ مشکل از نصبه ؟ همه ی برنامه هارو هم دانلود کردم … وقتی از توی برنامه سمت چپ پروژه مو پوشه هاشو باز میکنم توی پوشه app فقط پوشه های src و libs هست …
والا چیزی به ذهنم نمیرسه
سلام و خسته نباشید من قبلا با بیسیک کار میکردم
آموزشهای سایتتون اینقد روان و خوب بود که بدون هیچ مشکلی شروع به کار با اندرویداستودیو کردم.
واقعا کیفیت آموزشتون بالاست .ممنونم ازتون استاد
اگه یه انجمن هم راه اندازی کنید تا دوستان مشکلات و آموزش های بیشتری رو دریافت کنند خیلی خوب و تاثیر گذاره.
هرجا هستید موفق باشید
سلام
ممنون. بله ایشالا آموزش بعدی که رو سایت قرار گرفته بعدش اضافه کردن انجمنم هست تو برنامه
سلام خسته نباشید!چطوری class uml در اندروید استادیو رسم کنم؟
http://stackoverflow.com/questions/17123384/how-to-generate-class-diagram-uml-on-android-studio
ادمین جان خیلی خیلی عالیه سایتتون اما من همچنان با gradle مشکل دارم همش خطای اونو دارم.
آخرین مطلب رو مطالعه کنید
سلاممیشه کمک کنید
به عکس ارسالی من نگاه کنید موقع لود کردن به روی اندروید مجازی خطای bios میده چجوری حلش کنم؟
تو تنظیمات BIOS مادر بورد سیستمتون گزینه ای که گفته رو پیدا و Enable کنید
خیلی لطف کردی مهندس ممنون
من مبتدی هستم و تازه شروع کردم به یادگیری آیا منبع خوبی سراغ دارین تا یه پروژه انجام بدم ؟؟؟؟
منبع خاصی مدنظر ندارم. سرچ کنید منبع زیاده
سلام. وخسته نباشید
من نسخه bundle اندروید استدیو رو نصب کردم. مشکلم حل شد. بنظر من همه دوستان اگه از این نسخه استفاده کنند کمتر مشکل پیدا میکنن. چون با اینترنت و یه نرم افزار تغیر ای پی همه مراحل نصب میشن. با اینکه نسخه bundle حجمش بالاست. ولی ارزشش رو داره. برای دانلود بدون فیلتر از سایت سافت۹۸ دانلود کنید. همیشه اخرین نسخه ها رو داره.
موفق باشید
سلام من تازه با اندروید استودیو ۲٫۱ شروع کردم ، وقتی وارد محیط برنامه میشم تو قسمت component tree پیام Hello World را ندارم(هیچ پیامی ندارم) و عکس گوشی که باید تغییرات کدهای xml را نشون بده هم نیست.( تو قسمت null هم گزینه preview غیرفعاله و حتی Device هایی هم که تو AVD Manager ساختم هم نمی تونم ازشون استفاده کنم )
سلام. چه اروری دریافت می کنین