การแก้ปัญหา & คำถามที่พบบ่อยเกี่ยวกับ Unity และ Firebase

หน้านี้มีเคล็ดลับและการแก้ปัญหาเกี่ยวกับปัญหาเฉพาะของ Unity ที่คุณอาจพบเมื่อใช้ Firebase

หากพบความท้าทายอื่นๆ หรือไม่เห็นปัญหาของคุณที่ระบุไว้ด้านล่าง อย่าลืมดูคำถามที่พบบ่อยหลักของ Firebase เพื่อดูคำถามที่พบบ่อยเพิ่มเติมเกี่ยวกับ Firebase หรือผลิตภัณฑ์โดยเฉพาะ

ปัญหาเกี่ยวกับ Dex เดียวขณะสร้างแอป Android

ขณะสร้างแอป Android คุณอาจพบว่าการสร้างล้มเหลวเนื่องจากมี ไฟล์ DEX ไฟล์เดียว ข้อความแสดงข้อผิดพลาดจะคล้ายกับข้อความต่อไปนี้ หากโปรเจ็กต์ได้รับการกำหนดค่าให้ใช้ระบบบิลด์ Gradle

Cannot fit requested classes in a single dex file.

ไฟล์ Dalvik Executable (.dex) ใช้เพื่อเก็บชุดคำจำกัดความของคลาส และข้อมูลเสริมที่เกี่ยวข้องสำหรับแอปพลิเคชัน Android (.apk) โดยไฟล์ dex ไฟล์เดียวจะอ้างอิงได้ไม่เกิน 65,536 เมธอด การสร้างจะล้มเหลวหากจำนวนเมธอดทั้งหมดจากไลบรารี Android ทั้งหมดในโปรเจ็กต์เกินขีดจำกัดนี้

Unity เปิดตัวการลดขนาด ในเวอร์ชัน 2017.2 ซึ่งใช้ Proguard (หรือเครื่องมืออื่นๆ ใน Unity บางเวอร์ชัน) เพื่อนำโค้ดที่ไม่ได้ใช้ออก ซึ่งจะช่วยลดจำนวนทั้งหมดของ เมธอดที่อ้างอิงในไฟล์ dex เดียว ตัวเลือกนี้อยู่ใน การตั้งค่าเพลเยอร์ > Android > การตั้งค่าการเผยแพร่ > ลดขนาด ตัวเลือกอาจ แตกต่างกันใน Unity เวอร์ชันต่างๆ โปรดดูเอกสารประกอบอย่างเป็นทางการของ Unity

หากจำนวนเมธอดที่อ้างอิงยังคงเกินขีดจำกัด อีกตัวเลือกหนึ่งคือ การเปิดใช้ multidex คุณทำได้หลายวิธีใน Unity ดังนี้

  • หากเปิดใช้ Custom Gradle Template ในส่วนPlayer Settings ให้แก้ไข mainTemplate.gradle
  • หากใช้ Android Studio เพื่อสร้างโปรเจ็กต์ที่ส่งออก ให้แก้ไขไฟล์ build.gradleระดับโมดูล

ดูรายละเอียดเพิ่มเติมได้ในคู่มือผู้ใช้ Multidex

ปัญหาเมื่อสร้างสำหรับ Android ที่มี minSdkVersion 23

เมื่อสร้างสำหรับ Android หากคุณกำหนดเป้าหมายเป็น minSdkVersion 23 การสร้างอาจล้มเหลวใน ขั้นตอนการสร้าง DEX โดยปกติจะอยู่ในงาน Gradle ':launcher:mergeExtDexDebug' ซึ่ง จะระบุว่า "แปลงไม่สำเร็จ" สำหรับไลบรารี Android รายการใดรายการหนึ่ง ปัญหานี้เกิดจากข้อบกพร่องในเครื่องมือ dex เริ่มต้นใน Android SDK ที่เอดิเตอร์ Unity ส่วนใหญ่ใช้ และแก้ไขได้ด้วยวิธีต่างๆ ดังนี้

  • ตั้งค่า minSdkVersion เป็น 24
  • เปิดการลดขนาด Android ในPlayer Settings > Android > Publishing Settings > Minify
  • ระบุเครื่องมือ dex เวอร์ชันอื่นโดยเพิ่มโค้ดต่อไปนี้ลงในไฟล์ settingsTemplate.gradle
buildscript {
  repositories {
    mavenLocal()
    maven { url 'https://maven.google.com'  }
    mavenCentral()
  }
  dependencies {
    classpath 'com.android.tools:r8:8.3.37'
  }
}

ปัญหาเมื่อสร้างสำหรับ iOS ด้วย Cocoapods

เมื่อสร้างสำหรับ iOS การติดตั้ง Cocoapod อาจล้มเหลวโดยมีข้อผิดพลาดเกี่ยวกับ ภาษาหรือการเข้ารหัส UTF-8 ปัจจุบันมีวิธีแก้ปัญหาหลายวิธี

  • จากเทอร์มินัล ให้เรียกใช้ pod install โดยตรง แล้วเปิดไฟล์ xcworkspace ที่ได้

  • ดาวน์เกรดเวอร์ชันของ Cocoapods เป็น 1.10.2 ปัญหานี้เกิดขึ้นในเวอร์ชัน 1.11 ขึ้นไปเท่านั้น

  • ใน ~/.bash_profile หรือเทียบเท่า ให้เพิ่ม export LANG=en_US.UTF-8

วิธีอัปเดตเวอร์ชันของ Firebase Unity SDK

กระบวนการอัปเดตเวอร์ชันของ Firebase Unity SDK จะขึ้นอยู่กับวิธีนำเข้า SDK ในตอนแรก การนำเข้าอีก 2 วิธีมีดังนี้

  • การนำเข้าไฟล์ .unitypackage ในไดเรกทอรี Assets/ ของโปรเจ็กต์
  • การนำเข้าโดยใช้ Unity Package Manager (UPM)
    • นี่คือวิธีที่แนะนำในการจัดการแพ็กเกจใน Unity 2018.4 ขึ้นไป
    • ใช้วิธีนี้เพื่อให้การอัปเดตเวอร์ชันในอนาคตง่ายขึ้นและAssets/ ไดเรกทอรีสะอาดขึ้น

ในโปรเจ็กต์ Unity คุณควรใช้วิธีการนำเข้าเพียงวิธีเดียวเพื่อจัดการแพ็กเกจ Firebase ทั้งหมด วิธีการด้านล่างนี้ใช้ได้ไม่เพียงแค่อัปเดตเวอร์ชันของแพ็กเกจแต่ละรายการ แต่ยังใช้เพื่อย้ายข้อมูลการจัดการแพ็กเกจไปยัง UPM (วิธีการนำเข้าที่แนะนำ) ได้ด้วยหากจำเป็น