Halaman ini menawarkan tips dan pemecahan masalah untuk masalah khusus Unity yang mungkin Anda alami saat menggunakan Firebase.
Ada kesulitan lain atau masalah yang Anda alami tidak dijelaskan di bawah ini? Pastikan Anda membaca FAQ Firebase utama untuk mengetahui lebih lanjut FAQ lintas Firebase atau khusus produk.
Kompatibilitas .NET saat menggunakan Unity 2017.x dan yang lebih baru
Firebase mendukung .NET 4.x sebagai opsi build eksperimental pada Unity 2017 dan yang lebih baru. Plugin Firebase menggunakan komponen Parse SDK untuk menyediakan beberapa class .NET 4.x pada .NET versi sebelumnya.
Oleh sebab itu, Firebase Unity SDK versi 5.4.0
dan yang lebih baru menyediakan plugin yang
kompatibel dengan .NET 3.x atau .NET 4.x dalam direktori dotnet3
serta dotnet4
dari Firebase Unity SDK.
Jika Anda mengimpor plugin Firebase yang tidak kompatibel dengan versi .NET yang diaktifkan di project Anda, Anda akan menemukan error kompilasi dari beberapa jenis di framework .NET yang diimplementasikan oleh Parse SDK.
Untuk mengatasi error kompilasi, jika Anda menggunakan .NET 3.x:
- Hapus atau nonaktifkan DLL berikut untuk semua platform:
Parse/Plugins/dotNet45/Unity.Compat.dll
Parse/Plugins/dotNet45/Unity.Tasks.dll
- Aktifkan DLL berikut untuk semua platform:
Parse/Plugins/Unity.Compat.dll
Parse/Plugins/Unity.Tasks.dll
Untuk mengatasi error kompilasi, jika Anda menggunakan .NET 4.x:
- Hapus atau nonaktifkan DLL berikut untuk semua platform:
Parse/Plugins/Unity.Compat.dll
Parse/Plugins/Unity.Tasks.dll
- 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 project Unity Anda, buka Assets > Play Services Resolver > Version Handler > Update untuk mengaktifkan DLL yang benar untuk project Anda.
Kompilasi IL2CPP Unity 2017.1 di project .NET 4.x
Firebase mendukung .NET 4.x sebagai opsi build eksperimental pada Unity 2017 dan yang lebih baru. Plugin Firebase menggunakan komponen Parse SDK untuk menyediakan beberapa class .NET 4.x pada .NET versi sebelumnya.
Oleh sebab itu, Firebase Unity SDK versi 5.4.0 dan yang lebih baru menyediakan
DLL penerusan jenis yang meneruskan jenis Parse (misalnya, penerapan Parse dari
System.Threading.Tasks.Task
) ke framework .NET. Sayangnya, IL2CPP (transpiler yang mengonversi C# menjadi C++) yang disertakan di Unity 2017.1.x tidak memproses secara benar DLL penerusan jenis, sehingga menghasilkan error 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 tersedia solusi untuk error build IL2CPP .NET 4.x di Unity 2017.1, jadi Anda harus mengupgrade ke Unity 2017.2 atau yang lebih baru untuk menggunakan .NET 4.x dalam project yang dikompilasi dengan IL2CPP.
Networking Unity 2017.2
Firebase Realtime Database membuat koneksi jaringan TLS menggunakan stack networking .NET. Fungsionalitas TLS akan rusak di Unity 2017.2 jika menggunakan .NET 4.6, yang menyebabkan kegagalan plugin Realtime Database di editor dan di desktop.
Masalah ini belum ada solusinya, jadi Anda harus menggunakan Unity versi berbeda, misalnya versi 2017.1 atau 2017.3.
File konfigurasi Android Firebase 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 resource
Android yang akan dikemas dalam build Android. Jadi, Firebase SDK dapat menggunakannya
untuk menginisialisasi instance FirebaseApp default.
Di Unity 2020, semua resource Android harus berada di direktori dengan
akhiran .androidlib
. Jika project Anda menggunakan Firebase SDK yang menghasilkan
direktori Assets/Plugins/Android/Firebase
, ganti namanya menjadi
Assets/Plugins/Android/Firebase.androidlib
. Pastikan file tersebut berisi
AndroidManifest.xml
, project.properties
, dan
res/values/google-services.xml
.
Masalah dengan dex tunggal saat mem-build aplikasi Android
Saat mem-build aplikasi Android, Anda mungkin mengalami kegagalan build yang terkait dengan file dex tunggal. Pesan error akan terlihat seperti berikut, jika project Anda dikonfigurasi untuk menggunakan sistem build Gradle.
Cannot fit requested classes in a single dex file.
File Dalvik Executable (.dex
) digunakan untuk menyimpan sekumpulan definisi
class dan data tambahan yang terkait untuk aplikasi Android (.apk
). File dex tunggal
dibatasi untuk merujuk ke maksimal 65.536 metode. Build akan gagal jika jumlah total
metode dari semua library Android di project Anda melampaui batas ini.
Unity memperkenalkan Minifikasi pada versi 2017.2, yang menggunakan Proguard (atau alat lain di beberapa versi Unity) untuk menghapus kode yang tidak terpakai, yang dapat mengurangi jumlah total metode yang dirujuk dalam file dex tunggal. Opsi ini dapat ditemukan di Player Settings > Android > Publishing Settings > Minify. Opsinya mungkin berbeda pada versi Unity yang berbeda. Karena itu, baca dokumentasi resmi Unity.
Jika jumlah metode yang direferensikan masih melebihi batas, opsi lainnya adalah
mengaktifkan multidex
. Ada beberapa cara untuk melakukan ini di Unity:
- Jika
Custom Gradle Template
dalamPlayer Settings
diaktifkan, ubahmainTemplate.gradle
. - Jika Anda menggunakan Android Studio untuk mem-build project yang diekspor, ubah file
build.gradle
level modul.
Detail selengkapnya dapat ditemukan di panduan pengguna multidex.
Dukungan dan desugaring Java 8 untuk build Android pada Unity 2017 dan Unity 2018 (Firebase Unity SDK 8.0.0 dan yang lebih tinggi)
Pada bulan Mei 2021 (Firebase BoM v28.0.0), Firebase menonaktifkan desugaring untuk semua library Android-nya (lihat catatan rilis). Saat mem-build aplikasi Android dengan Firebase Unity SDK (8.0.0 dan yang 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 pada Unity 2017 dan Unity 2018. Versi Unity yang lebih baru menambahkan blok compileOptions
secara default dalam file build gradle.
Untuk memperbaiki error build ini pada Unity 2017 dan Unity 2018, lakukan salah satu langkah berikut:
Tambahkan blok
compileOptions
ke template gradle Anda:- Gunakan
Gradle
sebagai sistem build. - Aktifkan
Custom Gradle Template
di bagianPlayer Settings
. Tambahkan baris berikut ke
mainTemplate.gradle
(ataubuild.gradle
level modul jika mengekspor project untuk Android Studio):android { compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } }
- Gunakan
Atau, tingkatkan minSdkVersion untuk project Android Anda menjadi 26 atau lebih tinggi.
Selain itu, lihat Pemecahan masalah Android - kegagalan build desugaring.
Masalah saat mem-build untuk iOS dengan Cocoapods
Saat mem-build untuk iOS, penginstalan Cocoapod mungkin gagal dengan error tentang lokalitas bahasa, atau encoding UTF-8. Saat ini ada beberapa cara berbeda untuk mengatasi masalah ini.
Dari terminal, jalankan
pod install
secara langsung, lalu buka file xcworkspace yang dihasilkan.Downgrade versi Cocoapods ke 1.10.2. Masalah ini hanya ada di versi 1.11 dan yang lebih baru.
Di
~/.bash_profile
atau yang setara, tambahkanexport LANG=en_US.UTF-8
Cara mengupdate versi Firebase Unity SDK
Proses untuk mengupdate versi Firebase Unity SDK bergantung pada bagaimana versi tersebut pertama kali diimpor. Berikut adalah dua metode impor alternatif:
- Mengimpor file
.unitypackage
di direktoriAssets/
project Anda - Mengimpor menggunakan
Pengelola Paket Unity
(UPM)
- Ini adalah cara yang direkomendasikan untuk mengelola paket di Unity 2018.4+.
- Gunakan metode ini untuk memudahkan update versi mendatang dan membuat direktori
Assets/
lebih bersih.
Dalam project Unity, Anda hanya boleh menggunakan satu metode impor untuk mengelola semua paket Firebase. Petunjuk di bawah ini dapat digunakan tidak hanya untuk mengupdate versi masing-masing paket, tetapi juga, jika diperlukan, untuk memigrasi pengelolaan paket ke UPM (metode impor yang direkomendasikan).