大多數 Android 手機都搭載 ARM 晶片組。不過,許多 ChromeOS 裝置都使用 x86 晶片。對於以 Kotlin 或 Java 編寫的應用程式,這項差異並不重要。不過,如果是以 Android NDK 編寫的應用程式 (包括使用遊戲引擎建立的應用程式),裝置中的晶片組可能就是重要考量。
理想情況下,所有含有 Android NDK 程式碼的應用程式都應隨附四個主要的 Android ABI (應用程式二進位介面):armeabi-v7a (arm32)、arm64-v8a (arm64)、x86 (x86_32) 和 x86_64。
這樣可確保每部裝置都能發揮最佳效能,並盡量節省電量。舉例來說,以 CMake 為基礎的 build.gradle 檔案可能包含:
externalNativeBuild {
cmake {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
}APK 尺寸
單一 APK 中的每個 ABI 都會增加其大小。這可能會影響使用者的磁碟用量、應用程式下載大小,以及可能超出 Play 商店的大小限制。如要避免發生這種情況,最好的方法是使用 Android App Bundle。您可以使用 Android App Bundle,在 Android Studio 中輕鬆組合所有四個 ABI,但不會增加使用者的下載大小。此外,您也可以輕鬆運用 Dynamic Delivery,讓使用者只在需要時下載大型遊戲內容。如果無法使用 App Bundle,可以改用舊版多重 APK 達到類似效果。
32 位元與 64 位元
所有 Android 應用程式都必須提供 64 位元建構版本。ARM 和 x86 裝置都可以選擇是否要提供 32 位元版本。詳情請參閱「Android 64 位元說明文件」。
雖然只提供 64 位元建構版本可減少所需的建構目標數量和測試範圍,但也會限制可執行遊戲的裝置類型。舉例來說,許多舊款 Chromebook 雖然搭載 64 位元 CPU,但受限於其他硬體,只能執行 32 位元 Android 應用程式。為確保應用程式能在這些裝置上執行,請同時支援 32 位元和 64 位元。
注意:所有新應用程式和更新版應用程式都必須包含 64 位元版本。Play 商店已停止向可處理 64 位元架構的裝置提供 32 位元應用程式。許多 Chromebook 支援 64 位元,因此建議您盡快更新應用程式,加入 64 位元版本,確保 ChromeOS 上的應用程式使用者能繼續使用。
ARM 轉譯
x86 Chromebook 會盡可能翻譯 ARM 程式碼。不過,翻譯功能會降低效能並增加電池用量。即使是簡單的遊戲,也應考慮提供 x86 版本,以提供最佳使用者體驗。如果無法提供 x86 版本,請注意,部分 x86 Chromebook 無法轉譯 arm64 程式碼。在這種情況下,您應在建構作業中同時納入 arm32 和 arm64 ABI。
雖然所有支援 Android 的 Chromebook 都能翻譯 arm32 程式碼,但並非所有 Chromebook 都能翻譯 arm64 程式碼。也就是說,如果遊戲只有 arm64 建構目標,就無法在大量 ChromeOS 裝置上使用。如果無法發布 x86 二進位檔,請在建構版本中同時加入 arm32 和 arm64 ABI。
| 內含的 ABI | 支援 ChromeOS |
|---|---|
arm64 | 不佳 |
arm32/arm64 | 確定 (含翻譯) |
arm32/arm64/x86_32/x86_64 | 最佳 |