หน้านี้มีเคล็ดลับและการแก้ปัญหาสำหรับปัญหาที่เฉพาะเจาะจงกับ 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' โดยระบบจะแจ้งว่า "Failed to transform" ไลบรารี 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 ขึ้นไปเท่านั้น
เพิ่ม
export LANG=en_US.UTF-8ใน~/.bash_profileหรือไฟล์ที่เทียบเท่า
วิธีอัปเดตเวอร์ชันของ Firebase Unity SDK
กระบวนการอัปเดตเวอร์ชันของ Firebase Unity SDK จะขึ้นอยู่กับวิธีนำเข้า SDK ในตอนแรก โดยมีวิธีการนำเข้า 2 วิธีดังนี้
- การนำเข้าไฟล์
.unitypackageในไดเรกทอรีAssets/ของโปรเจ็กต์ - การนำเข้าโดยใช้
Unity Package Manager
(UPM)
- นี่เป็นวิธีที่แนะนำในการจัดการแพ็กเกจใน Unity 2018.4 ขึ้นไป
- ใช้วิธีนี้เพื่อให้การอัปเดตเวอร์ชันในอนาคตง่ายขึ้นและไดเรกทอรี
Assets/เป็นระเบียบมากขึ้น
ในโปรเจ็กต์ Unity คุณควรใช้วิธีนำเข้าเพียงวิธีเดียวเพื่อจัดการแพ็กเกจ Firebase ทั้งหมด วิธีการด้านล่างนี้ใช้ได้ไม่เพียงแต่ในการอัปเดตเวอร์ชันของแพ็กเกจแต่ละรายการเท่านั้น แต่ยังใช้ในการย้ายการจัดการแพ็กเกจไปยัง UPM (วิธีการนำเข้าที่แนะนำ) หากจำเป็น