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