Trang này cung cấp các mẹo và cách khắc phục sự cố cho các vấn đề liên quan đến Unity mà bạn có thể gặp phải khi sử dụng Firebase.
Bạn gặp phải vấn đề khác hoặc không thấy vấn đề của mình được nêu bên dưới? Hãy nhớ xem Câu hỏi thường gặp chính về Firebase để biết thêm câu hỏi thường gặp về Firebase hoặc sản phẩm cụ thể.
Vấn đề với dex đơn khi tạo ứng dụng Android
Trong khi tạo ứng dụng Android, bạn có thể gặp lỗi bản dựng liên quan đến việc có một tệp dex duy nhất. Thông báo lỗi có dạng 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.
Các tệp Dalvik Executable (.dex) được dùng để lưu giữ một tập hợp các định nghĩa lớp và dữ liệu bổ trợ liên quan cho các ứng dụng Android (.apk). Một tệp dex chỉ được tham chiếu đến tối đa 65.536 phương thức. Bản dựng sẽ không thành công nếu tổng số phương thức từ tất cả thư viện Android trong dự án của bạn vượt quá giới hạn này.
Unity đã ra mắt tính năng Rút gọn trong phiên bản 2017.2. Tính năng này sử dụng Proguard (hoặc các công cụ khác trong một số phiên bản Unity) để loại bỏ mã không dùng đến, nhờ đó có thể giảm tổng số phương thức được tham chiếu trong một tệp dex. Bạn có thể tìm thấy tuỳ chọn này trong phần Player Settings > Android > Publishing Settings > Minify (Cài đặt trình phát > Android > Cài đặt phát hành > Thu nhỏ). Các tuỳ chọn có thể khác nhau tuỳ theo phiên bản Unity, vì vậy, hãy tham khảo tài liệu chính thức của Unity.
Nếu số lượng phương thức được tham chiếu vẫn vượt quá giới hạn, thì một lựa chọn khác là bật multidex. Có nhiều cách để thực hiện việc này trong Unity:
- Nếu
Custom Gradle TemplatetrongPlayer Settingsđược bật, hãy sửa đổimainTemplate.gradle. - Nếu bạn sử dụng Android Studio để tạo dự án đã xuất, hãy sửa đổi tệp
build.gradlecấp mô-đun.
Bạn có thể tìm thêm thông tin chi tiết trong hướng dẫn sử dụng multidex.
Vấn đề khi xây dựng cho Android có minSdkVersion 23
Khi tạo bản dựng cho Android, nếu bạn nhắm đến minSdkVersion 23, thì có thể không thực hiện được bước tạo tệp dex, thường là trong tác vụ Gradle ":launcher:mergeExtDexDebug", trong đó sẽ cho biết "Failed to transform" (Không chuyển đổi được) một trong các thư viện Android. Điều này là do lỗi trong công cụ dex mặc định trong SDK Android mà hầu hết các trình chỉnh sửa Unity sử dụng và có thể được khắc phục theo một số cách:
- Đặt
minSdkVersionthành 24. - Bật tính năng rút gọn Android trong phần Player Settings > Android > Publishing Settings > Minify (Cài đặt trình phát > Android > Cài đặt phát hành > Rút gọn)
- Chỉ định một phiên bản khác của công cụ dex bằng cách thêm đoạn mã này vào tệp
settingsTemplate.gradle:
buildscript {
repositories {
mavenLocal()
maven { url 'https://maven.google.com' }
mavenCentral()
}
dependencies {
classpath 'com.android.tools:r8:8.3.37'
}
}
Vấn đề khi tạo bản dựng cho iOS bằng CocoaPods
Khi tạo bản dựng cho iOS, quá trình cài đặt Cocoapod có thể không thành công và xảy ra lỗi về ngôn ngữ hoặc mã hoá UTF-8. Hiện có một số cách để giải quyết vấn đề này.
Trong cửa sổ dòng lệnh, hãy chạy trực tiếp
pod installrồi mở tệp xcworkspace thu được.Hạ cấp phiên bản Cocoapods xuống 1.10.2. Vấn đề này chỉ tồn tại trong phiên bản 1.11 trở lên.
Trong
~/.bash_profilehoặc tệp tương đương, hãy thêmexport LANG=en_US.UTF-8
Cách cập nhật phiên bản SDK của Firebase cho Unity
Quy trình cập nhật phiên bản SDK của Firebase cho Unity phụ thuộc vào cách nhập ban đầu. Sau đây là hai phương thức nhập thay thế:
- Nhập tệp
.unitypackagetrong thư mụcAssets/của dự án - Nhập bằng
Trình quản lý gói Unity
(UPM)
- Đây là cách nên dùng để quản lý các gói trong Unity 2018.4 trở lên.
- Hãy sử dụng phương thức này để giúp việc cập nhật phiên bản trong tương lai trở nên dễ dàng hơn và thư mục
Assets/của bạn gọn gàng hơn.
Trong dự án Unity, bạn chỉ nên sử dụng một phương thức nhập để quản lý tất cả các gói Firebase. Bạn có thể làm theo hướng dẫn bên dưới để không chỉ cập nhật phiên bản của từng gói mà còn di chuyển hoạt động quản lý gói sang UPM (phương thức nhập được đề xuất) nếu cần.