Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

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

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

سازگاری .NET هنگام استفاده از Unity 2017.x و بالاتر

Firebase .NET 4.x را به عنوان یک گزینه ساخت آزمایشی در Unity 2017 و نسخه های بعد پشتیبانی می کند. پلاگین فایربیس استفاده از قطعات از پارسه SDK به ارائه برخی از کلاس های 4.x و دات نت در نسخه های قبلی از دات نت.

بنابراین، SDK نسخه فایربیس وحدت 5.4.0 و بعد از ارائه پلاگین ها که در سازگار با هر دو دات نت های 3.x و یا دات نت های 4.x هستند dotnet3 و dotnet4 دایرکتوری از فایربیس وحدت SDK.

اگر افزونه Firebase را وارد کنید که با نسخه .NET فعال شده در پروژه شما سازگار نیست ، خطاهای کامپایل برخی از انواع را در چارچوب .NET مشاهده می کنید که توسط Parse SDK اجرا می شوند.

اگر از دات نت 3.x استفاده می کنید ، خطای کامپایل را برطرف کنید:

  1. DLL های زیر را برای همه سیستم عامل ها حذف یا غیرفعال کنید:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. DLL های زیر را برای همه سیستم عامل ها فعال کنید:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll

اگر از دات نت 4.x استفاده می کنید ، خطای کامپایل را برطرف کنید:

  1. DLL های زیر را برای همه سیستم عامل ها حذف یا غیرفعال کنید:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. DLL های زیر را برای همه سیستم عامل ها فعال کنید:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll

اگر افزونه Firebase دیگری را وارد می کنید:

  • در پروژه وحدت خود را، حرکت به دارایی> خدمات بازی برطرف> نسخه هندلر> به روز رسانی برای فعال کردن DLL ها درست برای پروژه شما.

Unity 2017.1 گردآوری IL2CPP در .NET 4.x پروژه ها

Firebase .NET 4.x را به عنوان یک گزینه ساخت آزمایشی در Unity 2017 و نسخه های بعد پشتیبانی می کند. پلاگین فایربیس استفاده از قطعات از پارسه SDK به ارائه برخی از کلاس های 4.x و دات نت در نسخه های قبلی از دات نت.

بنابراین، فایربیس وحدت SDK نسخه 5.4.0 و بعد از فراهم می کند DLL های حمل و نقل نوع که به جلو انواع پارسه (به عنوان مثال، اجرای پارسه از System.Threading.Tasks.Task ) به چارچوب دات نت. متأسفانه ، IL2CPP (ترنسپیلی که C# را به C ++ تبدیل می کند) که در Unity 2017.1.x ارسال می شود ، نوع DLL های ارسال کننده را به درستی پردازش نمی کند که منجر به ایجاد خطاهای مشابه زیر می شود:

Fatal error in Unity CIL Linker Mono.Cecil.ResolutionException: Failed to
resolve System.Threading.Tasks.TaskCompletionSource`1<T>

در حال حاضر هیچ راه حلی برای خطاهای ساخت .NET 4.x IL2CPP در Unity 2017.1 وجود ندارد ، بنابراین برای استفاده از .NET 4.x در پروژه های کامپایل شده با IL2CPP باید به Unity 2017.2 یا بالاتر ارتقا دهید.

شبکه Unity 2017.2

پایگاه داده Firebase Realtime پایگاه داده با استفاده از پشته شبکه .NET اتصالات شبکه TLS را ایجاد می کند. عملکرد TLS در Unity 2017.2 هنگام استفاده از .NET 4.6 خراب می شود که باعث می شود افزونه Realtime Database در ویرایشگران و روی دسکتاپ خراب شود.

هیچ راهکاری برای این موضوع وجود ندارد ، بنابراین باید از نسخه دیگری از Unity استفاده کنید ، به عنوان مثال نسخه 2017.1 یا 2017.3.

فایل پیکربندی Firebase Android در Unity 2020 وجود ندارد

به منظور نسخه های حمایت از وحدت که از توانایی سفارشی کردن ساخت gradle ندارد، از ابزار ویرایشگر فایربیس تولید Assets/Plugins/Android/Firebase/res/values/google-services.xml به عنوان یک منبع آندروید را به یک بسته بندی می شود اندروید بسازید ، به طوری که Firebase SDK بتواند از آن برای اولیه سازی نمونه پیش فرض FirebaseApp استفاده کند.

در یونیتی 2020، تمام منابع آندروید باید در دایرکتوری با یک باشد .androidlib پسوند. اگر پروژه شما از یک SDK فایربیس است که به تولید Assets/Plugins/Android/Firebase دایرکتوری، آن را تغییر نام دهید به Assets/Plugins/Android/Firebase.androidlib . مطمئن شوید که آن شامل AndroidManifest.xml ، project.properties و res/values/google-services.xml .

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

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

Cannot fit requested classes in a single dex file.

دالویک اجرایی ( .dex ) فایل های استفاده می شود برای نگهداری یک مجموعه از تعاریف کلاس و داده کمکی همراه خود را برای برنامه های کاربردی آندروید ( .apk ). یک فایل dex تنها به 65.536 روش اشاره شده است. اگر تعداد کل روشهای همه کتابخانه های Android در پروژه شما از این محدوده فراتر رود ، ساخت انجام نمی شود.

وحدت معرفی کوچک سازی در 2017.2، که با استفاده PROGUARD (و یا ابزارهای دیگر در برخی از نسخه های وحدت) به نوار کد استفاده نشده، که می تواند تعداد کل روش اشاره شده در یک فایل دگزامتازون واحد را کاهش دهد. این گزینه می تواند در تنظیمات پلیر> آندروید> تنظیمات انتشار> کوچک کردن پیدا شده است. ممکن است گزینه ها در نسخه های مختلف Unity متفاوت باشند ، بنابراین به اسناد رسمی Unity مراجعه کنید.

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

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

جزئیات بیشتر را می توان در یافت راهنمای multidex .

پشتیبانی جاوا 8 و رفع اشکال برای اندروید در Unity 2017 و Unity 2018 (Firebase Unity SDK 8.0.0 و بالاتر)

در مه 2021 (فایربیس BOM v28.0.0)، فایربیس desugaring غیر فعال برای همه کتابخانه های آندروید خود (نگاه کنید به توجه داشته باشید نسخه ). هنگام ساخت یک برنامه Android با Firebase Unity SDK (8.0.0 و بالاتر) ، ممکن است خطای ساخت زیر را مشاهده کنید:

> Error while dexing.
 The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle

این تغییر فقط روی نسخه های اندروید در یونیتی 2017 و یونیتی 2018 تأثیر می گذارد. نسخه های جدیدتر Unity اضافه کردن compileOptions بلوک به طور پیش فرض در فایل های ساخت gradle. برای رفع این خطای ساخت در Unity 2017 و Unity 2018 ، یکی از موارد زیر را انجام دهید:

  • اضافه کردن compileOptions بلوک به قالب gradle شما:

    1. استفاده از Gradle به عنوان سیستم ساخت.
    2. فعال کردن Custom Gradle Template تحت Player Settings .
    3. خط زیر را اضافه به mainTemplate.gradle (یا سطح ماژول build.gradle اگر صادرات یک پروژه برای اندروید استودیو):

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • روش دیگر ، minSdkVersion را برای پروژه Android خود به 26 یا بالاتر افزایش دهید.

همچنین نگاه desugaring شکست ساخت - عیب یابی آندروید .