Khắc phục sự cố và câu hỏi thường gặp dành cho Unity và Firebase

Trang này cung cấp các mẹo và cách khắc phục sự cố dành riêng cho Unity mà bạn có thể gặp phải khi sử dụng Firebase.

Có những thách thức khác hoặc không thấy vấn đề của bạn được nêu bên dưới? Hãy chắc chắn để kiểm tra chính căn cứ hỏa lực đáp cho câu hỏi thường gặp pan-căn cứ hỏa lực nhiều hơn hoặc sản phẩm cụ thể.

Khả năng tương thích .NET khi sử dụng Unity 2017.x và mới hơn

Firebase hỗ trợ .NET 4.x dưới dạng tùy chọn xây dựng thử nghiệm trong Unity 2017 trở lên. Plugins căn cứ hỏa lực sử dụng các thành phần của Parse SDK cung cấp một số lớp .NET 4.x trong các phiên bản trước đó của .NET.

Do đó, căn cứ hỏa lực Unity SDK phiên bản 5.4.0 và sau đó cung cấp plug-in tương thích với một trong hai NET 3.x hoặc 4.x NET trong dotnet3dotnet4 thư mục của các firebase Unity SDK.

Nếu bạn nhập một plugin Firebase không tương thích với phiên bản .NET được bật trong dự án của mình, bạn sẽ thấy lỗi biên dịch từ một số loại trong khung .NET được Parse SDK triển khai.

Để giải quyết lỗi biên dịch, nếu bạn đang sử dụng .NET 3.x:

  1. Xóa hoặc tắt các DLL sau cho tất cả các nền tảng:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. Bật các tệp DLL sau cho tất cả các nền tảng:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll

Để giải quyết lỗi biên dịch, nếu bạn đang sử dụng .NET 4.x:

  1. Xóa hoặc tắt các DLL sau cho tất cả các nền tảng:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. Bật các tệp DLL sau cho tất cả các nền tảng:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll

Nếu bạn nhập một plugin Firebase khác:

  • Trong dự án Unity của bạn, điều hướng đến Tài sản> Phát Dịch vụ Resolver> Phiên bản Handler> Update để cho phép các DLL chính xác cho dự án của bạn.

Biên dịch Unity 2017.1 IL2CPP trong các dự án .NET 4.x

Firebase hỗ trợ .NET 4.x dưới dạng tùy chọn xây dựng thử nghiệm trong Unity 2017 trở lên. Plugins căn cứ hỏa lực sử dụng các thành phần của Parse SDK cung cấp một số lớp .NET 4.x trong các phiên bản trước đó của .NET.

Do đó, căn cứ hỏa lực Unity SDK phiên bản 5.4.0 và sau đó cung cấp loại DLL chuyển tiếp mà chuyển loại Parse (ví dụ, màu Tây Nguyên thực hiện System.Threading.Tasks.Task ) để .NET framework. Thật không may, IL2CPP (một trình chuyển đổi chuyển đổi C # sang C ++) được vận chuyển trong Unity 2017.1.x không xử lý chính xác các tệp DLL chuyển tiếp loại dẫn đến lỗi bản dựng giống như sau:

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

Hiện không có giải pháp thay thế nào cho lỗi xây dựng .NET 4.x IL2CPP trong Unity 2017.1, vì vậy bạn phải nâng cấp lên Unity 2017.2 trở lên để sử dụng .NET 4.x trong các dự án được biên dịch với IL2CPP.

Mạng Unity 2017.2

Cơ sở dữ liệu thời gian thực của Firebase tạo kết nối mạng TLS bằng cách sử dụng ngăn xếp mạng .NET. Chức năng TLS bị hỏng trong Unity 2017.2 khi sử dụng .NET 4.6 khiến plugin Cơ sở dữ liệu thời gian thực bị lỗi trong trình chỉnh sửa và trên máy tính để bàn.

Không có giải pháp thay thế cho vấn đề này, vì vậy bạn phải sử dụng phiên bản Unity khác, ví dụ: phiên bản 2017.1 hoặc 2017.3.

Thiếu tệp cấu hình Firebase Android trong Unity 2020

Để các phiên bản hỗ trợ của Unity mà không có khả năng tùy chỉnh xây dựng Gradle, công cụ biên tập căn cứ hỏa lực tạo ra Assets/Plugins/Android/Firebase/res/values/google-services.xml như một nguồn Android để được đóng gói vào một Bản dựng Android để SDK Firebase có thể sử dụng nó để khởi chạy phiên bản FirebaseApp mặc định.

Trong Unity năm 2020, tất cả các nguồn lực Android phải nằm trong thư mục với một .androidlib hậu tố. Nếu dự án của bạn đang sử dụng một SDK căn cứ hỏa lực mà tạo ra một Assets/Plugins/Android/Firebase thư mục, đổi tên nó thành Assets/Plugins/Android/Firebase.androidlib . Hãy chắc chắn rằng nó chứa AndroidManifest.xml , project.propertiesres/values/google-services.xml .

Sự cố với một dex trong khi xây dựng ứng dụng Android

Trong khi xây dựng ứng dụng Android, bạn có thể gặp phải lỗi xây dựng liên quan đến việc có một tệp dex duy nhất. Thông báo lỗi trông tương tự như sau, nếu dự án của bạn được định cấu hình để sử dụng hệ thống xây dựng Gradle.

Cannot fit requested classes in a single dex file.

Dalvik Executable ( .dex ) tập tin được sử dụng để tổ chức một loạt các định nghĩa lớp và dữ liệu phụ trợ liên quan của họ cho các ứng dụng Android ( .apk ). Một tệp dex duy nhất được giới hạn tham chiếu đến 65.536 phương thức. Quá trình xây dựng sẽ không thành công nếu tổng số phương thức từ tất cả các thư viện Android trong dự án của bạn vượt quá giới hạn này.

Unity giới thiệu Thu nhỏ ở 2017,2, trong đó sử dụng Proguard (hoặc các công cụ khác trong một số phiên bản của Unity) để loại bỏ mã không sử dụng, có thể giảm tổng số các phương pháp tham chiếu trong một tập tin dex duy nhất. Các tùy chọn có thể được tìm thấy tại Thủ Cài đặt> Android> Publishing Settings> Rút gọn. Các tùy chọn có thể khác nhau trong các phiên bản Unity khác nhau, vì vậy hãy tham khảo tài liệu Unity chính thức.

Nếu số lượng các phương pháp tham chiếu vẫn vượt quá giới hạn, tùy chọn khác là để cho phép multidex . Có nhiều cách để đạt được điều này trong Unity:

  • Nếu Custom Gradle Template thuộc Player Settings được kích hoạt, sửa đổi mainTemplate.gradle .
  • Nếu bạn sử dụng Android Studio để xây dựng các dự án xuất khẩu, sửa đổi mô-đun cấp build.gradle tập tin.

Thông tin chi tiết có thể được tìm thấy trong các hướng dẫn sử dụng multidex .

Hỗ trợ Java 8 và gỡ lỗi cho các bản dựng Android trong Unity 2017 và Unity 2018 (Firebase Unity SDK 8.0.0 trở lên)

Trong tháng 5 năm 2021 (căn cứ hỏa lực HĐQT v28.0.0), căn cứ hỏa lực tàn tật desugaring cho tất cả các thư viện Android của mình (xem phiên bản ghi ). Khi tạo ứng dụng Android với Firebase Unity SDK (8.0.0 trở lên), bạn có thể gặp lỗi xây dựng sau:

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

Thay đổi này chỉ ảnh hưởng đến các bản dựng Android trong Unity 2017 và Unity 2018. Phiên bản mới hơn của Unity thêm compileOptions khối theo mặc định trong xây dựng file gradle. Để khắc phục lỗi bản dựng này trong Unity 2017 và Unity 2018, hãy thực hiện một trong các bước sau:

  • Thêm một compileOptions khối mẫu gradle của bạn:

    1. Sử dụng Gradle như xây dựng hệ thống.
    2. Kích hoạt tính năng Custom Gradle Template thuộc Player Settings .
    3. Thêm các dòng sau để mainTemplate.gradle (hoặc cấp module build.gradle nếu xuất khẩu một dự án dành cho Android Studio):

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • Ngoài ra, hãy tăng minSdkVersion cho dự án Android của bạn lên 26 hoặc cao hơn.

Xem thêm Android xử lý sự cố - desugaring xây dựng thất bại .

Sự cố khi xây dựng cho iOS với Cocoapods

Khi xây dựng cho iOS, cài đặt Cocoapod có thể không thành công với lỗi về ngôn ngữ địa phương hoặc mã hóa UTF-8. Hiện có một số cách khác nhau để giải quyết vấn đề này.

  • Từ nhà ga, chạy pod install trực tiếp, và mở tập tin kết quả xcworkspace.

  • Hạ cấp phiên bản Cocoapods xuống 1.10.2. Sự cố chỉ tồn tại trong phiên bản 1.11 và mới hơn.

  • Trong bạn ~/.bash_profile hoặc tương đương, add export LANG=en_US.UTF-8