خطاهای ممکن
در این بخش خطاهایی که ممکن است در مراحل مختلف راهاندازی پوشه در اندروید استودیو با آنها مواجه شوید به همراه راه حل ذکر شدهاند.
این خطاها به دو دستهی زیر تقسیم میشوند:
در صورتی که مشکل شما خطا (Error) نیست، ممکن است در بخش سوالات ذکر شده باشد.
خطای مورد نظر شما در این صفحه مطرح نشده است؟ در قسمت Issues گیتهاب جستجو کنید و در صورت نیافتن در آنجا مورد جدیدی مطرح کنید.
خطاهای قبل از اجرای برنامه به هنگام کامپایل
Failed to resolve pushe-base
پوشه از طریق Jcenter
به پروژهی اندروید اضافه میشود (همینطور کتابخانههای دیگری که پوشه از آنها استفاده میکند). با توجه به اینکه این سرویس برای کشور ما تحریم شده است، بایستی با استفاده از ابزار گذر از تحریم این خطا را رفع کنید. به طور کلی دلایل این خطا میتواند موارد زیر باشد:
عدم اتصال به اینترنت
عدم استفاده از ابزار گذر از تحریم: باید از ابزاری مثل شکن و یا ... استفاده کنید.
استفاده از گریدل در حالت Offline mode : برای دانلود کتابخانه از سرور باید گریدل در حالت
offline mode
نباشد.برای حل این مورد بایستی تیک گزینه Offline work را از تنظیمات بردارید:
Failed to resolve Core
در صورتی که تمام موارد گفته شده در خطای قبل درست هستند اما باز هم مشکلی وجود دارد، ممکن است کش گریدل به موردی برخورده باشد و مشکلی داشته باشد. برای حل این مورد میتوانید کش گریدل را طبق مراحل زیر دوباره بارگیری کنید:
- Android studio را ببندید.
- از آدرس زیر فولدر
caches
را حذف کنید:- ویندوز:
C:\Users\YOUR_USER\.gradle\caches
- لینوکس:
/home/YOUR_USER/.gradle/caches
- ویندوز:
- برنامه را اجرا کرده و مجددا پروژه را
Sync
کنید.
Version conflict (خطای نسخههای مختلف یک کتابخانه)
این خطا در صورتی بوجود میآید که نسخههای متفاوتی از یک کتابخانه به پروژه شما اضافه شده باشند. برای مثال شما کتابخانهای را به پروژه خود اضافه کردهاید که این کتابخانه توسط پوشه یا هر کتابخانه دیگری نیز اضافه شده است. در این صورت ممکن است گریدل نتواند این مورد را مدیریت کند و بیلد پروژه به خطا منجر شود. برای برطرف کردن این خطا میتوانید مراحل زیر را انجام دهید.
کتابخانهای که چند نسخه از آن اضافه شده است را خودتان دستی به
dependencies
اضافهکنید و نسخهی آن را معمولا آخرین نسخه قرار دهید.با استفاده از کد زیر گریدل را مجبور کنید که از نسخهی خاصی از آن کتابخانه که خودتان اضافه کردهاید استفاده کند (کد را بالای بلوک
dependencies
قرار دهید.)
// File: build.gradle (app:module)
configurations.all {
resolutionStrategy {
eachDependency { DependencyResolveDetails details ->
def libraryGroup = "{artifact}"
def forceVersion = "{version}"
if (details.requested.group == libraryGroup) {
details.useVersion forceVersion
}
}
}
}
// dependencies {
// ...
بجای {artifact}
پکیج کتابخانه و بجای {version}
نسخهای که مد نظر است و خودتان اضافه کردهاید قرار دهید.
Too many field references (خطای مالتیدکس)
این مورد بدین معنی است که تعداد متدهای اضافه شده به پروژه بیشتر از تعدادی است که ماشین مجازی اندروید میتواند آدرسدهی کند. برای حل این موضوع باید مالتیدکس را در پروژه فعال کنید. برای اطلاعات بیشتر میتوانید به رفع خطای مربوط به MultiDex مراجعه کنید.
خطاهای هنگام اجرای برنامه که در لاگکت(Logcat) میبینید
خطای SERVICE_UNAVAILABLE
این خطا که در لاگکت چاپ میشود غالبا به دلیل نبود اینترنت است.
در صورتی که اینترنت مشکلی ندارد این خطا ممکن است از سمت فایربیس به دلیل نبود گوگلپلی سرویس و یا ... باشد.
خطای Invalid token
این خطا در لاگکت به این دلیل چاپ میشود که توکن مانیفست فرمت درستی ندارد. فرمت درست باید بصورت زیر باشد. باید توکن را بصورت کامل و صحیح از کنسول برداشته و آن را بجای TOKEN بصورت زیر در مانیفست قرار دهید.
<meta-data android:name="pushe_token" android:value="TOKEN" />
خطای No token
در صورتی که تگ meta-data در مانیفست قرار داده نشود و یا در جای درست نباشد این خطا در لاگکت ظاهر میشود.
<!-- AndroidManifest.xml -->
<manifest>
...
<application>
...
<!-- تگ پوشه باید اینجا قرار گیرد -->
<meta-data android:name="pushe_token" android:value="XXXXXXXXXX" />
</application>
</manifest>