این صفحه نکات و عیبیابیهایی را برای مشکلات خاص Unity که ممکن است هنگام استفاده از Firebase با آنها مواجه شوید، ارائه میدهد.
چالشهای دیگری دارید یا مشکل خود را در زیر مشاهده نمیکنید؟ برای سوالات متداول بیشتر در مورد Firebase یا محصول خاص، حتماً به بخش اصلی سوالات متداول Firebase مراجعه کنید.
مشکلی با single dex هنگام ساخت برنامه اندروید
هنگام ساخت برنامه اندروید، ممکن است با خطای ساخت مربوط به داشتن یک فایل dex واحد مواجه شوید. اگر پروژه شما برای استفاده از سیستم ساخت Gradle پیکربندی شده باشد، پیام خطا مشابه زیر خواهد بود.
Cannot fit requested classes in a single dex file.
فایلهای اجرایی Dalvik ( .dex ) برای نگهداری مجموعهای از تعاریف کلاس و دادههای الحاقی مرتبط با آنها برای برنامههای اندروید ( .apk ) استفاده میشوند. یک فایل dex محدود به ارجاع به 65536 متد است. اگر تعداد کل متدها از تمام کتابخانههای اندروید در پروژه شما از این حد تجاوز کند، ساخت برنامه با شکست مواجه خواهد شد.
یونیتی در سال ۲۰۱۷.۲ قابلیت Minification را معرفی کرد که از Proguard (یا ابزارهای دیگر در برخی نسخههای یونیتی) برای حذف کدهای استفاده نشده استفاده میکند و میتواند تعداد کل متدهای ارجاع شده در یک فایل dex را کاهش دهد. این گزینه را میتوانید در Player Settings > Android > Publishing Settings > Minify پیدا کنید. این گزینهها ممکن است در نسخههای مختلف یونیتی متفاوت باشند، بنابراین به مستندات رسمی یونیتی مراجعه کنید.
اگر تعداد متدهای ارجاعشده هنوز از حد مجاز بیشتر است، گزینه دیگر فعال کردن multidex است. روشهای مختلفی برای دستیابی به این هدف در یونیتی وجود دارد:
- اگر
Custom Gradle TemplateدرPlayer Settingsفعال است،mainTemplate.gradleتغییر دهید. - اگر از اندروید استودیو برای ساخت پروژه اکسپورت شده استفاده میکنید، فایل
build.gradleدر سطح ماژول را تغییر دهید.
جزئیات بیشتر را میتوانید در راهنمای کاربر multidex بیابید.
مشکلات هنگام ساخت برنامه برای اندروید با minSdkVersion 23
هنگام ساخت برای اندروید، اگر minSdkVersion 23 را هدف قرار دهید، ممکن است در مرحله dexing، معمولاً در وظیفه Gradle ':launcher:mergeExtDexDebug'، با شکست مواجه شود، جایی که پیام "Failed to transform" یکی از کتابخانههای اندروید را نشان میدهد. این به دلیل اشکالی در ابزار dex پیشفرض در SDK اندروید است که اکثر ویرایشگرهای Unity از آن استفاده میکنند و میتوان آن را به چند روش مختلف برطرف کرد:
-
minSdkVersionرا روی ۲۴ تنظیم کنید. - کوچکسازی اندروید را در تنظیمات پخشکننده > اندروید > تنظیمات انتشار > کوچکسازی فعال کنید.
- با اضافه کردن این به فایل
settingsTemplate.gradleخود، نسخه متفاوتی از ابزار dex را مشخص کنید:
buildscript {
repositories {
mavenLocal()
maven { url 'https://maven.google.com' }
mavenCentral()
}
dependencies {
classpath 'com.android.tools:r8:8.3.37'
}
}
مشکلات هنگام ساخت برنامه برای iOS با Cocoapods
هنگام ساخت برای iOS، نصب Cocoapod ممکن است با خطایی در مورد زبان محلی یا رمزگذاری UTF-8 مواجه شود. در حال حاضر چندین روش مختلف برای حل این مشکل وجود دارد.
از ترمینال،
pod installمستقیماً اجرا کنید و فایل xcworkspace حاصل را باز کنید.نسخه Cocoapods را به ۱.۱۰.۲ دانگرید کنید. این مشکل فقط در نسخه ۱.۱۱ و جدیدتر وجود دارد.
در فایل
~/.bash_profile یا معادل آن،export LANG=en_US.UTF-8 را اضافه کنید.
نحوه بهروزرسانی نسخه SDK های Firebase Unity
فرآیند بهروزرسانی نسخههای Firebase Unity SDKها به نحوهی اولیهی وارد کردن آنها بستگی دارد. در اینجا دو روش جایگزین برای وارد کردن آنها آورده شده است:
- وارد کردن فایلهای
.unitypackage در پوشهAssets/پروژه شما - وارد کردن با استفاده از مدیر بستههای یونیتی (UPM)
- این روش پیشنهادی برای مدیریت بستهها در یونیتی ۲۰۱۸.۴ به بالا است.
- از این روش برای آسانتر کردن بهروزرسانیهای نسخههای بعدی و پاکسازی دایرکتوری
Assets/استفاده کنید.
در پروژه Unity خود، فقط باید از یک روش import برای مدیریت تمام بستههای Firebase خود استفاده کنید. دستورالعملهای زیر نه تنها برای بهروزرسانی نسخه بستههای منفرد، بلکه در صورت نیاز، برای انتقال مدیریت بسته به UPM (روش import پیشنهادی) نیز قابل استفاده هستند.
اگر بستههای Firebase در دایرکتوری Assets/ قرار دارند، دو گزینه برای بهروزرسانی نسخه SDK دارید:
گزینه ۱ (توصیه میشود) : مهاجرت به استفاده از UPM (موجود در یونیتی ۲۰۱۸.۴ به بالا)
- برای انتقال مدیریت بسته به UPM، دستورالعملهای ارائه شده توسط Firebase را دنبال کنید.
- اگرچه این روش به تنظیمات اولیه بیشتری نسبت به ادامه استفاده از گردش کار
.unitypackageنیاز دارد، اما مزیت آن سهولت در بهروزرسانیهای بعدی نسخه SDK است.
گزینه ۲ : همچنان از فایلهای
.unitypackageبرای وارد کردن آنها به دایرکتوریAssets/استفاده کنیدهر یک از بستهها را برای نسخه بهروز شده وارد کنید.
اگر firebase_unity_sdk.zip را از وبسایت Firebase دانلود میکنید، مطمئن شوید که تمام
.unitypackagesاز پوشه صحیحdotnetوارد میکنید.- اگر از Unity 2019 یا بالاتر استفاده میکنید، از پوشه
dotnet4وارد کنید. - در غیر این صورت، در تنظیمات پخشکننده ، نسخهٔ زمان اجرای اسکریپت را انتخاب کنید و اگر روی «.NET 3.x» تنظیم شده است، از پوشهٔ
dotnet3وارد کنید.
- اگر از Unity 2019 یا بالاتر استفاده میکنید، از پوشه
بازنویسی نسخههای قبلی بستههای وارد شده باید به طور خودکار توسط مدیر وابستگی خارجی (که به طور خودکار هنگام وارد کردن Firebase
.unitypackagesگنجانده شده است) انجام شود.با این حال، اگر و فقط اگر این فرآیند خودکار با شکست مواجه شد، باید پوشههای زیر را به صورت دستی حذف کنید و سپس مرحله وارد کردن بالا را دوباره امتحان کنید.
-
Assets/Editor Default Resources/Firebase -
Assets/ExternalDependencyManager -
Assets/Firebase -
Assets/Parse -
Assets/Plugins/iOS/Firebase
-
اگر بستههای Firebase توسط UPM مدیریت میشوند، نسخه SDK جدیدتر را به عنوان یک .tgz وارد کنید . این وارد کردن به طور خودکار نسخه قبلی را بازنویسی میکند.