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.

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.

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 dalam Player Settings diaktifkan, ubah mainTemplate.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.

Masalah saat mem-build untuk Android dengan minSdkVersion 23

Saat mem-build untuk Android, jika Anda menargetkan minSdkVersion 23, build tersebut mungkin gagal pada langkah dexing, biasanya dalam tugas Gradle ':launcher:mergeExtDexDebug', yang akan menampilkan "Gagal mengubah" salah satu library Android. Hal ini disebabkan oleh bug pada alat dex default di Android SDK yang digunakan oleh sebagian besar editor Unity, dan dapat diperbaiki dengan beberapa cara:

  • Setel minSdkVersion menjadi 24.
  • Aktifkan minifikasi Android, di Player Settings > Android > Publishing Settings > Minify
  • Tentukan versi alat dex yang berbeda dengan menambahkannya ke file settingsTemplate.gradle:
buildscript {
  repositories {
    mavenLocal()
    maven { url 'https://maven.google.com'  }
    mavenCentral()
  }
  dependencies {
    classpath 'com.android.tools:r8:8.3.37'
  }
}

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, tambahkan export 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 direktori Assets/ 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).

Jika paket Firebase berada di direktori Assets/, ada dua opsi untuk mengupdate versi SDK:

  • Opsi 1 (direkomendasikan): Memigrasi menggunakan UPM (tersedia di Unity 2018.4+)

    • Ikuti petunjuk untuk memigrasikan pengelolaan paket ke UPM yang disediakan Firebase.
    • Meskipun metode ini memerlukan lebih banyak penyiapan awal daripada terus menggunakan alur kerja .unitypackage, metode ini dapat memudahkan untuk melakukan update versi SDK berikutnya.
  • Opsi 2: Terus menggunakan file .unitypackage untuk mengimpornya ke direktori Assets/

    1. Impor setiap paket untuk versi yang diupdate.

      Jika mendownload firebase_unity_sdk.zip dari situs Firebase, pastikan Anda mengimpor semua .unitypackages dari folder dotnet yang benar.

      • Jika Anda menggunakan Unity 2019 atau yang lebih baru, impor dari folder dotnet4.
      • Jika tidak, pilih Scripting Runtime Version di Player Settings, dan jika disetel ke ".NET 3.x", impor dari folder dotnet3.
    2. Penimpaan versi paket yang diimpor sebelumnya harus ditangani secara otomatis oleh External Dependency Manager (yang otomatis disertakan saat Anda mengimpor Firebase .unitypackages).

      Namun, jika dan HANYA jika proses otomatis ini gagal, Anda harus menghapus folder berikut secara manual, lalu mencoba kembali langkah impor di atas.

      • Assets/Editor Default Resources/Firebase
      • Assets/ExternalDependencyManager
      • Assets/Firebase
      • Assets/Parse
      • Assets/Plugins/iOS/Firebase

Jika paket Firebase dikelola oleh UPM, impor versi SDK yang lebih baru sebagai .tgz. Impor ini secara otomatis akan menimpa versi sebelumnya.