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