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