Pemecahan Masalah & FAQ untuk Unity dan Firebase

Halaman ini menawarkan tips dan pemecahan masalah untuk masalah khusus Unity yang mungkin Anda alami saat menggunakan Firebase.

Memiliki tantangan lain atau tidak melihat masalah Anda diuraikan di bawah? Pastikan untuk memeriksa FAQ Firebase utama untuk mengetahui lebih banyak tentang pan-Firebase atau FAQ khusus produk.

Kompatibilitas .NET saat menggunakan Unity 2017.x dan yang lebih baru

Firebase mendukung .NET 4.x sebagai opsi build eksperimental di Unity 2017 dan yang lebih baru. Plugin Firebase menggunakan komponen Parse SDK untuk menyediakan beberapa kelas .NET 4.x di versi .NET sebelumnya.

Oleh karena itu, Firebase Unity SDK versi 5.4.0 dan yang lebih baru menyediakan plugin yang kompatibel dengan .NET 3.x atau .NET 4.x di direktori dotnet3 dan dotnet4 dari Firebase Unity SDK.

Jika Anda mengimpor plugin Firebase yang tidak kompatibel dengan versi .NET yang diaktifkan di proyek Anda, Anda akan melihat kesalahan kompilasi dari beberapa jenis dalam kerangka .NET yang diterapkan oleh Parse SDK.

Untuk mengatasi kesalahan kompilasi, jika Anda menggunakan .NET 3.x:

  1. Hapus atau nonaktifkan DLL berikut untuk semua platform:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. Aktifkan DLL berikut untuk semua platform:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll

Untuk mengatasi kesalahan kompilasi, jika Anda menggunakan .NET 4.x:

  1. Hapus atau nonaktifkan DLL berikut untuk semua platform:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. Aktifkan DLL berikut untuk semua platform:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll

Jika Anda mengimpor plugin Firebase lain:

  • Di proyek Unity Anda, navigasikan ke Assets > Play Services Resolver > Version Handler > Update untuk mengaktifkan DLL yang benar untuk proyek Anda.

Kompilasi Unity 2017.1 IL2CPP dalam proyek .NET 4.x

Firebase mendukung .NET 4.x sebagai opsi build eksperimental di Unity 2017 dan yang lebih baru. Plugin Firebase menggunakan komponen Parse SDK untuk menyediakan beberapa kelas .NET 4.x di versi .NET sebelumnya.

Oleh karena itu, Firebase Unity SDK versi 5.4.0 dan yang lebih baru menyediakan DLL penerusan tipe yang meneruskan tipe Parse (misalnya, implementasi Parse System.Threading.Tasks.Task ) ke kerangka kerja .NET. Sayangnya, IL2CPP (transpiler yang mengonversi C# ke C++) yang dikirimkan di Unity 2017.1.x tidak memproses DLL penerusan tipe dengan benar yang menghasilkan galat build yang menyerupai berikut ini:

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

Saat ini tidak ada solusi yang tersedia untuk kesalahan build .NET 4.x IL2CPP di Unity 2017.1, jadi Anda harus memutakhirkan ke Unity 2017.2 atau lebih baru untuk menggunakan .NET 4.x dalam proyek yang dikompilasi dengan IL2CPP.

Unity 2017.2 jaringan

Firebase Realtime Database membuat koneksi jaringan TLS menggunakan tumpukan jaringan .NET. Fungsionalitas TLS rusak di Unity 2017.2 saat menggunakan .NET 4.6 yang menyebabkan plugin Realtime Database gagal di editor dan di desktop.

Tidak ada solusi untuk masalah ini, jadi Anda harus menggunakan versi Unity yang berbeda, misalnya versi 2017.1 atau 2017.3.

File konfigurasi Firebase Android tidak ada di Unity 2020

Untuk mendukung versi Unity yang tidak memiliki kemampuan untuk menyesuaikan build Gradle, alat editor Firebase menghasilkan Assets/Plugins/Android/Firebase/res/values/google-services.xml sebagai sumber daya Android untuk dikemas ke dalam Android build, sehingga Firebase SDK dapat menggunakannya untuk menginisialisasi instance FirebaseApp default.

Di Unity 2020, semua sumber daya Android harus berada dalam direktori dengan akhiran .androidlib . Jika proyek Anda menggunakan SDK Firebase yang menghasilkan direktori Assets/Plugins/Android/Firebase , ganti namanya menjadi Assets/Plugins/Android/Firebase.androidlib . Pastikan itu berisi AndroidManifest.xml , project.properties dan res/values/google-services.xml .

Masalah dengan dex tunggal saat membuat aplikasi Android

Saat membuat aplikasi Android, Anda mungkin mengalami kegagalan build terkait dengan memiliki satu file dex. Pesan kesalahan terlihat mirip dengan berikut ini, jika proyek Anda dikonfigurasi untuk menggunakan sistem pembangunan Gradle.

Cannot fit requested classes in a single dex file.

File Dalvik Executable ( .dex ) digunakan untuk menyimpan sekumpulan definisi kelas dan data tambahan terkait untuk aplikasi Android ( .apk ). Satu file dex terbatas pada referensi ke 65.536 metode. Pembangunan akan gagal jika jumlah total metode dari semua pustaka Android di proyek Anda melebihi batas ini.

Unity memperkenalkan Minification pada 2017.2, yang menggunakan Proguard (atau alat lain di beberapa versi Unity) untuk menghapus kode yang tidak digunakan, yang dapat mengurangi jumlah total metode yang direferensikan dalam satu file dex. Opsi ini dapat ditemukan di Pengaturan Pemain > Android > Pengaturan Penerbitan > Minify . Opsinya mungkin berbeda dalam versi Unity yang berbeda, jadi lihat dokumentasi Unity resmi.

Jika jumlah metode yang direferensikan masih melebihi batas, opsi lain adalah mengaktifkan multidex . Ada beberapa cara untuk mencapai ini di Unity:

  • Jika Custom Gradle Template di bawah Player Settings diaktifkan, ubah mainTemplate.gradle .
  • Jika Anda menggunakan Android Studio untuk membangun proyek yang diekspor, ubah file build.gradle tingkat modul.

Rincian lebih lanjut dapat ditemukan di panduan pengguna multidex .

Dukungan dan desugaring Java 8 untuk build Android di Unity 2017 dan Unity 2018 (Firebase Unity SDK 8.0.0 dan lebih tinggi)

Pada Mei 2021 (Firebase BoM v28.0.0), Firebase menonaktifkan desugaring untuk semua library Android-nya (lihat catatan rilis ). Saat membuat aplikasi Android dengan Firebase Unity SDK (8.0.0 dan lebih tinggi), Anda mungkin melihat error build berikut:

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

Perubahan ini hanya memengaruhi build Android di Unity 2017 dan Unity 2018. Versi Unity yang lebih baru menambahkan blok compileOptions secara default di file build gradle. Untuk memperbaiki kesalahan build ini di Unity 2017 dan Unity 2018, lakukan salah satu hal berikut:

  • Tambahkan blok compileOptions ke template gradle Anda:

    1. Gunakan Gradle sebagai sistem build.
    2. Aktifkan Custom Gradle Template di bawah Player Settings .
    3. Tambahkan baris berikut ke mainTemplate.gradle (atau build.gradle tingkat modul jika mengekspor proyek untuk Android Studio):

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • Atau, tingkatkan minSdkVersion untuk proyek Android Anda menjadi 26 atau lebih tinggi.

Lihat juga Pemecahan masalah Android - mengabaikan kegagalan build .

Masalah saat membuat untuk iOS dengan Cocoapods

Saat membangun untuk iOS, penginstalan Cocoapod mungkin gagal dengan kesalahan tentang lokal bahasa, atau penyandian UTF-8. Saat ini ada beberapa cara berbeda untuk mengatasi masalah tersebut.

  • Dari terminal, jalankan pod install secara langsung, dan buka file xcworkspace yang dihasilkan.

  • Turunkan versi Cocoapods ke 1.10.2. Masalahnya hanya ada di versi 1.11 dan yang lebih baru.

  • Di ~/.bash_profile atau yang setara, tambahkan export LANG=en_US.UTF-8

Cara memperbarui versi Firebase Unity SDK

Proses untuk mengupdate versi Firebase Unity SDK bergantung pada cara awalnya diimpor. Berikut adalah dua metode impor alternatif:

  • Mengimpor file .unitypackage di bawah direktori Assets/ proyek Anda
  • Mengimpor menggunakan Unity Package Manager (UPM)
    • Ini adalah cara yang disarankan untuk mengelola paket di Unity 2018.4+.
    • Gunakan metode ini untuk membuat pembaruan versi mendatang lebih mudah dan Assets/ direktori Anda lebih bersih.

Dalam proyek Unity Anda, Anda hanya boleh menggunakan satu metode impor untuk mengelola semua paket Firebase Anda. Petunjuk di bawah ini dapat digunakan untuk tidak hanya memperbarui versi paket individual, tetapi juga, jika diperlukan, untuk memigrasikan manajemen paket ke UPM (metode impor yang disarankan).