หน้านี้มีเคล็ดลับและการแก้ปัญหาเกี่ยวกับปัญหาเฉพาะของ 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 ในPlayer Settings > Android > Publishing Settings > Minify
- ระบุเครื่องมือ 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 จะขึ้นอยู่กับวิธีนำเข้า SDK ในตอนแรก วิธีการนำเข้าทางเลือก 2 วิธีมีดังนี้
- การนำเข้าไฟล์
.unitypackageในไดเรกทอรีAssets/ของโปรเจ็กต์ - การนำเข้าโดยใช้
Unity Package Manager
(UPM)
- นี่คือวิธีที่แนะนำในการจัดการแพ็กเกจใน Unity 2018.4 ขึ้นไป
- ใช้วิธีนี้เพื่อให้การอัปเดตเวอร์ชันในอนาคตง่ายขึ้นและ
Assets/ไดเรกทอรีสะอาดขึ้น
ในโปรเจ็กต์ Unity คุณควรใช้วิธีการนำเข้าเพียงวิธีเดียวเพื่อจัดการแพ็กเกจ Firebase ทั้งหมด วิธีการด้านล่างนี้ใช้ได้ไม่เพียงแค่อัปเดตเวอร์ชันของแพ็กเกจแต่ละรายการเท่านั้น แต่ยังใช้เพื่อย้ายข้อมูลการจัดการแพ็กเกจไปยัง UPM (วิธีการนำเข้าที่แนะนำ) ได้ด้วยหากจำเป็น