Proses debug Build, Penginstalan, dan Proses Menjalankan Game

Pengantar

Berikut ini adalah panduan untuk memproses debug kompilasi dan proses build untuk game Unity menggunakan Firebase SDK untuk Unity. Panduan ini menjelaskan cara menyelidiki dan menyelesaikan berbagai masalah umum yang dapat Anda temui saat mengonfigurasi dan membangun game untuk platform baru atau setelah update. Panduan ini disusun sesuai dengan urutan waktu masing-masing error ini terjadi dalam proses. Baca panduan secara berurutan dan lanjutkan setelah satu masalah teratasi.

Selain dokumen ini, baca FAQ Firebase untuk Unity untuk mengetahui informasi selengkapnya.

Masalah kompilasi Mode Play

Masalah build yang pertama dapat terjadi saat melakukan pengujian di editor sebelum Anda mencoba memulai build seluler. Bagian ini membahas semua error Firebase yang terjadi sebelum dan selama Mode Play.

Saat Unity memulai atau mendeteksi perubahan pada dependensi, kode, atau aset lainnya, Unity akan mencoba membangun ulang project. Jika project tidak dapat dikompilasi pada saat itu, editor akan mencatat error kompilasi ke dalam konsol. Jika Anda mencoba memasuki Mode Play, Anda akan menerima pop-up error di tab Scene Unity yang bertuliskan All compiler errors have to be fixed before you can enter playmode!.

Jenis, class, metode, dan anggota tidak ada

Banyak masalah Firebase terjadi karena ketidakmampuan editor dan compiler untuk menemukan jenis, class, metode, dan anggota yang diperlukan. Gejala umumnya adalah varian berikut:

The type or namespace name ‘<CLASS OR NAMESPACE NAME>' could not be found. Are you missing a using directive or an assembly reference?

The type or namespace name <TYPE OR NAMESPACE NAME> does not exist in the namespace ‘Firebase<.OPTIONAL NESTED NAMESPACE NAME PATH>' (are you missing an assembly reference?)

‘<CLASS NAME>' does not contain a definition for ‘<MEMBER VARIABLE OR METHOD NAME>'

Langkah penyelesaian:
  1. Jika Anda menggunakan class atau metode Firebase dalam kode, pastikan Anda menyediakannya dengan menyertakan perintah using yang tepat untuk produk Firebase yang bersangkutan yang diperlukan.

    1. Contoh dari MechaHamster: Tingkatkan Kemampuan dengan Edisi Firebase:
      1. using Firebase.RemoteConfig;
      2. using Firebase.Crashlytics;
  2. Pastikan Anda telah mengimpor paket Firebase yang sesuai:

    1. Cara mengimpor paket yang sesuai:
      1. Tambahkan Firebase Unity SDK sebagai .unitypackage atau
      2. Pelajari dan lakukan salah satu cara alternatif dalam Opsi penginstalan Unity tambahan.
    2. Pastikan setiap produk Firebase dalam project Anda dan EDM4U:
      • Menggunakan versi yang sama
      • Diinstal sebagai .unitypackage secara eksklusif ATAU secara eksklusif melalui Pengelola Paket Unity.
  3. Jika Anda telah mengimpor Firebase Unity SDK sebelum versi "10.0.0" sebagai .unitypackage, file zip Firebase Unity SDK akan berisi paket untuk dukungan .NET 3.x dan .NET 4.x. Pastikan Anda hanya menyertakan level .NET Framework yang kompatibel dalam project:

    1. Kompatibilitas antara versi Unity Editor dan Level .NET Framework dibahas dalam Menambahkan Firebase ke project Unity.
    2. Jika Anda tidak sengaja mengimpor paket Firebase di Level .NET Framework yang salah atau perlu beralih dari menggunakan .unitypackage ke salah satu Opsi penginstalan Unity tambahan, cara terbaiknya adalah dengan menghapus setiap paket Firebase melalui metode yang disebutkan di bagian migrasi ini, lalu impor ulang semua paket Firebase lagi.
  4. Pastikan bahwa editor Anda membangun ulang project dan percobaan untuk bermain mencerminkan status terbaru project Anda:

    1. Secara default, editor Unity disetel untuk membangun ulang setiap kali perubahan aset atau konfigurasi terdeteksi.
    2. Mungkin saja fungsi ini telah dinonaktifkan dan Unity Editor disetel ke refresh/kompilasi manual. Selidiki hal ini dan coba refresh secara manual jika hal ini yang terjadi.

Error runtime Mode Play

Jika game Anda dimulai, tetapi mengalami masalah dengan Firebase saat berjalan, coba langkah berikut:

Pastikan Anda menyetujui paket Firebase di "Security & Privacy" di Mac OS

Jika Anda melihat dialog yang bertuliskan, "FirebaseCppApp-<version>.bundle Cannot be opened because the developer cannot be verified." saat memulai game di editor di Mac OS, Anda harus menyetujui file paket tersebut di menu Security & Privacy Mac.

Untuk melakukannya, klik ikon Apple > System Preference > Security & Privacy

Di menu keamanan, kira-kira di bagian tengah halaman, ada bagian yang bertuliskan ""FirebaseCppApp-<version>.bundle" was blocked from use because it is not from an identified developer."

Klik tombol berlabel Allow Anyway.

c35166e224cce720.png

Kembali ke Unity, lalu tekan Play lagi.

Anda akan melihat peringatan yang serupa dengan yang pertama:

5ad9ddb0d3a52892.png

Tekan Open dan program Anda akan dapat dilanjutkan; Anda tidak akan ditanya tentang file ini lagi.

Pastikan project Anda berisi dan menggunakan file konfigurasi yang valid

  1. Pastikan setelan build Anda ditetapkan untuk target yang diinginkan (iOS atau Android) di File > Build Settings. Untuk memahami secara lebih mendalam, baca Dokumentasi Setelan Build Unity.
  2. Download file konfigurasi untuk aplikasi Anda (google-services.json untuk Android atau GoogleService-Info.plist untuk iOS) dan bangun target dari Firebase console di Project Settings > Your Apps: Jika Anda sudah memilikinya, hapus file ini di project Anda, lalu ganti dengan versi terbaru. Pastikan file tersebut dieja persis seperti yang ditampilkan di atas tanpa "(1)" atau nomor lain yang disertakan ke nama file.
  3. Jika konsol berisi pesan terkait file dalam Assets/StreamingAssets/, pastikan tidak ada pesan konsol yang menyatakan bahwa Unity tidak dapat mengedit file di sana
  4. Pastikan Assets/StreamingAssets/google-services-desktop.json dibuat dan cocok dengan file konfigurasi yang didownload.
    • Jika tidak dibuat secara otomatis dan StreamingAssets/ tidak ada, buat direktori secara manual di direktori Assets.
    • Pastikan bahwa google-services-desktop.json telah dibuat oleh Unity.

Pastikan setiap produk Firebase dan EDM4U diinstal secara eksklusif melalui .unitypackage atau Pengelola Paket Unity

  1. Periksa folder Assets/ dan Pengelola Paket Unity untuk memastikan bahwa Firebase SDK dan EDM4U diinstal melalui metode pertama atau metode kedua secara eksklusif.
  2. Beberapa plugin yang dikembangkan Google, seperti Google Play, dan plugin pihak ketiga mungkin bergantung pada EDM4U. Plugin tersebut dapat menyertakan EDM4U dalam paket .unitypackage atau Pengelola Paket Unity (UPM). Pastikan hanya ada satu salinan EDM4U di project Anda. Jika ada paket UPM yang bergantung pada EDM4U, sebaiknya simpan hanya versi UPM EDM4U, yang dapat ditemukan di halaman Arsip Google APIs for Unity.

Pastikan setiap produk Firebase di project Anda menggunakan versi yang sama.

  1. Jika Firebase SDK diinstal melalui .unitypackage, pastikan bahwa semua library FirebaseCppApp di Assets/Firebase/Plugins/x86_64/ menggunakan versi yang sama.
  2. Jika Firebase SDK diinstal melalui Pengelola Paket Unity (UPM), buka Windows > Package Manager, telusuri "Firebase", dan pastikan semua paket Firebase menggunakan versi yang sama.
  3. Jika project Anda berisi versi Firebase SDK yang berbeda, sebaiknya hapus semua Firebase SDK sebelum menginstalnya kembali dengan versi yang sama. Cara terbaiknya adalah dengan menghapus setiap paket Firebase melalui metode yang disebutkan di bagian migrasi ini.

Error build resolver dan perangkat target

Jika game Anda berfungsi di editor (dikonfigurasi untuk target build yang sesuai dengan pilihan Anda), selanjutnya pastikan External Dependency Manager for Unity (EDM4U) dikonfigurasi dan berfungsi dengan benar.

Repositori GitHub EDM4U berisi panduan langkah demi langkah untuk bagian proses ini yang harus Anda tinjau dan ikuti sebelum melanjutkan.

Masalah dan minifikasi 'Dex Tunggal' (Wajib jika menggunakan Cloud Firestore)

Saat membangun 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 .dex digunakan untuk menyimpan sekumpulan definisi class dan data tambahan yang terkait untuk aplikasi Android. File dex tunggal dibatasi sehingga hanya dapat merujuk 65.536 metode; build akan gagal jika jumlah total metode dari semua library Android di project Anda melebihi batas ini.

Dua langkah berikut dapat diterapkan secara berurutan; hanya aktifkan multidex jika minifikasi tidak menyelesaikan masalah.

Mengaktifkan Minifikasi

Unity memperkenalkan Minifikasi pada versi 2017.2 untuk menghapus kode yang tidak digunakan, 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.

Mengaktifkan Multidex

Jika jumlah metode yang dirujuk masih melebihi batas setelah mengaktifkan minifikasi, opsi lainnya adalah mengaktifkan multidex. Ada beberapa cara untuk melakukan ini di Unity:

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

Detail selengkapnya dapat ditemukan di panduan pengguna multidex.

Memahami dan memperbaiki error runtime perangkat target

Jika game Anda berfungsi di editor dan dapat dibangun untuk serta diinstal ke perangkat target, tetapi Anda mengalami error runtime, periksa dan investigasi log yang dibuat di perangkat.

Bagian ini menjelaskan cara menyelidiki log Anda untuk menemukan kemungkinan error, dan satu error yang hanya terjadi saat runtime pada perangkat atau simulator.

Android

Simulator

  • Periksa log yang ditampilkan di konsol Emulator atau lihat jendela Logcat.

Perangkat

Pelajari adb dan adb logcat serta cara menggunakannya.

  • Meski Anda dapat menggunakan berbagai alat di lingkungan command line untuk memfilter output, pertimbangkan opsi logcat.
  • Cara mudah untuk memulai sesi ADB dari awal adalah:

    adb logcat -c && adb logcat <OPTIONS>

    di mana OPTIONS adalah tanda yang Anda sertakan pada command line untuk memfilter output.

Menggunakan Logcat melalui Android Studio

Saat menggunakan Logcat melalui Android Studio, alat penelusuran tambahan tersedia untuk menyederhanakan proses pembuatan penelusuran produktif.

iOS

Memeriksa Log

Jika menjalankan perangkat fisik, pasang ke komputer Anda. Periksa lldb di Xcode.

Masalah Swift

Jika Anda menemukan log error yang menyebutkan swift, lihat bagian External Dependency Manager for Unity terkait log tersebut.

Langkah Berikutnya

Jika game Anda masih memiliki masalah kompilasi, build, atau masalah saat dimainkan terkait Firebase, periksa halaman masalah Firebase SDK untuk Unity dan pertimbangkan untuk mengajukan masalah baru. Selain itu, lihat halaman dukungan Firebase untuk mempelajari opsi tambahan.