การแก้ปัญหา & คำถามที่พบบ่อยเกี่ยวกับ 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 ในการตั้งค่าโปรแกรมเล่น > Android > การตั้งค่าการเผยแพร่ > การทำให้ไฟล์เล็กลง
  • ระบุเครื่องมือ 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 จะขึ้นอยู่กับวิธีนําเข้าครั้งแรก วิธีการนําเข้าอีก 2 วิธีมีดังนี้

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

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