رفع خطاهای رایج در اندروید

توسعه اپلیکیشن: چگونه میتوان 13 خطای رایج در اندروید را برطرف کرد؟ - بخش اول

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

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

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

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

کشف کردن پیام های خطا

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

بسته به نوع خطایی که با آن مواجه میشوید، اندروید پیام های خطایی را بر روی گوشی با اندروید استودیو نمایش میدهد.

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

اما در اندروید استودیو کار کمی دشوارتر میشود، چرا که Logcat Monitor حجم زیادی از اطلاعات را ذخیره میکند و ممکن است بدون اینکه متوجه شوید، پیام های مهم را از دست بدهید.

ساده ترین راه جهت کسب اطمینان از اینکه هیچ پیامی را از دست نخواهید داد، باز کردن دراپ داون Verbose از Logcat Monitor و انتخاب Error است، بدین ترتیب پیام های نمایش داده شده تنها به خطاها محدود خواهند شد.

رفع خطاهای رایج در اندروید

1. R.layout.main Cannot Be Found / Cannot Resolve Symbol R

این خطا زمانی پیش می آید که اندروید استودیو به درستی قادر به تولید فایل R.java نباشد، یک دقیقه همه چیز خوب کار میکند و دقیقه بعد تمامی بخش های پروژه کامپایل نمیشوند. وقتی اندروید استودیو به خطای R.layout مواجه میشود، تمامی منابع لی اوت را به شکل خطادار پرچم گذاری میکند و همین شرایط نیز یافتن منبع اصلی خطا را سخت میکند.

در اغلب شرایط، موثرترین راه حل ساده ترین راه حل است: پروژه را پاک کرده و ری بیلد کنید.

از نوار ابزار اندروید استودیو Build> Clean Project را انتخاب کنید، چند لحظه منتظر بمانید و از قسمت Build> Rebuild Project پروژه خود را بیلد کنید.

اگر با پاک کردن و ری بیلد کردن پروژه مشکل برطرف نشد، این کار را چندین بار تکرار کنید.

اگر با جابجایی برخی فایل ها و دایرکتوری ها با این خطا مواجه شده اید، امکان دارد که خطای R.Layout به دلیل عدم تطابق کش اندروید استودیو و لی اوت کنونی پروژه پیش آمده باشد. در این شرایط باید از نوار ابزار اندروید استودیو به بخش File> Invalidate Cashes / Restart> Invalidate and Restart مراجعه کنید.

مشکلات مربوط به نام منابع نیز از درست ساخته شدن R.java جلوگیری میکنند، لذا باید بررسی کنید که منابع متعددی با نام مشابه ندارید و نام هیچیک از فایل ها شامل کاراکترهای نامعتبر نمیباشد. اندروید استودیو تنها از حروف a-z، اعداد 0-9، نقطه و اندراسکور پشتیبانی میکند و هر کاراکتر نامعتبر موجب خطای R.Layout در کل پروژه میشود، حتی اگر این منبع را در هیچ جای پروژه خود مورد استفاده قرار نداده باشید.

اگر خطای پیش آمده را برطرف کردید، اما باز هم اندروید استودیو خطای R.java را نمایش داد، باید دوباره فرآیند پاک/ری بیلد کردن را تکرار کنید تا اندروید استودیو به درستی تغییرات را ثبت کند.

2. Too Many Field References….Max is 65,536

وقتی اپلیکیشن خود را کامپایل میکنید، APK شامل فایل های بایت کد قابل اجرایی به فرم فایل های بایت کد Dalvik Executable یا همان DEX میباشد. مشخصات DEX تعیین میکند که یک فایل DEX منفرد میتواند به حداکثر 65536 متد ارجاع دهد و اگر با با این خطا مواجه شدید، به این معناست که اپلیکیشن شما این محدودیت را رد کرده است. توجه داشته باشید که این یک محدودیت بر روی تعداد متدهای رفرنس های پروژه شما میباشد و به تعداد متدهای تعریف شده در پروژه ربطی ندارد.

اگر با این خطا مواجه شدید، میتوانید:

- تعداد رفرنس های پروژه خود را کاهش دهید. یکی از موثرترین راه ها برای کم کردن رفرنس های متد، بازبینی وابستگی های اپلیکیشن میباشد.

- اپلیکیشن خود را به گونه ای پیکربندی کنید که از بیش از یک فایل DEX استفاده کند، برای این کار باید multidex را فعال کنید.

فرآیند فعال سازی پشتیبانی multidex، به نسخه های اندروید که پروژه شما از آنها پشتیبانی میکند وابسته است.

چنانچه اپلیکیشن شما از نسخه 5.0 و بالاتر از اندروید پشتیبانی میکند، گام اول باز کردن فایل build.gradle و true کردن multiDexEnables میباشد:

android {

defaultConfig {

minSdkVersion 21

multiDexEnabled true

با این حال اگر minSdkVersion شما 20 یا پایین تر است، در این صورت باید ویژگی multiDexEnabled true را اضافه کرده و سپس کتابخانه پشتیبانی از multidex را به عنوان وابستگی پروژه اضافه کنید:

dependencies {

compile 'com.android.support:multidex:1.0.1'

}

گام بعدی به این وابسته است که به اورراید کردن کلاس Application میپردازید یا خیر. اگر پروژه شما کلاس Application را اورراید میکند، Manifest را باز کرده و کد زیر را به تگ <application> اضافه کنید:

<application

android:name="android.support.multidex.MultiDexApplication" >

...

...

...

</application>

اگر پروژه شما کلاس Application را اورراید نمیکند، در این صورت باید MultiDexApplication را اکستند کنید:

public class MyApplication extends MultiDexApplication

در آخر، اگر کلاس Application را اورراید میکنید اما قادر به تغییر کلاس اصلی نیستید، باید با اورراید کردن متد ()attachBaseContent اقدام به فعال سازی multidex پرداخته و (MultiDex.install(this را فراخوانی کنید، برای مثال:

@Override

protected void attachBaseContext(Context base) {

super.attachBaseContext(base);

MultiDex.install(this);

}

3. Please Choose a Valid JDK Directory

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

برای برطرف کردن این خطا:

- از نوار ابزار اندروید استودیو File> Project structure را انتخاب کنید.

- از منوی سمت چپ SDK Location را انتخاب کنید.

- مطمئن شوید که چک باکس Use embedded JDK انتخاب شده است.

رفع خطاهای رایج در اندروید

اگر این اقدامات به رفع مشکل کمکی نکرد، به File> Project structure…> SDK Location رفته و به صورت دستی مسیر کاملی برای JDK خود وارد کنید. اگر مکان نصب JDK را نمیدانید، میتوانید از Terminal در مک یا Command Prompt در ویندوز استفاده کرده و دستور زیر را وارد کنید:

/usr/libexec/java_home

4. Error Installing APK

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

اگر گوشی خود را به سیستم وصل کرده اید، اما هنگام نصب APK پیام خطای Error installing APK را مشاهده کردید یا گوشی شما در پنجره Select Deployment Target نمایش داده نشد، از روش های زیر اقدام به برطرف کردن این مشکل نمایید:

مطمئن شوید که USB Debuging بر روی گوشی فعال باشد

بخش تنظیمات گوشی خود را باز کرده و Developer Options را بزنید و مطمئن شوید که USB Debugging فعال است. اگر Developer Options را در منوی Settings مشاهده نمیکنید، چندین بار پشت سر هم روی قسمت About Phone ضربه بزنید تا پیام فعال سازی این بخش را مشاهده کنید. به صفحه تنظیمات برگردید، باید Developer Options را در این قسمت ببینید.

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

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

مطمئن شوید که درایور یو اس بی درست را نصب کرده اید

در صورتی که از ویندوز برای توسعه اپلیکیشن خود استفاده میکنید، باید OEM USB driver مناسب را برای گوشی خود دانلود کنید. اگر از کاربران گوشی های نکسوز هستید، باید درایور Google USB را از طریق SDK Manger اندروید استودیو دانلود کنید.

مطمئن شوید که گوشی با حداقل SDK تعریف شده هم خوانی دارد

حداقل SDK پروژه در فایل gradle.build قرار دارد و باید نسخه اندروید گوشی خود را با مراجعه به Settings و قسمت About Phone بررسی کنید.

ADB را ری استارت کنید

پنجره Terminal یا Command Prompt را باز کرده و با cd، دایرکتوری را به پنجره platform-tools خود ست کنید، برای مثال:

cd /Users/Downloads/adt-bundle-mac/sdk/platform-tools

سپس فرآیند adb را متوقف کرده و ری استارت کنید و دستورات زیر را یکی پس از دیگری وارد کنید:

./adb kill-server

./adb start-server

همه چیز را ری استارت کنید!

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

در مطلب بعدی شما را با سایر خطاهای رایج در اندروید و روش برطرف کردن آنها آشنا میکنیم، با ما همراه باشید.

 

https://code.tutsplus.com برگرفته از

اینها را هم بخوانید

نظرات کاربران

  1. Hamid Rahimi
    Hamid Rahimi
    با سلام و خسته نباشید. آقا من بعد نصب نرم افزار با یه مشکل جدی رو ب رو شدم ک هیچ جوابی جایی براش پیدا نکردم. یکیش اینه ک قسمت preview نرم افزار همیشه رو حالت waiting for build to finish هستش. مشکل بعدیم این هست ک تب text و design پایین منوی کد نویسی وجود نداره یعنی همش رو حالت تکست هست و دسترسی به قسمت pallete ندارم. خیلی ممنون میشم اگه راهنماییم کنید.

    به این نظر پاسخ دهید
  2. avatar
    محمد
    عالی بود مرسی

    به این نظر پاسخ دهید