Những điều cần cân nhắc khi xuất bản

Hầu hết điện thoại Android đều có chipset ARM. Tuy nhiên, nhiều thiết bị ChromeOS sử dụng chip x86. Sự khác biệt này không quan trọng đối với các ứng dụng được viết bằng Kotlin hoặc Java. Tuy nhiên, đối với các ứng dụng được viết bằng Android NDK, kể cả những ứng dụng được tạo bằng công cụ trò chơi, thì chipset trong thiết bị có thể là một vấn đề quan trọng.

Lý tưởng nhất là tất cả ứng dụng có mã Android NDK đều phải đi kèm với cả 4 ABI (Giao diện nhị phân ứng dụng) chính của Android: armeabi-v7a (arm32), arm64-v8a (arm64), x86 (x86_32) và x86_64.

Điều này giúp mang lại hiệu suất tốt nhất và mức tiêu thụ pin thấp nhất cho mỗi thiết bị. Ví dụ: tệp build.gradle dựa trên cmake có thể chứa:

externalNativeBuild {
  cmake {
    abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
  }
}

Kích thước APK

Mỗi ABI trong một APK nguyên khối sẽ làm tăng kích thước của APK đó. Điều này có thể ảnh hưởng đến mức sử dụng ổ đĩa của người dùng, kích thước tải xuống của ứng dụng và có thể vượt quá giới hạn kích thước của Cửa hàng Play. Cách tốt nhất để tránh điều này là sử dụng Android App Bundle. Android App Bundle giúp bạn dễ dàng nhóm cả 4 ABI trong Android Studio mà không làm tăng kích thước tải xuống cho người dùng. Các gói này cũng giúp bạn dễ dàng tận dụng tính năng Dynamic Delivery, cho phép người dùng chỉ tải nội dung trò chơi có dung lượng lớn xuống khi có yêu cầu. Nếu không thể sử dụng App Bundle, bạn có thể dùng nhiều APK cũ để có hành vi tương tự.

32 so với 64 bit

Tất cả ứng dụng Android đều phải cung cấp phiên bản bản dựng 64 bit. Bản dựng 32 bit là không bắt buộc đối với cả thiết bị ARM và x86. Hãy xem tài liệu về Android 64 bit để biết thêm thông tin.

Mặc dù chỉ cung cấp bản dựng 64 bit sẽ giảm số lượng mục tiêu bản dựng cần thiết và bề mặt kiểm thử, nhưng điều này cũng hạn chế các loại thiết bị có thể chạy trò chơi của bạn. Ví dụ: do các hạn chế khác về phần cứng, nhiều Chromebook cũ chỉ có thể chạy các ứng dụng Android 32 bit, mặc dù có CPU 64 bit. Để đảm bảo ứng dụng của bạn có thể chạy trên các thiết bị này, hãy thêm cả tính năng hỗ trợ 32 bit và 64 bit.

Lưu ý: Tất cả ứng dụng mới và ứng dụng được cập nhật đều phải có phiên bản ứng dụng 64 bit. Cửa hàng Play đã ngừng phân phối các ứng dụng 32 bit cho những thiết bị có khả năng xử lý 64 bit. Nhiều Chromebook có hỗ trợ phiên bản 64 bit và bạn nên cập nhật ứng dụng của mình càng sớm càng tốt để có phiên bản 64 bit, nhằm đảm bảo người dùng ứng dụng của bạn trên ChromeOS có trải nghiệm liền mạch.

Bản dịch tiếng ARM

Chromebook x86 cố gắng dịch mã ARM bất cứ khi nào có thể. Tuy nhiên, tính năng dịch sẽ làm chậm hiệu suất và tăng mức sử dụng pin. Ngay cả những trò chơi đơn giản cũng nên cân nhắc cung cấp bản dựng x86 để mang lại trải nghiệm tốt nhất cho người dùng. Nếu bạn không thể cung cấp bản dựng x86, hãy lưu ý rằng một số Chromebook x86 không thể dịch mã arm64. Trong trường hợp này, bạn nên thêm cả ABI arm32 và arm64 vào bản dựng.

Mặc dù tính năng dịch arm32 có trên tất cả Chromebook có thể chạy Android, nhưng không phải Chromebook nào cũng có thể dịch mã arm64. Điều này có nghĩa là nếu trò chơi của bạn chỉ có các mục tiêu bản dựng arm64, thì trò chơi đó sẽ không có trên một số lượng lớn thiết bị ChromeOS. Nếu không thể gửi các tệp nhị phân x86, hãy thêm cả ABI arm32 và arm64 vào bản dựng.

                                                                               
ABI đi kèmHỗ trợ ChromeOS

arm64

Kém

arm32/arm64

OK (có bản dịch)

arm32/arm64/x86_32/x86_64

Tốt nhất