Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

การแก้ไขปัญหาและคำถามที่พบบ่อยสำหรับ Unity และ Firebase

หน้านี้นำเสนอเคล็ดลับและการแก้ปัญหาเฉพาะของ Unity ที่คุณอาจพบเมื่อใช้ Firebase

มีความท้าทายอื่นๆ หรือไม่เห็นปัญหาของคุณด้านล่างหรือไม่ ตรวจสอบให้แน่ใจว่าได้ตรวจสอบ หลัก Firebase คำถามที่พบบ่อย มากแพน Firebase หรือผลิตภัณฑ์เฉพาะคำถามที่พบบ่อย

ความเข้ากันได้ของ .NET เมื่อใช้ Unity 2017.x และใหม่กว่า

Firebase รองรับ .NET 4.x เป็นตัวเลือกรุ่นทดลองใน Unity 2017 และใหม่กว่า ปลั๊กอิน Firebase ใช้องค์ประกอบของ การแยกวิเคราะห์ SDK เพื่อให้บางชั้นเรียน .NET 4.x รุ่นก่อนหน้า .NET

ดังนั้น Firebase สามัคคี SDK เวอร์ชั่น 5.4.0 และต่อมาให้ปลั๊กอินที่เข้ากันได้กับทั้ง .NET 3.x หรือ .NET 4.x ใน dotnet3 และ dotnet4 ไดเรกทอรีของ Firebase สามัคคี SDK

หากคุณนำเข้าปลั๊กอิน Firebase ที่เข้ากันไม่ได้กับเวอร์ชัน .NET ที่เปิดใช้งานในโครงการของคุณ คุณจะเห็นข้อผิดพลาดในการคอมไพล์จากบางประเภทใน .NET framework ที่ Parse SDK นำไปใช้

เพื่อแก้ไขข้อผิดพลาดในการคอมไพล์ หากคุณใช้ .NET 3.x:

  1. ลบหรือปิดใช้งาน DLL ต่อไปนี้สำหรับทุกแพลตฟอร์ม:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. เปิดใช้งาน DLL ต่อไปนี้สำหรับทุกแพลตฟอร์ม:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll

เพื่อแก้ไขข้อผิดพลาดในการคอมไพล์ หากคุณใช้ .NET 4.x:

  1. ลบหรือปิดใช้งาน DLL ต่อไปนี้สำหรับทุกแพลตฟอร์ม:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. เปิดใช้งาน DLL ต่อไปนี้สำหรับทุกแพลตฟอร์ม:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll

หากคุณนำเข้าปลั๊กอิน Firebase อื่น:

  • ในโครงการความสามัคคีของคุณนำทางไปยังสินทรัพย์> เล่นบริการ Resolver> เวอร์ชัน Handler> Update เพื่อเปิดใช้งานที่กำลังถูกต้องสำหรับโครงการของคุณ

Unity 2017.1 การรวบรวม IL2CPP ในโปรเจ็กต์ .NET 4.x

Firebase รองรับ .NET 4.x เป็นตัวเลือกรุ่นทดลองใน Unity 2017 และใหม่กว่า ปลั๊กอิน Firebase ใช้องค์ประกอบของ การแยกวิเคราะห์ SDK เพื่อให้บางชั้นเรียน .NET 4.x รุ่นก่อนหน้า .NET

ดังนั้น Firebase สามัคคี SDK เวอร์ชั่น 5.4.0 และต่อมาให้กำลังประเภทการส่งต่อซึ่งส่งประเภทแยกวิเคราะห์ (ตัวอย่างเช่นการดำเนินการแยกวิเคราะห์ของ System.Threading.Tasks.Task ) เพื่อกรอบ NET ขออภัย IL2CPP (ทรานสปิลเลอร์ที่แปลง C# เป็น C++) ที่จัดส่งใน Unity 2017.1.x ไม่ได้ประมวลผล DLL การส่งต่อประเภทประเภทอย่างถูกต้อง ซึ่งส่งผลให้เกิดข้อผิดพลาดในการสร้างที่คล้ายกับต่อไปนี้:

Fatal error in Unity CIL Linker Mono.Cecil.ResolutionException: Failed to
resolve System.Threading.Tasks.TaskCompletionSource`1<T>

ขณะนี้ยังไม่มีวิธีแก้ปัญหาสำหรับข้อผิดพลาดในการสร้าง .NET 4.x IL2CPP ใน Unity 2017.1 ดังนั้นคุณต้องอัปเกรดเป็น Unity 2017.2 หรือใหม่กว่าเพื่อใช้ .NET 4.x ในโปรเจ็กต์ที่คอมไพล์ด้วย IL2CPP

ความสามัคคี 2017.2 เครือข่าย

ฐานข้อมูลเรียลไทม์ของ Firebase สร้างการเชื่อมต่อเครือข่าย TLS โดยใช้สแต็กเครือข่าย .NET ฟังก์ชัน TLS ใช้งานไม่ได้ใน Unity 2017.2 เมื่อใช้ .NET 4.6 ทำให้ปลั๊กอิน Realtime Database ล้มเหลวในตัวแก้ไขและบนเดสก์ท็อป

ไม่มีวิธีแก้ปัญหาสำหรับปัญหานี้ ดังนั้นคุณต้องใช้ Unity เวอร์ชันอื่น เช่น เวอร์ชัน 2017.1 หรือ 2017.3

ไม่มีไฟล์กำหนดค่า Firebase Android ใน Unity 2020

เพื่อที่จะให้การสนับสนุนของรุ่นความสามัคคีที่ไม่ได้มีความสามารถในการปรับแต่ง Gradle สร้างเครื่องมือแก้ไข Firebase สร้าง Assets/Plugins/Android/Firebase/res/values/google-services.xml เป็นทรัพยากร Android ที่จะได้รับการบรรจุเป็น บิลด์ Android เพื่อให้ Firebase SDK สามารถใช้เพื่อเริ่มต้นอินสแตนซ์ FirebaseApp เริ่มต้นได้

ในความเป็นเอกภาพในปี 2020 ทรัพยากรทั้งหมดของ Android จะต้องอยู่ในไดเรกทอรีกับ .androidlib ต่อท้าย หากโครงการของคุณใช้ Firebase SDK ที่สร้าง Assets/Plugins/Android/Firebase ไดเรกทอรีเปลี่ยนชื่อให้ Assets/Plugins/Android/Firebase.androidlib ให้แน่ใจว่ามันมี AndroidManifest.xml , project.properties และ res/values/google-services.xml

ปัญหาเกี่ยวกับ dex เดียวขณะสร้างแอป Android

ขณะสร้างแอป Android คุณอาจพบความล้มเหลวในการสร้างที่เกี่ยวข้องกับการมีไฟล์ dex ไฟล์เดียว ข้อความแสดงข้อผิดพลาดจะคล้ายกับข้อความต่อไปนี้ หากโปรเจ็กต์ของคุณได้รับการกำหนดค่าให้ใช้ระบบ Gradle build

Cannot fit requested classes in a single dex file.

Dalvik ปฏิบัติการ ( .dex ) ไฟล์จะถูกใช้ในการเก็บชุดของคำจำกัดความของการเรียนและข้อมูลเสริมที่เกี่ยวข้องของพวกเขาสำหรับการใช้งาน Android (ก .apk ) ไฟล์ dex ไฟล์เดียวถูกจำกัดให้อ้างอิงถึง 65,536 เมธอด บิลด์จะล้มเหลวหากจำนวนเมธอดทั้งหมดจากไลบรารี Android ทั้งหมดในโปรเจ็กต์ของคุณเกินขีดจำกัดนี้

ความสามัคคีแนะนำ minification ใน 2017.2 ซึ่งใช้ Proguard (หรือเครื่องมืออื่น ๆ ในบางรุ่นของความสามัคคี) เพื่อดึงออกจากรหัสที่ไม่ได้ใช้ซึ่งสามารถลดจำนวนรวมของวิธีการอ้างอิงในไฟล์ Dex เดียว ตัวเลือกที่สามารถพบได้ในการตั้งค่าผู้เล่น> Android> การตั้งค่าสิ่งพิมพ์> ลดขนาด ตัวเลือกอาจแตกต่างกันในเวอร์ชันต่างๆ ของ Unity ดังนั้นโปรดอ้างอิงเอกสารอย่างเป็นทางการของ Unity

หากจำนวนของวิธีการอ้างอิงยังคงเกินขีด จำกัด อีกทางเลือกหนึ่งที่จะช่วยให้ multidex มีหลายวิธีในการบรรลุเป้าหมายนี้ใน Unity:

  • หาก Custom Gradle Template ภายใต้การ Player Settings เปิดใช้งานปรับเปลี่ยน mainTemplate.gradle
  • หากคุณใช้ Android สตูดิโอที่จะสร้างโครงการที่ส่งออกปรับเปลี่ยนระดับโมดูล build.gradle ไฟล์

รายละเอียดเพิ่มเติมสามารถพบได้ใน คู่มือผู้ใช้ multidex

รองรับ Java 8 และ desugaring สำหรับ Android บิลด์ใน Unity 2017 และ Unity 2018 (Firebase Unity SDK 8.0.0 ขึ้นไป)

ในพฤษภาคม 2021 (Firebase BoM v28.0.0) Firebase desugaring พิการสำหรับห้องสมุดทั้งหมดของ Android (ดู เอกสารเผยแพร่ ) เมื่อสร้างแอป Android ด้วย Firebase Unity SDK (8.0.0 ขึ้นไป) คุณอาจเห็นข้อผิดพลาดในการสร้างต่อไปนี้:

> Error while dexing.
 The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle

การเปลี่ยนแปลงนี้มีผลกับ Android บิวด์ใน Unity 2017 และ Unity 2018 เท่านั้น รุ่นใหม่ของความสามัคคีเพิ่ม compileOptions บล็อกโดยเริ่มต้นในการสร้างไฟล์ gradle ในการแก้ไขข้อผิดพลาดของบิลด์นี้ใน Unity 2017 และ Unity 2018 ให้เลือกทำอย่างใดอย่างหนึ่งต่อไปนี้:

  • เพิ่ม compileOptions บล็อกแม่แบบ gradle ของคุณ:

    1. ใช้ Gradle เป็นสร้างระบบ
    2. เปิดใช้งาน Custom Gradle Template ภายใต้ Player Settings
    3. เพิ่มบรรทัดต่อไปนี้เพื่อ mainTemplate.gradle (หรือระดับโมดูล build.gradle ถ้าการส่งออกโครงการสำหรับ Android สตูดิโอ):

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • หรือเพิ่ม minSdkVersion สำหรับโครงการ Android ของคุณเป็น 26 หรือสูงกว่า

ดูเพิ่มเติม Android การแก้ไขปัญหา - desugaring สร้างความล้มเหลว