Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

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 utama Firebase FAQ untuk FAQ lebih pan-Firebase atau produk tertentu.

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 dari Parse SDK untuk memberikan beberapa kelas NET 4.x di versi sebelumnya NET.

Oleh karena itu, Firebase Unity SDK versi 5.4.0 dan kemudian menyediakan plugin yang kompatibel dengan baik NET 3.x atau NET 4.x di dotnet3 dan dotnet4 direktori 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:

  • Dalam proyek Unity Anda, navigasi ke Aset> Play Resolver> Versi 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 dari Parse SDK untuk memberikan beberapa kelas NET 4.x di versi sebelumnya NET.

Oleh karena itu, Firebase Unity SDK versi 5.4.0 dan kemudian menyediakan jenis forwarding DLL yang meneruskan jenis Parse (misalnya, pelaksanaan Parse dari System.Threading.Tasks.Task ) untuk NET framework. 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 yang 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 Android Firebase tidak ada di Unity 2020

Dalam rangka untuk versi dukungan dari Persatuan yang tidak memiliki kemampuan untuk menyesuaikan Gradle membangun, alat Editor Firebase menghasilkan Assets/Plugins/Android/Firebase/res/values/google-services.xml sebagai sumber Android yang akan dikemas ke dalam Android build, sehingga Firebase SDK dapat menggunakannya untuk menginisialisasi instance FirebaseApp default.

Dalam Kesatuan 2020, semua sumber daya Android harus dalam direktori dengan .androidlib akhiran. Jika proyek Anda menggunakan Firebase SDK yang menghasilkan Assets/Plugins/Android/Firebase direktori, mengganti nama ke Assets/Plugins/Android/Firebase.androidlib . Pastikan mengandung 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.

Dalvik Executable ( .dex ) file yang digunakan untuk menyimpan satu set definisi kelas dan data tambahan yang 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.

Persatuan diperkenalkan Minification di 2.017,2, yang menggunakan Proguard (atau alat-alat lain dalam beberapa versi Unity) untuk menghapus kode yang tidak digunakan, yang dapat mengurangi jumlah metode dirujuk dalam sebuah file dex tunggal. Opsi dapat ditemukan di Settings Pemain> Android> Penerbitan Pengaturan> Mengecilkan. Opsi mungkin berbeda dalam versi Unity yang berbeda, jadi lihat dokumentasi Unity resmi.

Jika jumlah metode dirujuk masih melebihi batas, pilihan lain adalah untuk memungkinkan multidex . Ada beberapa cara untuk mencapai ini di Unity:

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

Rincian lebih lanjut dapat ditemukan di buku petunjuk 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 desugaring dinonaktifkan untuk semua perpustakaan Android (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 yang lebih baru dari Persatuan menambahkan compileOptions blok secara default di Gradle membangun file. Untuk memperbaiki kesalahan build ini di Unity 2017 dan Unity 2018, lakukan salah satu hal berikut:

  • Tambahkan compileOptions blok ke template Gradle Anda:

    1. Gunakan Gradle sebagai sistem membangun.
    2. Aktifkan Custom Gradle Template di bawah Player Settings .
    3. Tambahkan baris berikut ke mainTemplate.gradle (atau tingkat modul build.gradle jika mengekspor sebuah 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 Android pemecahan masalah - desugaring membangun kegagalan .