عیب‌یابی و پرسشگان برای Unity و Firebase

این صفحه نکته‌ها و عیب‌یابی‌هایی برای مشکلات خاص Unity ارائه می‌دهد که ممکن است هنگام استفاده از Firebase با آن‌ها مواجه شوید.

آیا چالش‌های دیگری دارید یا مشکلتان را در زیر نمی‌بینید؟ حتماً پرسشگان اصلی Firebase را برای پرسشگان بیشتر درباره Firebase یا محصولات خاص بررسی کنید.

مشکلی در dex تکی هنگام ساختن برنامه Android وجود دارد

هنگام ساختن برنامه Android، ممکن است با خطای ساخت مربوط به داشتن یک فایل dex مواجه شوید. اگر پروژه‌تان برای استفاده از سیستم ساخت Gradle پیکربندی شده باشد، پیام خطا شبیه به مورد زیر خواهد بود.

Cannot fit requested classes in a single dex file.

از فایل‌های Dalvik Executable‏ (.dex) برای نگهداری مجموعه‌ای از تعاریف کلاس و داده‌های کمکی مرتبط با آن‌ها برای برنامه‌های Android‏ (.apk) استفاده می‌شود. یک فایل dex تکی محدود به ارجاع به ۶۵٬۵۳۶ روش است. اگر تعداد کل روش‌ها از همه کتابخانه‌های Android در پروژه‌تان از این حد فراتر رود، ساخت با شکست مواجه خواهد شد.

Unity در نسخه ۲۰۱۷.۲، Minification را معرفی کرد که از Proguard (یا ابزارهای دیگر در برخی‌از نسخه‌های Unity) برای حذف کدهای استفاده‌نشده استفاده می‌کند و می‌تواند تعداد کل روش‌های ارجاع‌شده در یک فایل dex را کاهش دهد. این گزینه را می‌توانید در تنظیمات پخش‌کننده > Android > تنظیمات انتشار > کوچک کردن پیدا کنید. گزینه‌ها ممکن است در نسخه‌های مختلف Unity متفاوت باشد، بنابراین به اسناد رسمی Unity مراجعه کنید.

اگر تعداد روش‌های ارجاع‌شده همچنان از حد مجاز فراتر می‌رود، گزینه دیگر فعال کردن multidex است. روش‌های متعددی برای دستیابی به این هدف در Unity وجود دارد:

  • اگر Custom Gradle Template در Player Settings فعال است، mainTemplate.gradle را اصلاح کنید.
  • اگر از Android Studio برای ساختن پروژه صادرشده استفاده می‌کنید، فایل build.gradle سطح ماژول را اصلاح کنید.

جزئیات بیشتر را می‌توانید در راهنمای کاربر مولتی‌دکس پیدا کنید.

مشکلات هنگام ساختن برای Android با minSdkVersion 23

هنگام ساختن برای Android، اگر minSdkVersion 23 را هدف قرار دهید، ممکن است در مرحله dexing با شکست مواجه شود، معمولاً در تکلیف Gradle «:launcher:mergeExtDexDebug»، که در آن گفته می‌شود «تبدیل یکی از کتابخانه‌های Android ناموفق بود». این مشکل به‌دلیل وجود اشکالی در ابزار dex پیش‌فرض در کیت توسعه نرم‌افزار Android است که اکثر ویرایشگرهای Unity از آن استفاده می‌کنند و به چند روش مختلف می‌توان آن را برطرف کرد:

  • minSdkVersion را روی ۲۴ تنظیم کن.
  • کوچک‌سازی Android را در تنظیمات پخش‌کننده > Android > تنظیمات انتشار > کوچک‌سازی روشن کنید
  • با افزودن این مورد به فایل 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 را اضافه کنید

نحوه به‌روزرسانی نسخه کیت‌های توسعه نرم‌افزار Firebase Unity

فرایند به‌روزرسانی نسخه‌های کیت توسعه نرم‌افزار Firebase در Unity به نحوه وارد کردن اولیه آن‌ها بستگی دارد. در اینجا دو روش جایگزین برای وارد کردن آورده شده است:

  • درحال وارد کردن .unitypackage فایل در فهرست راهنمای Assets/ پروژه شما
  • وارد کردن بااستفاده از مدیر بسته Unity (UPM)
    • این روش توصیه‌شده برای مدیریت بسته‌ها در Unity 2018.4+‎ است.
    • از این روش استفاده کنید تا به‌روزرسانی‌های نسخه آینده آسان‌تر شود و فهرست راهنمای Assets/ شما تمیزتر شود.

در پروژه Unity، فقط باید از یک روش وارد کردن برای مدیریت همه بسته‌های Firebase استفاده کنید. از دستورالعمل‌های زیر نه‌تنها می‌توان برای به‌روزرسانی نسخه بسته‌های مجزا استفاده کرد، بلکه درصورت نیاز می‌توان برای انتقال مدیریت بسته به UPM (روش وارد کردن توصیه‌شده) نیز از آن‌ها استفاده کرد.