การแก้ปัญหา & คำถามที่พบบ่อยเกี่ยวกับ 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 การสร้างอาจไม่สำเร็จในขั้นตอนการทำ Dexing ซึ่งโดยปกติจะอยู่ในงาน 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 (วิธีการนำเข้าที่แนะนำ) ได้ด้วย หากจำเป็น