عیب یابی & سوالات متداول برای Unity و Firebase

این صفحه نکات و عیب‌یابی برای مشکلات خاص 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 (روش واردات توصیه‌شده) استفاده کرد.