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.
Bạn gặp phải những vấn đề khác hoặc không thấy vấn đề của mình được nêu dưới đây? Hãy nhớ xem các 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 nói chung hoặc về từng sản phẩm.
Vấn đề về tệp 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.
Tệp có thể thực thi Dalvik (.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 của các lớp đó cho các ứng dụng Android (.apk
). Một tệp dex chỉ được phép tham chiếu đến 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 > Rút gọn). Các tuỳ chọn có thể khác nhau giữa các 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, bạn có thể bật multidex
. Có nhiều cách để thực hiện việc này trong Unity:
- Nếu
Custom Gradle Template
trongPlayer Settings
được bật, hãy sửa đổimainTemplate.gradle
. - Nếu bạn sử dụng Android Studio để tạo bản dựng dự án đã xuất, hãy sửa đổi tệp
build.gradle
ở cấp mô-đun.
Bạn có thể xem thêm thông tin chi tiết trong hướng dẫn sử dụng multidex.
Vấn đề khi tạo bản dựng cho Android với minSdkVersion 23
Khi tạo bản dựng cho Android, nếu bạn nhắm đến minSdkVersion
23, thì bản dựng có thể không thành công ở bước tạo tệp dex, thường là trong tác vụ Gradle ":launcher:mergeExtDexDebug", trong đó sẽ hiển thị thông báo "Không thể chuyển đổi" một trong các thư viện Android. Điều này xảy ra do một 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 đều sử dụng. Bạn có thể khắc phục vấn đề này theo một số cách:
- Đặt
minSdkVersion
thành 24. - Bật tính năng rút gọn cho Android trong phần Player Settings (Cài đặt trình phát) > Android > Publishing Settings (Cài đặt phát hành) > Minify (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 phiên bản 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 ứng dụng cho iOS, quá trình cài đặt Cocoapod có thể không thành công do 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.
Từ dòng lệnh, hãy chạy trực tiếp
pod install
và mở tệp xcworkspace thu được.Hạ cấp phiên bản Cocoapods xuống 1.10.2. Vấn đề này chỉ xảy ra trong phiên bản 1.11 trở lên.
Trong
~/.bash_profile
hoặc tương đương, hãy thêmexport LANG=en_US.UTF-8
Cách cập nhật phiên bản SDK Firebase cho Unity
Quy trình cập nhật phiên bản SDK Firebase cho Unity phụ thuộc vào cách bạn nhập các phiên bản đó ban đầu. Sau đây là hai phương thức nhập thay thế:
- Nhập tệp
.unitypackage
trong 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 sạch sẽ 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. Hướng dẫn bên dưới không chỉ giúp bạn cập nhật phiên bản của từng gói mà còn giúp bạn di chuyển tính năng quản lý gói sang UPM (phương thức nhập được đề xuất) nếu cần.