หน้านี้มีเคล็ดลับและการแก้ปัญหาเฉพาะสำหรับ 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 (วิธีการนําเข้าที่แนะนํา) ได้หากจําเป็น